• 聚合和组合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. }  
  • 相关阅读:
    bzoj 1004 burnside 引理+DP
    bzoj 3453 数论
    HDU 2899 三分
    HDU 2199 二分
    bzoj 3450 DP
    bzoj 1197 DP
    bzoj 2121 DP
    bzoj 2258 splay
    bzoj 1296 DP
    Memcached的限制和使用建议
  • 原文地址:https://www.cnblogs.com/lnas01/p/5749877.html
Copyright © 2020-2023  润新知