不理解 UML 关系之间的区别

5 uml class-diagram associations aggregation

这里我有这个类图:

在此输入图像描述

以下是我不明白的事情:

  1. 为什么是Order-OrderDetail聚合?它不应该只是一个关联吗,因为它会有一个List<OrderDetail>类似的:
public Order{
    public DateTime date;
    public Status status;
    public List<OrderDetail> orderDetails;
}
Run Code Online (Sandbox Code Playgroud)
  1. 为什么是OrderDetail-Item依赖?既然它引用了该类,那么它不应该是关联吗Item

图表参考: http://sslabmcs12.weebly.com/resources1.html

qwe*_*_so 1

  1. 是的,简单的关联将是正确的选择。无论如何,这是一个shared aggregation没有定义语义的。参见第 17 页。UML 2.5 的 110 条:

指示该属性具有共享聚合语义。共享聚合的精确语义因应用程序领域和建模者而异。

所以你最好询问图表作者他的意图。

  1. 这不是依赖关系,而是关联关系。依赖关系将用虚线呈现。然而,可导航性(向右的箭头让你相信它是一个依赖项)的用处不大。它表明OrderDetail可以看到Item,但反之则不能。仅在一侧使用角色名称可以更好地表达这一事实。例如,只放置item在右侧,左侧不放置任何东西。

我们能学到什么?UML 是关于沟通的!

  • 对优秀问题的优秀回答! (2认同)