【问题标题】:UML- Can aggregation lines be combined, assuming the same multiplicity?UML-假设相同的多重性,可以组合聚合线吗?
【发布时间】:2018-04-23 05:52:54
【问题描述】:

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

它们都具有相同的多重性,我可以将它们画成如下所示的分支线吗?

【问题讨论】:

    标签: class oop uml aggregation


    【解决方案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
    

    我的直觉是,这对于这种关系通常是可以的,因为继承不会在末端采用多重性或名称。用聚合来做不太精确,即使它使图表不那么忙。

    【讨论】:

      猜你喜欢
      • 2012-12-05
      • 2014-09-18
      • 2018-01-21
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 2017-04-18
      相关资源
      最近更新 更多