Uml 规范化与多重继承
我必须模拟一种情况,在这种情况下,我希望使用专门化来确保类在某种程度上是规范化的,但是:Uml 规范化与多重继承,uml,multiple-inheritance,Uml,Multiple Inheritance,我必须模拟一种情况,在这种情况下,我希望使用专门化来确保类在某种程度上是规范化的,但是: 面临多重继承问题的风险,特别是从长远来看 需要从中派生符合XML的UML模型(a.o.,只允许一个超类) 简化的情况如下(另见下图):我们有零件,如门、螺栓、车轮等,还有工具,如钻头、梯子和更大的机械。所有这些都可以用于一般流程,如订单、装运等。因此,我希望有一个超类(Powertype,也许?)来表示它们,比如Item 工具和零件都有带有序列号的专用类。因此,我认为SerializedPart和Seria
- 有两个不相交的项“分支”,对序列化专门化的内容几乎没有技术治理
- 项类作为接口,但很少通过序列化专门化使用制造商
- 所有的类都是具体的,但是当试图从模型中派生XML类时,必须解决多个继承问题
我只是不想把
SerializedItem
作为超类。没有任何东西是泛化所指的序列化的东西。事物可以符合序列化协议,这与实现接口(可能称为Serializable
)相同。如果您碰巧处理可序列化的内容而不关心它们的内容,那么您只需要处理serializable
,并且只知道数字
基本上,您应该将SerializedItem
作为一个接口(最终将其重命名为Serializable
),删除向上的泛化,并实现两个水平泛化
这可能不是一个终极比率。但对我来说,这种方法听起来更合理。如果你想要一个(独立于平台的)信息设计模型(精神上类似于概念模型),那么你应该使用多重继承,如果这反映了你的问题领域的概念
根据这种基于模型的工程方法,您的模型是一个非常好的设计模型,可以用作制作(特定于平台的)实现模型的基础,例如Java类模型或XML模式模型
要创建XML模式模型,必须选择特定的映射。特别是,您需要选择一个映射来解析多重继承模式,另请参见。如果选择将项类建模为接口,您将如何将其映射到XML模式?另外,请注意,接口是一个实现建模概念(例如,用于创建Java类模型),而不是一个通用的OO设计概念。在将类模型转换为XSD模型时,我经常看到的是类层次结构正在扁平化。结果是不再有继承,只有具体的类。因为对于使用XSD的开发人员来说,这使事情变得更容易。在我看来,您的一些(或大多数)类也可以设置为抽象类。为什么你认为不能用接口进行聚合?@GerdWagner我在考虑用转换算法将它们压缩到类中,从而得到一个基于类似上面描述XSD结构的UML模型。@GeertBellekens项类确实是抽象的,但我觉得其他的似乎更具体。我们有螺栓,它们是零件,还有更昂贵的零件。我承认,我们正在讨论如何在一个类中将它们组合在一起,但我喜欢管理服务/程序中是否只允许序列化项的功能。关于聚合,这是w.r.t.可能是抽象的SerializedItem类,但它应该包含一个具体的制造商。也许这可以通过一个制造商接口来实现?在当前的图中,所有类都是具体的。没有“更具体”的感觉。类要么是具体的(可以有该类型的实例,而不是子类型),要么是抽象的(只能存在该类型的一个子类型的实例)。在许多情况下,只有最低级别的类是具体的,而所有其他类都是抽象的。如果
SerializedItem
成为接口,则没有理由使用制造商的接口。从接口引用具体类是完全合法的。