2014-02-12 68 views
3

我一直认为UML总量的定义是在路径的开头黑色(填充)的钻石,并没有说结束箭头:UML聚集有和没有箭头

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

今天我来了横跨像<>----->这样的符号(在右端有一个明确的箭头)。所以我在UML 2.4规范中查找并实际找到了两个版本的参考。

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

有人可以更彻底地解释这一点,并举例说明每个版本的使用情况吗?

回答

6

任何关联端的关联/适航/聚合更仔细阅读可以被指定为“通航”与适航箭头的帮助。但是,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

+0

你可以用一个点或箭头省略的例子来扩展你的答案,并且稍微解释一下这个区别吗? – lanoxx

0

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

0

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

看到http://lowcoupling.com/post/47802411601/uml-diagrams-and-models-with-papyrus

+0

适航(箭头)和关联端的所有权是不一样的。尽管UML的“导航性”概念没有明确的含义,但关联最终所有权意味着关联结束对应于该类的引用属性。这个问题仅在去年新的UML 2.5版中得到澄清。请参阅https://oxygen.informatik.tu-cottbus.de/IT/JsFrontendApp/tutorial.html的第5章 –

0

一个箭头,表示该协会通航这种方式。没有箭头表示该协会可以通过两种方式进行导航。两个箭头被省略。

这可能是一个问题,因为两个结合undefined导航的方式是一样的,但它是标准。

可以关于这个我的回答https://stackoverflow.com/a/21478862/715269

+1

您的陈述“没有箭头表示关联可以通过两种方式”是不正确的。没有箭头意味着导航性未指定。 –

+0

@gwag可以查看VP UML帮助或UML标准页面上显示的图表。不久前我也认为你也是,但那些双面箭头已经过时了。 – Gangnus

+1

在最新的UML 2.5规范中,他们描述了三个工具视觉完整性选项(第211页)。第二个是“禁止所有的箭头和十字架:不能推断导航”,第三个是“禁止双向导航的关联箭头”(在这种情况下,双向导航性不能与在任何情况下,如果你在图表中有一个与箭头的关联,并且有另一个没有箭头,那么这不具有你所建议的意义(可以在两个方向上导航) –