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 中的用户组聚合关系的主要内容,如果未能解决你的问题,请参考以下文章

UML类图(大话数据模式)

简要介绍UML中的视图以及它们之间的关系

UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合)

UML 类图

visio2010画的uml用例时怎么添加聚合关系

UML类图详解_组合关系