【问题标题】:What means a unidirectional relationship arrow什么是单向关系箭头
【发布时间】:2015-10-27 21:23:12
【问题描述】:

我不明白链接图片中两个表之间的关系是什么意思。我该如何编码?

它与

virtual public Propriete Proprietes { get;放; }

【问题讨论】:

  • @Franco 看起来更好,拜托。没有解释单向箭头的含义。那里的问题是关于除了这个之外的所有箭头!
  • 这很有趣,但是对于这种微不足道的元素,这里毫无疑问。真的,按照当代的标准,已经快没用了,但是可以用,所以,应该解释一下。 +1。

标签: uml


【解决方案1】:

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

而你将决定它是否存在给编码人员。

请注意,没有箭头的线表示两端确实存在字段(或方法)。如果线条应该显示其中两个,我们根本不绘制箭头。

所以,真的,你的问题有误。这不是单向关系。它是一个显示关系的单向箭头,可能是单向的。

【讨论】:

    【解决方案2】:

    类之间的关联(不是表)末尾的箭头表示此端是可导航的。

    这被定义为在Association 结束时对Property 的操作。 UML 2.5 规范中的定义说:

    isNavigable() : 布尔值 查询 isNavigable() 指示是否可以跨属性导航。

    body: not classifier->isEmpty() or association.navigableOwnedEnd->includes(self)
    

    此外,它还提到了关联符号:

    关联末端的空心箭头表示末端是 可通航。关联末尾的小 x 表示结束 无法导航。

    关于关联的可导航性

    可导航性意味着实例在运行时参与链接 (关联的实例)可以有效地从 协会另一端的实例。精确的机制 实现这种有效访问的方式是特定于实现的。 如果一端不可导航,则来自其他端的访问可能会也可能不会 是可能的,如果是,它可能效率不高。

    最后要记住一些事情,因为这个约定仍然经常使用:

    过去经常使用导航符号,根据 非正式约定,据此假定不可通航的目的是 由协会拥有,而可通航的目的被假定为 归另一端的分类器所有。现在这个约定 已弃用。聚合类型、可导航性和最终所有权是 独立的概念,每个都有自己的明确表示法。协会 类拥有的目标总是可导航的,而那些拥有的 关联可以导航也可以不导航。

    所以现在你应该知道它的含义了。如何编写代码取决于编程语言、公司标准、架构层、您的创造力等。

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 2021-03-19
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2016-01-30
      • 1970-01-01
      • 2014-03-16
      相关资源
      最近更新 更多