UML中双向关系的特点?

Posted

技术标签:

【中文标题】UML中双向关系的特点?【英文标题】:Characteristics of bidirectional relationships in UML? 【发布时间】:2016-05-13 21:18:15 【问题描述】:

考虑一下:

据我所知,如果 1 ab 相关,并且 a 知道 b 所以 a 能够向 b 发送消息,但 b 是不知道a 所以b 无法向a 发送消息。

另一方面,如果 2 ab 相关,并且双方都知道对方,则双方都可以向对方发送消息。

但我的问题是,当关系不是关联而是聚合时,那该怎么办?聚合关系能否在 UML 中具有双向导航性,以便两个实例相互了解?

如果a 拥有b,因此a 知道b。 (换句话说,a 能够向b 发送消息)。但是反过来呢,b 知道a 吗?还是永远不会是这样?或者这只是没有在图中指定,这可能是两种方式?并且,如果b 必须知道a 将如何表达(我从未见过另一端带有箭头的聚合线)?

所有这些都适用于作曲吗?

与此稍微相关的另一件事我想知道,非双向关联可以有两个角色吗?

据我所知,这是不可能的,因为非双向关系是当只有一个相关实例知道另一个时的关系,而角色意味着一个实例如何感知另一个实例,所以我们需要两个实例都知道彼此能够扮演两个角色,这是正确的吗?

【问题讨论】:

【参考方案1】:

根据 UML 2.5 的定向关联:

DirectedRelationship 表示源模型元素集合和目标模型元素集合之间的关系。

所以这并没有说太多。事实上,你可以简单地离开它。有一个不可导航的概念明确排除了导航。

所有权不是由箭头显示,而是由拥有类附近的一个点显示。

上层建筑的另一个引用(第 11.5 章中的第 200 页关联):

过去通常根据非正式约定使用可导航表示法,即假定不可导航端归协会所有,而可导航端假定归另一端的分类器所有。此约定现已弃用。聚合类型、可导航性和最终所有权是独立的概念,每个都有自己的明确表示法。类所拥有的关联端始终是可导航的,而关联所拥有的则可能是可导航的或不可导航的。

如果您指定的角色名称明确表示您可以导航到指定的类。

【讨论】:

以上是关于UML中双向关系的特点?的主要内容,如果未能解决你的问题,请参考以下文章

UML

UML

UML描述面向对象程序设计中类与类的关系

uml中,各种符号的意义总结

轻松学习UML之类图

带你认识UML