UML-假设具有相同的多重性,可以组合聚合线吗?

时间:2017-11-10 03:47:23

标签: class oop uml aggregation

如果我有多个对象是一个对象的聚合,如下所示:

enter image description here

并且它们都具有相同的多样性,我可以将它们绘制成如下所示的分支线吗?

enter image description here

2 个答案:

答案 0 :(得分:4)

是的,你可以,但我不推荐它。

事实上,我从未见过它在行业模型中使用过,我不允许在我的任何模型中使用该符号。从下图中我无法清楚地区分Window是否连接到下面的三个类,或者Slider是否连接到Panel和Header还是......

我只会将这种表示法用于推广和实现

UML规范指定以下内容:

  

图11.34显示了使用符号选项的类似模型   在多个组合之间共享相同的源片段。该   共享端的多重性和名称装饰适用于所有   成分。合并后缺席装饰的模型值   细分,例如属性修饰符或可见性,可能会有所不同。   enter image description here

答案 1 :(得分:2)

补充Bellekens'回答,PlantUML等工具提供了对继承行的组合支持,有时称为"shared target style."

这是PlantUML中的一个例子:

skinparam style strictuml
hide empty members
skinparam groupInheritance 3
class S
class A extends S
class B extends S
class C extends S

enter image description here

我的直觉是,对于这种关系来说这通常是可以的,因为继承并没有在末端采用多重性或名称。使用聚合进行此操作的准确性较低,即使它使图表不那么繁忙。