组成和聚合可以共享一部分吗?

时间:2019-05-04 07:55:58

标签: oop uml

我正在创建一个UML设计类图,其中我的“伯格”(丹麦语)类最终成为另外两个类(整个)的一部分:

uml design class diagram

一个关系是一个组合,一个关系是一个聚合。这可能吗?为什么/为什么不呢?

2 个答案:

答案 0 :(得分:0)

您不能有两个组成要对 Borger 进行合成,因为复合聚集是一种强大的聚集形式,需要一次将一个对象最多包含在一个复合对象中 formal-17-12-05.pdf第112页的9.5.3节),但要具有组成( AggregationKind composite )和一个聚合(具有 AggregationKind shared )。

AggregationKind 评估 shared 的精确语义未在规范中给出:共享聚合的精确语义 会因应用程序区域和建模器的不同而有所不同(仍然是formal-17-12-05.pdf第112页的9.5.3节),因此您可以确定其含义,以使其与您的案例兼容。

但是您的情况有点奇怪,出于可读性考虑,我建议使用一个组合和一个简单的属性( AggregationKind none )。

请注意,在Java中,您总是使用指针, Borger 的实例不能真正成为一部分(但是在C ++中,这是可能的)。

答案 1 :(得分:-1)

是的,允许。据我所知,UML规范中没有禁止它的内容。