use*_*222 6 uml class-diagram associations
我读了帖子
但是我仍然不清楚 UML 类图关联的“导航”和“所有权”之间的区别。此外,UML 2.5 也在此期间发布。
规范规定如下:
类所拥有的关联端始终是可导航的,而关联所拥有的那些端可能是可导航的或不可导航的。
这意味着,下面的示例 c 是无效的。示例 a 和 b 都是有效的,在这两种情况下,右端都是可导航的。但是,在示例 b 中,左端不可导航。
我对吗?
导航和所有权之间的语义区别是什么?导航是访问相反类的“通用”方式,而所有权强制类具有属性吗?
规格说
\n\n\n点符号用于表示关联端所有权,其中点表示该行另一端的类拥有该点所触及的类的类型的属性。
\n
所以a和b是有效的,而c是奇怪的。假设左边开始上课A,右边正在上课B。如果a A拥有某种类型的属性B,因此它可以导航到该属性。情况b明确添加了可以通过使用点A导航到已经很明显的信息。B如果c B拥有类型的属性A(因此可以导航)。此外,您指示从A到 的导航B,但不显示所有权。所以这很奇怪。
所有权只是表示有一些东西(指针)可以导航到另一个对象。引用规格(第 126 页):
\n\n\n可以显示导航箭头,但如果显示,它们应与 Association\xe2\x80\x99s 端的导航一致。
\n
及之后(第 201 页):
\n\n\n在实践中,隐藏一些表示关联端可导航性的箭头和十字通常很方便。一致性工具可以提供用于显示导航箭头和十字的各种选项。与点表示法一样,这些选项适用于完整图表的级别。
\n\n
\n- 显示所有箭头和十字。导航及其缺席都变得完全明确。
\n- 抑制所有箭头和十字。无法对导航做出任何推论。
\n- 抑制所有交叉。抑制具有双向导航性的关联的箭头,并仅显示具有单向导航性的关联的箭头。在这种情况下,无法区分双向可导航和根本没有导航的情况;然而,后一种情况在实践中很少发生。
\n
导航没有真正的用途(在大多数情况下)。您可以通过添加角色名称来显示导航,这些名称清楚地A显示B为role。末尾附近有一个带有十字的符号,明确禁止导航。这在某些情况下可能很有用。
可能会注意到,与“所有权”(使用较多)相比,规范对“导航”(仅 grep 出现的情况)相当沉默。这可能是因为最近才引入所有权。
\n