【问题标题】:user-group aggregation relationship in UMLUML 中的用户组聚合关系
【发布时间】:2015-08-07 08:09:49
【问题描述】:

如果一个用户可以是多个组的一部分并且一个组可以包含多个用户,那么在 UML 中这种关系必须表示为聚合关系吗?或者我们可以只使用一个简单的关联?

【问题讨论】:

    标签: uml aggregation


    【解决方案1】:

    在大多数情况下,关联就足够了。您很可能会在任一端添加多重性,以表明用户(应该)在至少一个组中或可以在多个组中(当然这取决于域),因此您会看到 1..* 多重性。反之亦然,一个组将拥有0..* 用户。

    您可以使用Aggregation(群组一侧的空心菱形)表示一个群组是由多个用户组成的。使用组合通常(在用户管理上下文中)没有意义,因为这意味着一个组只有在有属于它的用户时才能组成。

    无论如何,在用户管理上下文中,我不会使用Aggregation。原因是 user 和 group 都是几乎同一级别 (YMMV) 的概念,而使用 Aggregation 会告诉读者聚合元素的级别低于聚合元素。

    【讨论】:

      【解决方案2】:

      在这种情况下,很明显“复合”不是一个选项,因此可以选择“共享”或“无”。 OMG 规范定义共享是这样的:

      “共享聚合的精确语义因应用领域和建模者而异。”

      因此,您可以从任一选项中进行选择。如果你想在 UML 图中表示这个,,,,,

      ("1..*" 可能是正确的多重性..)

      我的答案基于 UML 规范 2.4.1 - [7.3.2 AggregationKind]

      AggregationKind 是以下文字值的枚举:

      表示该属性没有聚合。

      共享

      表示该属性具有共享聚合。

      复合

      表示属性是复合聚合的,即复合对象对复合对象(部分)的存在和存储负责。

      语义变化点

      共享聚合的精确语义因应用领域和建模者而异。

      未定义创建零件实例的顺序和方式。

      【讨论】:

        猜你喜欢
        • 2014-08-05
        • 2014-02-08
        • 2014-09-18
        • 2013-05-14
        • 1970-01-01
        • 2017-06-24
        • 2013-02-23
        • 2020-07-20
        • 2011-02-11
        相关资源
        最近更新 更多