UML关系。聚合

时间:2014-06-16 06:13:46

标签: uml aggregation relationships

我的UML图有问题,如果你帮助我,我会很高兴。我有像

这样的关系

对象A(1)<> ----(0 .. *)对象B

对象B(1)<> ----(0 .. *)对象A

我希望团结他们。我该怎么做?非常感谢。

2 个答案:

答案 0 :(得分:2)

你能否定义术语"联合他们"?你到底希望得到什么?一个例子可能有所帮助。

与此同时,我可以尝试猜测并为您提供两种可能的解决方案。也许他们会帮助你改写你的问题,甚至找到解决方案:

enter image description here

在解决方案1中,我刚刚建立了一个描述你们两个人的单一关系。如果对象之间只有一个明确的连接标准,则可以使用此方法。典型的n..m关系。对象A将各自保存相关对象B的集合,反之亦然。

  • 例如,一个人(图中的A)可以加入多个俱乐部(B),一个俱乐部可以有几个成员 - 这种情况背后只有一个逻辑关系 - 会员

解决方案2实际上有两种不同的方式来关联这些元素,每个元素都是1..n。因此,A持有B的集合,而B持有As的集合,但它们是无关的。

  • 扩展同一个例子 - 一个人(A)只能加入一个俱乐部(B),一个俱乐部可以有很多成员并保留他们的参考(图中的col_a)。同时,俱乐部只能拥有1个所有者,而一个人可拥有多个俱乐部(col_b)。这里我们有两种不同的逻辑关系 - 成员资格所有权

当然,其他多重性和导航性也是可能的,这只是一个给你一个想法的例子。

其中一种情况听起来像你的吗?

更新(第一次评论后)

所以,这是更新的解决方案1:

enter image description here

这是一个聚合,这是一个群组成员关系。它完全适合我在那里的第一个解决方案的描述。成员(B)可以"共享"两组之间(A)和Gruop对其生命周期没有任何特殊控制。

真正的整体关系将使用组合而不是聚合(用黑色钻石视觉描绘,而不是白色)。它的语义是整个对象完全控制所包含对象(部分)的生命。因此,部件不能在多个整体之间共享,如果整个本身被销毁,则必须销毁。

现在你只需要找出哪种情况能够最好地描述你的问题,然后找出这个解决方案并最终微调多重性。

答案 1 :(得分:1)

这是一种可以用UML表示这种情况的方法。

一台服务器可以包含0个或多个函数(即聚合关系)。

每个功能必须属于一个服务器。或者,如果它是分布式功能,那么它可以属于许多服务器。

enter image description here