【问题标题】:aggregation cardinality in a UML diagramUML 图中的聚合基数
【发布时间】:2017-08-14 15:52:02
【问题描述】:

我对聚合有两个疑问。在类 A 具有 B 类聚合的类图中: 1) 菱形边的基数是多少? 2)可以表示B类可以访问A吗? (内容可以看到容器)

谢谢。

【问题讨论】:

    标签: uml aggregation


    【解决方案1】:

    采取以下设计:

    A 可以将B 视为b,反之亦然可以视为a。未填充的菱形是一个共享聚合,根据 UML 规范没有固定的语义(建议就其在当前域中的含义达成一致)。多重性表明 A 在 B 中聚合了 0..* 次。进一步 1..* Bs 在 A 中可见。现在开始思考这可能意味着什么以及聚合(没有固定语义的共享)如何影响设计。

    相比之下,实心菱形是复合聚合。这意味着As 的生命周期绑定到B。所以如果B 死了,那只是A 也必须做最后的祈祷。

    对于复合聚合,B 一侧应该只有 1 多重性,否则您会遇到麻烦。这是他的规范所说的:

    复合聚合是一种强大的聚合形式,它要求一个部分对象一次最多包含在一个复合对象中。如果一个复合对象被删除,它的所有作为对象的部分实例都会被删除。

    【讨论】:

    • 你能在菱形边画一个箭头来表示A可以导航到B吗?
    • 你可以。但是,箭头符号现在被一个小点所取代,以显示所有权。此外,角色名称清楚地表明您可以导航(因为您分配了角色名称)。
    猜你喜欢
    • 2011-07-14
    • 2011-05-03
    • 2013-05-14
    • 2014-07-30
    • 2013-06-22
    • 2016-07-22
    • 2014-08-05
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多