zoukankan      html  css  js  c++  java
  • 聚合和组合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. }  
  • 相关阅读:
    因子和阶乘
    周期串
    字符串~键盘错位
    6174问题
    HDU_1015——撬锁,5循环
    HDU_1372——骑士移动,二维空间BFS
    HDU_1372——骑士移动,BFS非模版
    HDU_2001——计算两点之间的距离
    HDU_2212
    HDU_1999——不可摸数
  • 原文地址:https://www.cnblogs.com/lnas01/p/5749877.html
Copyright © 2011-2022 走看看