UML 中的用户组聚合关系
Posted
技术标签:
【中文标题】UML 中的用户组聚合关系【英文标题】:user-group aggregation relationship in UML 【发布时间】:2015-08-07 08:09:49 【问题描述】:如果一个用户可以是多个组的一部分并且一个组可以包含多个用户,那么在 UML 中这种关系必须表示为聚合关系吗?或者我们可以只使用一个简单的关联?
【问题讨论】:
【参考方案1】:在大多数情况下,关联就足够了。您很可能会在任一端添加多重性,以表明用户(应该)在至少一个组中或可以在多个组中(当然这取决于域),因此您会看到 1..*
多重性。反之亦然,一个组将拥有0..*
用户。
您可以使用Aggregation
(群组一侧的空心菱形)表示一个群组是由多个用户组成的。使用组合通常(在用户管理上下文中)没有意义,因为这意味着一个组只有在有属于它的用户时才能组成。
无论如何,在用户管理上下文中,我不会使用Aggregation
。原因是 user 和 group 都是几乎同一级别 (YMMV) 的概念,而使用 Aggregation
会告诉读者聚合元素的级别低于聚合元素。
【讨论】:
【参考方案2】:在这种情况下,很明显“复合”不是一个选项,因此可以选择“共享”或“无”。 OMG 规范定义共享是这样的:
“共享聚合的精确语义因应用领域和建模者而异。”
因此,您可以从任一选项中进行选择。如果你想在 UML 图中表示这个,,,,,
("1..*" 可能是正确的多重性..)
我的答案基于 UML 规范 2.4.1 - [7.3.2 AggregationKind]
AggregationKind 是以下文字值的枚举:
无
表示该属性没有聚合。
共享
表示该属性具有共享聚合。
复合
表示属性是复合聚合的,即复合对象对复合对象(部分)的存在和存储负责。
语义变化点
共享聚合的精确语义因应用领域和建模者而异。
未定义创建零件实例的顺序和方式。
【讨论】:
以上是关于UML 中的用户组聚合关系的主要内容,如果未能解决你的问题,请参考以下文章