UML枚举与类之间的泛化

UML枚举与类之间的泛化,uml,Uml,根据版本2.5中的UML规范,对UML枚举和UML类之间的泛化关系建模是否正确?在第166页中,规范规定“作为分类器的规范,枚举可以参与泛化关系”。然而,将泛化关系放在类和枚举之间是否正确?如果是,应如何解释此类枚举?是,您可以这样做。这两个元素都是分类器,如UML2.5元模型所示 因此,您可以在两者之间使用继承 现在回答你的问题,那意味着什么。老实说,我不知道。枚举基本上就是枚举。在过去,它们只是枚举文字的列表。较新的语言也允许操作/属性。但是当你用一个班级拉皮条的时候,那又有什么意义呢?概

根据版本2.5中的UML规范,对UML枚举和UML类之间的泛化关系建模是否正确?在第166页中,规范规定“作为分类器的规范,枚举可以参与泛化关系”。然而,将泛化关系放在类和枚举之间是否正确?如果是,应如何解释此类枚举?

是,您可以这样做。这两个元素都是分类器,如UML2.5元模型所示

因此,您可以在两者之间使用继承


现在回答你的问题,那意味着什么。老实说,我不知道。枚举基本上就是枚举。在过去,它们只是枚举文字的列表。较新的语言也允许操作/属性。但是当你用一个班级拉皮条的时候,那又有什么意义呢?概括是一个有两条边的刀片。将amphi车定义为从车和船继承的感觉很奇怪。两者都不是,而是新事物。所以在枚举的情况下,它是类似的。

我仍然没有找到正式的约束,但您可以使用泛化定义来找到证据,证明类和枚举之间的泛化是否有意义(或者找到有解释的示例):

泛化是一种更一般的分类关系 分类器和更具体的分类器。每个实例 特定分类器也是通用分类器的一个实例。()

在构造中,枚举的实例也将是类的实例(反之亦然)。现在让我们看看这意味着什么

当一个分类器被广义化时,它的某些成员 概括是遗传的,也就是说,它们的行为就好像它们是遗传的一样 在继承分类器本身中定义。例如,继承的 作为属性的成员可以具有值或值集合 在继承分类器的任何实例中。。。()

事实上,枚举可以像任何分类器一样具有属性,因此为什么它不应该从类继承这些属性呢?进一步研究枚举实例或类实例的含义,我们发现:

数据类型模型类型,其实例仅通过其 价值枚举的每个值对应于它的一个 用户定义的枚举文字。。。枚举文字不能为空 在其存在期间更改,因此枚举上的任何属性 应为只读。()

啊哈,也许我们可以用属性值(类的实例)枚举对象作为枚举的值?枚举的实例是否也是类的实例?这是一个合适的解释吗


我只是想大声说出来,不确定这是否有意义。我只是不排除有一种解释,因为我从未遇到过或无法想象。事实上,看看Java中的枚举——它们隐式地扩展了类
Java.lang.Enum
,它们不能进一步扩展用户定义的类或其他枚举的唯一原因是Java不支持状态()的多重继承。

你似乎是本末倒置。为什么要尝试创建这种泛化?这比制造奇怪的结构和询问它们的意义更重要。谢谢你的回答。为了充分澄清这个问题,这意味着oposit方向(从枚举中泛化类)也被禁止。是吗?托马斯,这些引文都没有提供任何证据。枚举、数据类型和类最终都是分类器,正如您所引用的,它们可以通过泛化来关联。我刚刚检查了规范,很惊讶没有发现任何限制。还有吗?@JimL。分类器和封装分类器实际上是不同的元类型。它在元模型中的呈现方式(对我来说)清楚地表明,泛化是没有意义的。类组成分类器。@Annabelle是的。另一种方法也没有意义。是的,类可以由分类器组成(但它不必考虑,例如内部类),它也是一个专门的分类器。分类器和类之间有两种不同的关联,一种是组合,另一种是泛化。图中缺少后者,因此此答案中提供的参数不成立。