在UML类图中可以组成双向吗?

ant*_*riz 5 oop uml class-diagram

组合是否可以双向相互了解的方式进行双向化?

如果没有,合成的默认方向是什么?

Gan*_*nus 6

您应该区分可导航性和聚合性。箭头和钻石。

箭头 A->B 仅表示可以通过某种简单方式从 A 到达 B。如果A包含B的成分,则意味着

复合对象负责组合对象(部分)的存在和存储。

(引用自 OMG 统一建模语言 TM (OMG UML) - 第 109 页)

那么,组合能否具有双向导航性呢?

是的。这是很正常的。

例如,如果您决定销毁 B 的某些功能,则您必须到达 A 并从那里销毁它。因此,组合通常具有双向导航性。请注意,根据当前和即将推出的 UML 标准,双向导航性显示为两侧没有箭头的线。双面箭头已弃用。这就是你不会经常看到它的原因。

构图本身可以是双向的吗?我们能在协会的两侧看到黑钻石吗?

,这种关联当然不能是相互的,因为不可能只在 A 中创建 B,同时又只在 B 中创建 A。

有趣的是,shared aggregation(空菱形)也不能是相互的,但这里的限制不是固有的,它只是 UML 标准所禁止的。


Gee*_*ens 5

是的,组合不会对关联的可导航性添加限制。有关关联、组合和聚合之间差异的更多信息,请参见:UML 组合、聚合与关联