1. 程式人生 > 其它 >UML類圖

UML類圖

技術標籤:設計模式(Java)設計模式java

一.UML圖

1.基本介紹

UML(Unified modeling language UML),即統一建模語言,是一種用於軟體系統分析和設計的語言工具,它用於幫助軟體開發人員進行思考和記錄思路的結果

UML本身是一套符號的規定,就像數學符號和化學符號一樣,這些符號用於描述軟體模型中的各個元素和他們之間的關係,比如類、介面、實現、泛化(繼承)、依賴、組合、聚合等。

2.UML圖分類

畫UML圖與寫文章差不多,都是把自己的思想描述給別人看,關鍵在於思路和條理

①用例圖(use case)
②靜態結構圖

類圖、物件圖、包圖、元件圖、部署圖

類圖是描述類與類之間的關係的,是UML圖中最核心的

③動態行為圖

互動圖(時序圖與協作圖)、狀態圖、活動圖

3.UML類圖

用於描述系統中的類(物件)本身的組成和類(物件)之間的各種靜態關係。

類之間的關係:依賴、泛化(繼承)、實現、關聯、組合與聚合

二.UML類圖各種關係

1.依賴關係

只要是在類中用到了對方,那麼他們之間就存在依賴關係。如果沒有對方,連編譯都通過不了。

具體程式碼

PersonServiceBean與PersonDao、Person 、IDCard 、Department 都是依賴關係

class PersonServiceBean{
    private PersonDao personDao;
public void save(Person person){ } public IDCard getIDCard(Integer personId){ return null; } public void modify(){ Department department = new Department(); } }

2.泛化關係

泛化關係實際上就是繼承關係,是依賴關係的特例

具體程式碼(很常見,不介紹了)

3.實現關係

實現關係實際上就是A類實現B類,也是依賴關係的特例

具體程式碼(很常見,不介紹了)

4.關聯關係(Association)

關聯關係實際上就是類與類之間的聯絡,也是依賴關係的特例
關聯關係具有導航性,即雙向關係或單向關係。同時還具有多重性。

單向1對1關係

在這裡插入圖片描述

雙向1對1關係

在這裡插入圖片描述

5.聚合關係(Aggregation)

表示的是整體和部分的關係,整體和部分可以分開,則表示聚合關係。
它是關聯關係的特例,也具有導航性與多重性

具體程式碼示例

電腦和滑鼠,顯示器其實是可以分開的,所以Computer類與Mouse 、Monitor其實是聚合關係

class Computer{
    private Mouse mouse;
    private Monitor monitor;
    
    public void setMouse(Mouse mouse){
        this.mouse = mouse;
    }
    
    public void setMonitor(Monitor monitor){
        this.monitor = monitor;
    }
}

6.組合關係(Composition)

如果我們認為電腦與滑鼠和顯示器不可分離,則電腦與滑鼠和顯示器是組合關係。
組合關係也是整體與部分的關係,但是整體與部分不可以分開,也是關聯關係的特例。

具體程式碼示例

在這裡,Computer一建立,Mouse與Monitor也同時會例項化,他們“共生共滅”,不可分離,所以是組合關係

class Computer{
    private Mouse mouse = new Mouse();
    private Monitor monitor = new Monitor();   
}
關於聚合與組合

Person和IDCard就是聚合,身份證丟了,人不一定死,還可以補辦一個。
但是Head和Person就是組合關係,人的頭沒了人一定就沒了。

public class Person{
    private IDCard card;
    private Head head = new Head();
}
特殊情況

但是如果在程式中Person實體類中定義了對IDCard進行級聯刪除(刪除一個物件也會把另外一個刪掉),即刪除Person時連同IDCard一起刪除,則IDCard和Person也是組合關係。即人沒了,身份證就可以一起消失,不存在於這個世界上了。從這個意義上講,人和身份證也是組合關係。總之只要體現“同生共死”這種就算是組合關係。