UML中類圖(Class Diagram)的關系整理


什么是UML類圖?

類圖顯示了一組類、接口、協作以及他們之間的關系。在UML中問題域最終要被逐步轉化,通過類來建模,通過編程語言構建這些類從而實現系統。類加上他們之間的關系就構成了類圖,類圖中還可以包含接口、包等元素,也可以包括對象、鏈等實例。

類與類之間的關系

1.依賴關系(Dependency)

單向,表示一個類依賴於另一個類的定義,其中一個類的變化將影響另外一個類,是一種“use a”的關系

如果A依賴於B,則B表現為A的局部變量方法參數靜態方法調用

public class Person {  
    public void doSomething(){  
        Card card = new Card();//局部變量  
        ....  
    }  
} 
public class Person {  
    public void doSomething(Card card){//方法參數  
        ....  
    }  
}  
public class Person {  
    public void doSomething(){  
        int id = Card.getId();//靜態方法調用  
        ...  
    }  
}  

2.關聯關系(Association)

單向或雙向(通常我們需要避免使用雙向關聯關系),是一種"has a"關系,如果A單向關聯B,則可以說A has a B,通常表現為全局變量

public class Person {  
    public Phone phone;  
      
    public void setPhone(Phone phone){        
        this.phone = phone;  
    }  
      
    public Phone getPhone(){          
        return phone;  
    }  
}  

3.聚合關系(Aggregation)

單向關聯關系的一種,與關聯關系之間的區別語義上的,關聯的兩個對象通常是平等的,聚合則一般不平等,有一種整體和局部的感覺,實現上區別不大

此處也有空心的菱形加箭頭表示,此處無箭頭

Team由Person組成,其生命周期不同,整體不存在了,部分依然存在,當前Team解散了,人還在,還可以加入別的組

public class Team {  
    public Person person;  
      
    public Team(Person person){  
        this.person = person;  
    }  
}  

4.組合關系(Composition)

單向,是一種強依賴的特殊聚合關系

此處也有實心的菱形加箭頭表示,此處無箭頭

Head,Body,Arm和Leg組合成People,其生命周期相同,如果整體不存在了,部分也將消亡

public class Person {  
    public Head head;  
    public Body body;  
    public Arm arm;  
    public Leg leg;  
      
    public Person(){  
        head = new Head();  
        body = new Body();  
        arm = new Arm();  
        leg = new Leg();  
    }  
}  

5.繼承關系(Inheritance)

類實現接口,類繼承抽象類,類繼承父類都屬於這種關系

 

實現(Realization):即"like a"關系,類實現接口屬於這種關系

泛化(Generalization):即"is a"關系,類繼承抽象類,類繼承父類都屬於這種關系

總結:

類與類之間的關系可以根據關系的強度依次分為以下五種:

依賴關系(Dependency)---關聯關系(Association)---聚合(Aggregation)---組合(Composition)---泛化(inheritance)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM