【发布时间】:2016-12-16 12:52:21
【问题描述】:
当类与另一个相关联时,例如链接图像中的Flight,它有零个或一个与之关联的Plane,这不应该反映在类的属性中吗? 也就是说,本例中的 Flight 类不应该在其 flightNumber、departmentTime 等旁边有一个assignedPlane 字段……否则如何说 Flight '知道'其关联的 Plane?
【问题讨论】:
标签: associations uml role
当类与另一个相关联时,例如链接图像中的Flight,它有零个或一个与之关联的Plane,这不应该反映在类的属性中吗? 也就是说,本例中的 Flight 类不应该在其 flightNumber、departmentTime 等旁边有一个assignedPlane 字段……否则如何说 Flight '知道'其关联的 Plane?
【问题讨论】:
标签: associations uml role
没有。
在图中显示关联相当于拥有特定类的属性。如果存在关联(与角色),则该角色是相应类的属性。
有关参考,请参见 UML 2.5 规范第 9.5.5 节中的图 9.12(带说明)。
【讨论】:
如果您在 Flight 类中有一个属性“assignedPlane : Plane”,那么关联中的角色“assignedPlane”将是多余的。但仅仅在关联中具有角色“assignedPlane”并不意味着 Flight 类知道它。如果 Flight 将实现为 Java 类或任何其他 OO 编程语言中的类,则从类图中不清楚 Flight 类是否有任何引用(或了解)assignedPlane。
如果您想向您的观众传达 Flight 类拥有一个名为“assignedPlane”的对零个或一个 Plane 实例的引用,那么您可以在关联的末尾添加一个粗点(或一个小实心圆圈)。下面是一个来自 UML 2.5 规范的示例:
在本例中,'size' 是 Window 的一个属性,尽管它显示为关联。如果您有一个显示 Window 的所有属性的类图,那么 'size : Area' 就是其中之一。
点表示法是一种相对较新的表示法,并没有被广泛使用。相反,许多设计师使用箭头符号,如图 9.12 所示。根据 UML,这个所谓的可导航性箭头指定了 Area 的关联实例可以从 Window 有效地访问,而不管这种情况如何以及为何如此。大多数设计者会认为这意味着 Window 有一个属性 'size : Area',但严格来说,这不是 UML 规范所说的。
同时使用箭头和点,如图 9.12 所示,是有效的,但是是多余的。
【讨论】: