什么是单向关系箭头?

3
我不理解链接图片中两个表格之间的关系是什么。如何编写代码实现它?

enter image description here

我将为您翻译以下内容:

这里是

虚拟公共属性Proprietes { get; set; }


4
请查看此处:https://dev59.com/fXI-5IYBdhLWcg3wZ3fC。 - Franco
@Franco,请再仔细看一下。没有解释单向箭头的含义。而且那个问题问的是除了这个箭头之外的所有箭头! - Gangnus
很有趣,但这里没有关于如此琐碎元素的问题。实际上,根据现代标准,它几乎已经过时了,但它仍然可以使用,因此应该加以解释。+1。 - Gangnus
2个回答

2

Geert写了一些真实的事情,但我认为你需要更多实用的建议。

单向箭头表示Enquette类具有Propriete类的字段或方法。在99%的情况下,它只是该类型的一个简单字段。现代标准建议在线的另一侧使用一个点。

箭头没有名称的事实通常意味着该字段的名称是propriete或Propriete,根据语言和公司接受的风格来定。 (这不是UML标准所要求的,但广泛使用)。根据问题的最后一段,似乎您的公司也使用此规则。

线的另一端没有箭头并不意味着Propriete类中没有Enquette类的字段或方法。(尽管在90年代是这样的)。它只是意味着我们还没有决定是否存在这样的字段。或者可能是我们认为这不重要。即未定义。已知缺少这种连接必须用十字形而不是箭头头显示。

因此,在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

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

这被定义为操作关联末尾的属性。UML 2.5规范中的定义如下:

isNavigable() : Boolean The query isNavigable() indicates whether it is possible to navigate across the property.

body: not classifier->isEmpty() or association.navigableOwnedEnd->includes(self)
此外,关于关联符号的说明:
在关联的末尾使用一个开放箭头表示该方向是可导航的。在关联的末尾使用一个小 x 表示该方向不可导航。
关于关联的导航性:
导航性表示在运行时参与链接的实例(关联的实例)可以从关联另一端的实例中高效地访问。确切的实现机制取决于具体实现。如果一个端口不可导航,则可能或可能不可能从其他端口进行访问,如果可以访问,访问可能不会高效。
需要注意的是,因为这种约定仍然经常被使用:
过去通常使用导航符号来表示非可导航端点由关联拥有,而可导航端点则由相反端点的分类器拥有。此约定已被弃用。聚合类型、导航性和端点所有权是分别具有自己明确符号的单独概念。类所拥有的关联端点始终是可导航的,而关联拥有的端点可能是可导航的,也可能不是可导航的。
现在你应该知道它的含义了。如何编写取决于编程语言、公司标准、架构层、您的创造力等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接