聚合关系是关联关系的一种,表示一种“强”关联关系。对比与关联关系,两个类是处于同一个层次的。而聚合关系,两个类处于不同的层次,强调了一个整体/局部的关系。例如一辆汽车有一个引擎,4个轮胎。
在聚合关系中,体现了一种“弱拥有”的概念。也就是说,对象A拥有对象B,但B并不是A的组成部分。更具体的表现为,如果A由B聚合而成,则A包含B的全局对象,但B对象可以不在A对象创建时创建。回到前面的例子,汽车对象由轮胎对象聚合而成,但是轮胎对象的生命期并不受汽车对象的左右。当汽车对象销毁时,轮胎对象也可以单独存在!
下面是聚合关系的uml示意图:
从代码上看,聚合和关联没有任何区别。这里仅仅体现一种概念上的含义。在创建ClassA的时候,不一定需要同时创建ClassB的实例。
4.组合(Composition)
在uml中,组合关系表示为实心菱形箭头线。组合也叫合成。合成关系强调了比聚合关系更加强的整体/部分的关联,例如人和四肢。