我一直认为UML聚合被定义为路径开头的黑色(填充)菱形,而箭头没有结束:
|--------| |--------|
| :MyA |<>------| :MyB |
|--------| |--------|
今天我遇到了一个像<>----->
这样的符号(右端有一个明确的箭头)。所以我在UML 2.4规范中查找了它,并且实际上找到了两个版本的引用。
我最喜欢的参考: Craig Larman的“UML and Patterns”只提到没有箭头的第一个版本。在UML规范中,我发现了关于可导航结束的通知,但我不确定这是否相关,是否有区别?
有人可以更彻底地解释这个并给出每个版本使用的例子吗?
答案 0 :(得分:7)
借助于导航箭头,可以将任何关联结束指定为“可导航”。然而,UML的“导航性”概念没有一个确切的含义,人们将它与另一端的类所拥有的关联结束的概念相混淆。类的关联结束所有权概念意味着关联结束对应于该类的引用属性。这个问题仅在去年的新UML版本2.5中得到澄清,该版本为关联终端所有权引入了一种新的视觉符号,如中的“点”。这很可能是您遇到的意思,即,它的真正含义是以下引用属性:
有关详细说明,请参阅此tutorial。
评论的补充答案:如果您的班级模型指定所有关联结束的所有权,并且您的类图显示它们,并且没有所有权点(也不是导航箭头),如,然后,根据UML 2.5,关联结束由关联本身“拥有”。由于我们在MyA端没有所有权点,因此两端都由复合关联“拥有”。就编写/生成的代码而言,这意味着复合关联不是通过MyA或MyB中的引用属性实现的,而是必须在单独的类的帮助下实现,比如说“MyA-has- MyB“,它有两个引用属性,用于引用任何组合链接的聚合和组件,如下面的类矩形:
答案 1 :(得分:0)
方向意味着客户端/服务器或主/从关系。在聚合的情况下,通常的情况是程序员使用聚合来找到该对象的子组件(例如,使用汽车来找到汽车部件)。对于零件类的方向性使得这种关系是显式的,尽管在大多数情况下它是多余的。
答案 2 :(得分:0)
协会有两个目的。关联的结束是通过UML属性建模的,UML属性可以由关联的相关末端所涉及的分类器拥有,在这种情况下,该关联被称为可导航,因为源分类器可以直接引用目标实例(通过该属性在协会另一端的实例。否则,表示关联结束的属性可能由关联实例本身拥有
请参阅http://lowcoupling.com/post/47802411601/uml-diagrams-and-models-with-papyrus
答案 3 :(得分:0)
一个箭头表示关联可以通过这种方式导航。没有箭头意味着关联是可导航的两种方式。省略了两个箭头。
这可能是一个问题,因为具有undefined
导航功能的两端可以看到相同的方式,但它是标准的。