不理解关系型UML之间的区别

5

这里有一个类图:

enter image description here

以下是我不理解的事情:

  1. Order - OrderDetail 为什么是聚合?既然它将有一个像 List<OrderDetail> 这样的东西,那它不应该只是一个关联吗?
public Order{
    public DateTime date;
    public Status status;
    public List<OrderDetail> orderDetails;
}
  1. OrderDetail - Item为什么是依赖关系?它应该不是关联关系吗,因为它有一个对Item类的引用。

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


2
Rumbaugh,UML的共同发明者之一曾说过:“聚合是一种建模安慰剂”,因为许多人认为它绝对需要用来澄清他们的意思,而客观上并没有添加任何真正缺失的东西。 - Christophe
1个回答

1
  1. 是的,一个简单的关联会是正确的选择。不过,这是一个没有定义语义的“共享聚合”。请参阅UML 2.5的第110页:

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

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

  1. 这不是一种依赖关系,而是一种关联关系。依赖关系将呈虚线。然而,导航性(使您相信它是依赖关系的箭头右侧)没有太大用处。它表示OrderDetail可以查看Item,但反之则不行。这个事实可以通过在一侧仅使用角色名称来更好地表示。例如,只将item放在右侧,左侧什么也不显示。

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


2
优秀的回答,对一个优秀的问题! - Christophe
1
你为什么认为简单关联是正确的选择?我会说Order-OrderDetail是一个组合。 - www.admiraalit.nl
@www.admiraalit.nl 当然这取决于情况。鉴于源(UML图表)只有一次机会:询问作者。他可能使用了“旧定义”,建议不要使用复合聚合。 - qwerty_so
1
我不知道为什么问了第二个问题,因为它显然是一个关联。非常感谢清晰的答案。 - ELOL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接