81

考虑下面的两个图表。顶部的右端包含一个普通箭头,底部的左端包含一个带有菱形的箭头,右端包含一个普通箭头。伟大的书 GoF使用了这两种图表。

我想了解钻石在第二种情况下表示什么,以及这两种情况中的哪一种在Customer和之间给出了更强的关联Order

在这两种情况下,类是否Customer负责类的生命周期?Order

在此处输入图像描述 在此处输入图像描述

4

3 回答 3

117

如果没有钻石,那么我们就有了一个简单的关联

如果菱形为,则表示它是一个聚合。这种关系比简单的关联要强。在这种情况下,客户聚合订单。

如果菱形是黑色的,则表示它是一个组合,它比聚合还要强,因为聚合的类不能被其他类聚合。它的“生命”取决于容器。

我认为它解释得更清楚一点,在:

于 2013-02-28T17:35:34.553 回答
23

客户和订单是一种“有”的组合关系,因为如果客户不复存在,他/她的订单也会不复存在。因此,容器(客户)和该容器内的实例(订单)之间存在生命周期依赖关系。当容器不再存在时,它的所有实例也不再存在。

另一方面,如果我们说客户有一本书。在这种情况下,我们有一个“has-a”聚合关系。因为如果客户不复存在,这本书仍然可用。

于 2014-08-10T15:57:24.487 回答
9

它表示聚合。来自维基百科:

在 UML 中,它以图形方式表示为树的包含类末端上的空心菱形,用一条线将包含类连接到包含类。聚合在语义上是一个扩展对象,在许多操作中被视为一个单元,虽然它在物理上是由几个较小的物体组成的。

http://en.wikipedia.org/wiki/Class_diagram

于 2013-02-28T17:20:46.790 回答