组合和聚合是否可以共享一个部分?

Is it possible for a composition and aggregation to share a part?

我正在创建一个 UML 设计 class 图,其中我的 classes "Borger"(丹麦语)最终成为另外两个 classes(整体)的一部分) :

一个关系是组合,一个是聚合。这可能吗? Why/why 不是吗?

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

AggregationKind 的精确语义shared 未在规范中给出:共享聚合的精确语义 因应用领域和建模者而异(仍然是 formal-17-12-05.pdf 的第 112 节第 9.5.3 节),因此您可以决定其含义以与上述案例兼容。

但是你的情况有点奇怪,我建议使用一个组合和一个简单的 属性(AggregationKindnone ) 出于可读性原因。

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

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