在类图中表示,对于父类的每个实例,子类最多可以有一个实例

问题描述 投票:1回答:1

我有三种解决方案,我想不出哪一种是最好的。

第一:标题中提到的约束不存在。我相信{xor}在那里无效,仅对于导航到其他类的关联无效,对于传入的关联无效。

第二个:0..1我说不能有一个以上的子实例,但是这违背了泛化的规则,所以没有意义吗?

第三个:我有约束条件,在这种情况下,我认为它更强大,尽管仍然不是设计使然(submittedFoo不会有一个ratingFoo,它只是相反)。如果#2很好,则此解决方案可能会过于复杂。

请注意,我想拥有我的类AcceptedFoo,因为它具有其他关联。如果我丢失了该类,则无法建模那些关联仅对应于接受的实例。一旦我有了Foo和AcceptedFoo,那么我就会遇到有关该帖子的问题。

另一种可能性是将Foo的评级分为自己的概括。但是我不希望将“ AcceptedFoo”的关联与假设的“ AcceptedRating”相关联,这些关联实际上是与“ Foo”类关联。

我会选择解决方案2,但不确定子类中的0..1约束是否有意义。

enter image description here

inheritance uml modeling class-diagram
1个回答
0
投票

如果为超类定义0..1的多重性,则子类将继承该子类,并且最多只能实例化一次:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.