首页 > 解决方案 > 组合和聚合是否可以共享一部分?

问题描述

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

uml设计类图

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

标签: oopuml

解决方案


Borger不能有两个组合,因为复合聚合是一种强大的聚合形式,它要求一次最多将一个部分对象包含在一个复合对象中( formal-17-12-05.pdf第 112 页的第 9.5.3 页) ,但是有一个组合(AggregationKind复合的)和一个聚合(与AggregationKind共享的)是可能的。

规范中没有给出AggregationKind值shared的精确语义:共享聚合的精确语义因应用领域和建模者而异(仍然是formal-17-12-05.pdf的第 112 页第 9.5.3 页),因此您可以决定它的含义允许与您的上述情况兼容。

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

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


推荐阅读