UML-假设相同的多重性,可以组合聚合线吗?
Posted
技术标签:
【中文标题】UML-假设相同的多重性,可以组合聚合线吗?【英文标题】:UML- Can aggregation lines be combined, assuming the same multiplicity? 【发布时间】:2018-04-23 05:52:54 【问题描述】:如果我有多个对象是一个对象的聚合,如下所示:
它们都具有相同的多重性,我可以将它们画成如下所示的分支线吗?
【问题讨论】:
【参考方案1】:是的,你可以,但我不建议这样做。
事实上,我从未见过它在行业模型中使用过,并且我不允许在我的任何模型中使用该符号。从下图中我无法清楚地区分 Window 是否连接到下面的三个类,或者 Slider 是否连接到 Panel 和 Header 或......
我只会将该符号用于泛化和实现
UML 规范指定以下内容:
图 11.34 显示了一个使用符号选项的类似模型 在多个作品之间共享相同的源片段。这 共享端的多样性和名称装饰适用于所有 组成。合并后缺少装饰的模型值 段,例如属性修饰符或可见性,可能会有所不同。
【讨论】:
@Jin 注意一点:Bellekens 使用组合,而您使用聚合(共享关联)。关于堆栈溢出有很多问题,聚合的语义取决于上下文。更友好地说:这没有定义。所以最好避免使用它,除非你明确意思。【参考方案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
我的直觉是,这对于这种关系通常是可以的,因为继承不会在末端采用多重性或名称。用聚合来做不太精确,即使它使图表不那么忙。
【讨论】:
以上是关于UML-假设相同的多重性,可以组合聚合线吗?的主要内容,如果未能解决你的问题,请参考以下文章