组合是否能够以两个类彼此都知道的方式双向化?
如果没有,那么作曲的默认方向是什么?
答案 0 :(得分:4)
箭头A-> B意味着只能以某种简单的方式从A到达B.如果A包含B的组合,则表示
复合对象负责存在和存储 组合对象(部分)。
(引自OMG统一建模语言TM(OMG UML) - p.109)
是的。这很正常。
例如,如果您决定在其某些功能中销毁B,则必须到达A并从那里销毁它。因此,组合具有足够的双向导航性。请注意,根据当前和未来的UML标准,双向导航性显示为两侧没有箭头的行。双面箭头已弃用。这就是你经常不会看到它的原因。
否,当然这种关联不可能是相互关联的,因为B不可能只在A中创建,同时也只能在B中创建。
有趣的是,shared aggregation
(空钻石)也不可能是相互的,但这里的限制并不是固有的,它只是被UML标准所禁止。
答案 1 :(得分:3)
是的,Composition不会添加关于协会可导航性的约束。 有关Accociation,Composition和Aggregations之间区别的更多信息,请访问:UML Composition vs Aggregation vs Association
答案 2 :(得分:1)
来自https://www.lucidchart.com/pages/uml/class-diagram:
双向关联是两个类之间的默认关联,由两个类之间的直线表示。两个班级都相互了解彼此之间的关系。在上面的示例中,Car类和RoadTrip类是相互关联的。在该行的一端,Car采用“assignedCar”与多重性值0..1的关联,这意味着当RoadTrip的实例存在时,它可以有一个与之关联的Car实例,或者没有关联的Cars用它。在这种情况下,需要一个多重值为0 .. *的单独的Caravan类来证明RoadTrip可能有多个与之关联的Cars实例。由于一个Car实例可以有多个“getRoadTrip”关联 - 换句话说,一辆汽车可以进行多次公路旅行 - 多重性值设置为0 .. *