UML类图中的钻石符号表示什么?

89
考虑下面的两个图表。顶部图表在右端包含一个简单的箭头,底部图表在左端包含一个菱形和一个右端的简单箭头。 GoF大书 中使用了这两种类型的图表。
我想了解第二种情况下 菱形 的意义,并且这两种图表中哪一种更能够强烈地关联 CustomerOrder
在这两种情况下,Customer 类是否负责 Order 类的生命周期?

enter image description here enter image description here

3个回答

140
如果没有钻石,那么我们有一个简单的关联
如果钻石为空,则表示这是一种聚合。这种关系比简单的关联更强。在这种情况下,客户聚合订单。
如果钻石为黑色,则意味着这是一种组合,比聚合更加强大,因为组合类不能由其他类组成。它的"生命"取决于容器。
我认为这个解释更清晰一些,见:

25
客户和订单之间存在"有-包含"的组合关系,因为如果客户不存在,他/她的订单也就不存在了。因此,容器(客户)与该容器内实例(订单)之间存在生命周期依赖关系。当容器不存在时,容器内所有实例也都不存在了。
另一方面,如果客户拥有一本书,我们则称这种关系为"有-聚合"关系。因为即使客户不存在,书仍然可用。

10

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

在UML中,它以空心菱形的图形形式出现在树形结构的包含类端上,通过一条单线将所包含的类连接到包含类。聚合在语义上是一个扩展对象,在许多操作中被视为一个单位,虽然在物理上它由几个较小的对象组成。

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


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