我一直认为UML聚合被定义为路径开头的黑色(填充)菱形,而箭头没有结束: |--------| |--------|| :MyA |------| :MyB ||--------| |--------| 今天我遇到了像 —–这样的符号. (右端有一个明确的箭头).所
|--------| |--------| | :MyA |<>------| :MyB | |--------| |--------|
今天我遇到了像<> —–>这样的符号. (右端有一个明确的箭头).所以我在UML 2.4规范中查找了它,并且实际上找到了两个版本的引用.
我最喜欢的参考:Craig Larman的“UML and Patterns”只提到没有箭头的第一个版本.在UML规范中,我发现了关于可导航目的的通知,但我不确定这是否相关,是否有什么区别?
有人可以更彻底地解释这个并给出每个版本使用的例子吗?
借助于导航箭头,可以将任何关联结束指定为“可导航”.然而,UML的“导航性”概念没有一个确切的含义,人们将它与另一端的类所拥有的关联结束的概念相混淆.这种关联结束所有权的概念意味着关联结束对应于该类的引用属性.这个问题仅在去年的新UML版本2.5中得到澄清,该版本为协会最终所有权引入了一种新的视觉符号,如同一个“点”.这很可能是您遇到的意义,即它的真正含义是以下引用属性:有关更多说明,请参阅此tutorial.
评论的补充答案:如果您的班级模型指定所有关联结束的所有权,并且您的类图显示它们,并且没有所有权点(也不是导航箭头),那么,根据UML 2.5,该关联结束由协会本身“拥有”.由于我们在MyA端没有所有权点,因此两端都由复合关联“拥有”.就编写/生成的代码而言,这意味着复合关联不是通过MyA或MyB中的引用属性实现的,而是必须在单独的类的帮助下实现,比如说“MyA-has- MyB“,它有两个引用属性,用于引用任何组合链接的聚合和组件,如下面的类矩形: