【问题标题】:Should UML role names be reflected in class attributes?UML 角色名称是否应该反映在类属性中?
【发布时间】:2016-12-16 12:52:21
【问题描述】:

当类与另一个相关联时,例如链接图像中的Flight,它有零个或一个与之关联的Plane,这不应该反映在类的属性中吗? 也就是说,本例中的 Flight 类不应该在其 flightNumber、departmentTime 等旁边有一个assignedPlane 字段……否则如何说 Flight '知道'其关联的 Plane?

【问题讨论】:

标签: associations uml role


【解决方案1】:

没有。

在图中显示关联相当于拥有特定类的属性。如果存在关联(与角色),则该角色相应类的属性。

有关参考,请参见 UML 2.5 规范第 9.5.5 节中的图 9.12(带说明)。

【讨论】:

  • 请将“链接”更改为“关联”。链接是关联的一个实例。
  • @JimL.你当然是对的,感谢您的指出。已更正。
  • 那么,鉴于此等价性,我们是否可以将 Flight 类视为具有与去向机场属性的 String 对象的单向关联? (不会被表示,因为这样做是微不足道的)
  • @Bovis 如果您将 String 视为类,那么是的。
  • 不,这些不是等价的。只有当点出现在关联端时,它们才是等价的。
【解决方案2】:

如果您在 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 所示,是有效的,但是是多余的。

【讨论】:

    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多