带箭头和不带箭头的UML聚合

时间:2014-02-12 20:20:25

标签: uml aggregation

我一直认为UML聚合被定义为路径开头的黑色(填充)菱形,而箭头没有结束:

|--------|        |--------|
| :MyA   |<>------| :MyB   |
|--------|        |--------|

今天我遇到了一个像<>----->这样的符号(右端有一个明确的箭头)。所以我在UML 2.4规范中查找了它,并且实际上找到了两个版本的引用。

我最喜欢的参考: Craig Larman的“UML and Patterns”只提到没有箭头的第一个版本。在UML规范中,我发现了关于可导航结束的通知,但我不确定这是否相关,是否有区别?

有人可以更彻底地解释这个并给出每个版本使用的例子吗?

4 个答案:

答案 0 :(得分:7)

借助于导航箭头,可以将任何关联结束指定为“可导航”。然而,UML的“导航性”概念没有一个确切的含义,人们将它与另一端的类所拥有的关联结束的概念相混淆。类的关联结束所有权概念意味着关联结束对应于该类的引用属性。这个问题仅在去年的新UML版本2.5中得到澄清,该版本为关联终端所有权引入了一种新的视觉符号,如A composition where the end at the component class is owned by the aggregate class.中的“点”。这很可能是您遇到的意思,即A composition where the end at the component class is "navigable",它的真正含义是以下引用属性:

enter image description here

有关详细说明,请参阅此tutorial

评论的补充答案:如果您的班级模型指定所有关联结束的所有权,并且您的类图显示它们,并且没有所有权点(也不是导航箭头),如A plain composition,然后,根据UML 2.5,关联结束由关联本身“拥有”。由于我们在MyA端没有所有权点,因此两端都由复合关联“拥有”。就编写/生成的代码而言,这意味着复合关联不是通过MyA或MyB中的引用属性实现的,而是必须在单独的类的帮助下实现,比如说“MyA-has- MyB“,它有两个引用属性,用于引用任何组合链接的聚合和组件,如下面的类矩形:

enter image description here

答案 1 :(得分:0)

方向意味着客户端/服务器或主/从关系。在聚合的情况下,通常的情况是程序员使用聚合来找到该对象的子组件(例如,使用汽车来找到汽车部件)。对于零件类的方向性使得这种关系是显式的,尽管在大多数情况下它是多余的。

答案 2 :(得分:0)

协会有两个目的。关联的结束是通过UML属性建模的,UML属性可以由关联的相关末端所涉及的分类器拥有,在这种情况下,该关联被称为可导航,因为源分类器可以直接引用目标实例(通过该属性在协会另一端的实例。否则,表示关联结束的属性可能由关联实例本身拥有

请参阅http://lowcoupling.com/post/47802411601/uml-diagrams-and-models-with-papyrus

答案 3 :(得分:0)

一个箭头表示关联可以通过这种方式导航。没有箭头意味着关联是可导航的两种方式。省略了两个箭头。

这可能是一个问题,因为具有undefined导航功能的两端可以看到相同的方式,但它是标准的。

您可以在我的回答https://stackoverflow.com/a/21478862/715269

中更全面地了解关联/导航/聚合