UML类图:导航和所有权之间的区别

时间:2017-08-09 16:11:38

标签: associations uml class-diagram

我在

中阅读了这些帖子

但是UML类图关联的“导航”和“所有权”之间的区别仍然不明确。此外,UML 2.5也在此期间发布。

规范声明如下:

  

类拥有的关联结束总是可以导航,而那些   协会拥有的可以是否可以通航。

  1. 这意味着,下面的示例c无效。示例a和b有效,在两种情况下右端都是可导航的。但是,在示例b中,左端不可导航。

    我是对的吗?

  2. 导航和所有权之间的语义差异是什么?导航是一种访问相反类的“通用”方式,而所有权强制类具有属性吗?

  3. enter image description here

1 个答案:

答案 0 :(得分:1)

规格说

  

点符号用于表示关联结束所有权,其中点表示该行另一端的Class拥有其类型为点所触及的类的属性。

所以 a c 是有效的,而 c 是很奇怪的。假设左开始课程A而右边是课程B。如果 A拥有类型为B的属性,则可以导航到该属性。案例 b 明确地添加了A可以导航到B的信息,这些信息已经通过使用点显而易见。如果 c B拥有A类型的属性(因此可以导航)。另外,您指明从AB的导航,而不显示所有权。这很奇怪。

所有权只是说有一些东西(一个指针)导航到另一个对象。引用规范(第126页):

  

可能会显示导航箭头,但如果显示,则应同意协会结束的导航。

以及之后(第201页):

  

在实践中,通常很方便地抑制表示关联结束的导航性的一些箭头和十字架。符合标准的工具可以提供用于显示导航箭头和十字架的各种选项。与点表示法一样,这些选项适用于完整图表的级别。

     
      
  • 显示所有箭头和十字架。导航及其缺失是完全明确的。
  •   
  • 禁止所有箭头和十字架。没有关于导航的推论。
  •   
  • 抑制所有十字架。在两个方向上抑制具有导航功能的关联箭头,并仅为具有单向导航功能的关联显示箭头。在这种情况下,双向导航性不能与根本没有导航的情况区分开来;然而,后一种情况在实践中很少发生。
  •   

导航没有实际用途(在大多数情况下)。您可以通过添加角色名称来显示导航,从而明确AB视为role。有一个十字架附近的符号明确禁止导航。在某些情况下,这可能很有用。

可能会注意到规格对于导航"而言相当沉默。 (只是grep事件)与"所有权" (使用的相当多)。这可能是因为最近已经引入了所有权。