【发布时间】:2015-10-27 21:23:12
【问题描述】:
【问题讨论】:
-
@Franco 看起来更好,拜托。没有解释单向箭头的含义。那里的问题是关于除了这个之外的所有箭头!
-
这很有趣,但是对于这种微不足道的元素,这里毫无疑问。真的,按照当代的标准,已经快没用了,但是可以用,所以,应该解释一下。 +1。
标签: uml
【问题讨论】:
标签: uml
Geert 写的是真实的东西,但我认为,你需要更多实用的建议。
那个单向箭头表示 Enquette 类有一个属于 Propriete 类的字段或方法。在 99% 的情况下,它是该类型的简单字段。当代标准提出为此使用线另一侧的点。
事实上,箭头上没有名称,这通常意味着字段的名称是专有的,或专有的,根据语言和您的公司所接受的样式。 (UML 标准中没有要求,但被广泛使用)。根据问题的最后一段,您的公司似乎也使用了这个规则。
行的另一端没有箭头这一事实并不意味着在具有 Enquette 类的 Propriete 类中没有字段或方法。 (尽管这意味着在 90 年代)。这仅仅意味着我们还没有决定是否有这样的字段。或者,我们认为这并不重要。 IE。它是未定义的。已知缺乏这种联系必须用十字而不是箭头来表示。
所以,在 Enquette 的某个地方,你有一条线:
Propriete propriete;
或
Propriete* Propriete; //if you are in C++
甚至可能
Propriete** Propriete;
或被你引用
virtual public Propriete Proprietes { get; set; } // apparently, C#
它可以是静态/类字段或实例字段 - 它未在图中定义。
并且在 Propriete 类中可以存在以下行:
Enquete enquete; // or some of the mentioned variants
而你将决定它是否存在给编码人员。
请注意,没有箭头的线表示两端确实存在字段(或方法)。如果线条应该显示其中两个,我们根本不绘制箭头。
所以,真的,你的问题有误。这不是单向关系。它是一个显示关系的单向箭头,可能是单向的。
【讨论】:
类之间的关联(不是表)末尾的箭头表示此端是可导航的。
这被定义为在Association 结束时对Property 的操作。 UML 2.5 规范中的定义说:
isNavigable() : 布尔值 查询 isNavigable() 指示是否可以跨属性导航。
body: not classifier->isEmpty() or association.navigableOwnedEnd->includes(self)
此外,它还提到了关联符号:
关联末端的空心箭头表示末端是 可通航。关联末尾的小 x 表示结束 无法导航。
关于关联的可导航性
可导航性意味着实例在运行时参与链接 (关联的实例)可以有效地从 协会另一端的实例。精确的机制 实现这种有效访问的方式是特定于实现的。 如果一端不可导航,则来自其他端的访问可能会也可能不会 是可能的,如果是,它可能效率不高。
最后要记住一些事情,因为这个约定仍然经常使用:
过去经常使用导航符号,根据 非正式约定,据此假定不可通航的目的是 由协会拥有,而可通航的目的被假定为 归另一端的分类器所有。现在这个约定 已弃用。聚合类型、可导航性和最终所有权是 独立的概念,每个都有自己的明确表示法。协会 类拥有的目标总是可导航的,而那些拥有的 关联可以导航也可以不导航。
所以现在你应该知道它的含义了。如何编写代码取决于编程语言、公司标准、架构层、您的创造力等。
【讨论】: