聚合和组合UML

聚合关系

      聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。例如:汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系,如图6所示:

图6  聚合关系实例

      在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中,图6对应的Java代码片段如下:

[java] view plain copy
  1. public class Car {  
  2.     private Engine engine;  
  3.   
  4.     //构造注入  
  5.     public Car(Engine engine) {  
  6.         this.engine = engine;  
  7.     }  
  8.       
  9.     //设值注入  
  10. public void setEngine(Engine engine) {  
  11.     this.engine = engine;  
  12. }  
  13. ……  
  14. }  
  15.   
  16. public class Engine {  
  17.     ……  
  18. }  

 

 

 组合关系

      组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。在UML中,组合关系用带实心菱形的直线表示。例如:人的头(Head)与嘴巴(Mouth),嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就没了,因此头和嘴巴是组合关系,如图7所示:

图7  组合关系实例

      在代码实现组合关系时,通常在整体类的构造方法中直接实例化成员类,图7对应的Java代码片段如下:

[java] view plain copy
  1. public class Head {  
  2.     private Mouth mouth;  
  3.   
  4.     public Head() {  
  5.         mouth = new Mouth(); //实例化成员类  
  6.     }  
  7. ……  
  8. }  
  9.   
  10. public class Mouth {  
  11.     ……  
  12. }  
原文地址:https://www.cnblogs.com/lnas01/p/5749877.html