UML(3)——聚合与组合

组合中部分和全体唇亡齿寒的关系,有部分的存在,全体才称之为全体,每一个实例都是其固有特性;
聚合中部分的每一个实例都不是全体的固有特性,能够有千千万万个部分实例,只要有一个部分的实例存在,聚合关系造成的全体仍然是其自己。
聚自己就暗示了类似的、同样的,不少类似的东西合在一块儿,谓之聚。
组合并不强调类似的东西合而为一,暗示了丰富性,多个不一样类型的部分组成了一个独一无二的全体。
web

聚合关系(aggregation)

聚合关系用一条带空心菱形箭头的直线表示,以下图表示A聚合到B上,或者说B由A组成;svg

_images/uml_aggregation.jpg
聚合关系用于表示实体对象之间的关系,表示总体由部分构成的语义;例如一个部门由多个员工组成;3d

与组合关系不一样的是,总体和部分不是强依赖的,即便总体不存在了,部分仍然存在;例如, 部门撤销了,人员不会消失,他们依然存在;xml

组合关系(composition)

组合关系用一条带实心菱形箭头直线表示,以下图表示A组成B,或者B由A组成;对象

_images/uml_composition.jpg
与聚合关系同样,组合关系一样表示总体由部分构成的语义;好比公司由多个部门组成;blog

但组合关系是一种强依赖的特殊聚合关系,若是总体不存在了,则部分也不存在了;例如, 公司不存在了,部门也将不存在了;图片

菱形

首先, 菱形表明的意思就是全体 - 部分的关系。也就是说无论实心仍是空心,都表明全体 - 部分 / part - of 的含义。it

  • 空心,全体和部分的链接能够是宽松的,全体和部分能够相互脱离独立存在。
  • 实心,全体和部分的链接是强关联

空心菱形(聚合关系)的准确含义

在UML1.3时代,空心菱形被称为共有聚合。即 多个全体的实例,能够共同拥有1个部分的实例 的意思。 全体和部分的链接能够是宽松的,全体和部分能够相互脱离独立存在。 UML2起叫虽然称之为聚合,但自己的含义并未改变。
在这里插入图片描述
例如: 图形拥有样式,能够把这个认为是全体 - 部分的关系
1个样式实例,能够被多个图形实例所拥有, 图形实例也能够不拥有样式
样式实例也能够脱离图形io

实心菱形(组合关系)的准确含义

实心菱形里的部分不能被其余全体实例的对象所所拥有。
即 1个部分实例只能被惟一1个全体实例所持有 。
且能够认为部分和全体拥有一个共同的生存周期,当全体被删除,部分也被连带删除。 但在全体删除前移除部分,是能够免去连带删除全体。在这里插入图片描述
例如: 车和轮胎,也能够认为是全体 - 部分的关系;
1个轮胎实例,只能被1个车实例拥有 ;
车报废时,轮胎也跟着报废 ;
在车报废前,能够将轮胎拆除,转移到别的车下 。webkit