當前位置:
首頁 > 知識 > 分享:類圖的6大關係詳解

分享:類圖的6大關係詳解

類圖

以下類圖使用 PlantUML 繪製,更多語法及使用請參考:http://plantuml.com/ 。

泛化關係 (Generalization)

用來描述繼承關係,在 Java 中使用 extends 關鍵字。

@startuml

title Generalization

class Vihical

class Car

class Trunck

Vihical |-- Car

Vihical |-- Trunck

@enduml

實現關係 (Realization)

用來實現一個介面,在 Java 中使用 implements 關鍵字。

@startuml

title Realization

interface MoveBehavior

class Fly

class Run

MoveBehavior |.. Fly

MoveBehavior |.. Run

@enduml

聚合關係 (Aggregation)

表示整體由部分組成,但是整體和部分不是強依賴的,整體不存在了部分還是會存在。

@startuml

title Aggregation

class Computer

class Keyboard

class Mouse

class Screen

Computer o-- Keyboard

Computer o-- Mouse

Computer o-- Screen

@enduml

組合關係 (Composition)

和聚合不同,組合中整體和部分是強依賴的,整體不存在了部分也不存在了。比如公司和部門,公司沒了部門就不存在了。但是公司和員工就屬於聚合關係了,因為公司沒了員工還在。

@startuml

title Composition

class Company

class DepartmentA

class DepartmentB

Company *-- DepartmentA

Company *-- DepartmentB

@enduml

關聯關係 (Association)

表示不同類對象之間有關聯,這是一種靜態關係,與運行過程的狀態無關,在最開始就可以確定。因此也可以用 1 對 1、多對 1、多對多這種關聯關係來表示。比如學生和學校就是一種關聯關係,一個學校可以有很多學生,但是一個學生只屬於一個學校,因此這是一種多對一的關係,在運行開始之前就可以確定。

@startuml

title Association

class School

class Student

School 1 - n Student

@enduml

依賴關係 (Dependency)

和關聯關係不同的是,依賴關係是在運行過程中起作用的。A 類和 B 類是依賴關係主要有三種形式:

A 類是 B 類方法的局部變數;

A 類是 B 類方法當中的一個參數;

A 類向 B 類發送消息,從而影響 B 類發生變化。

@startuml

title Dependency

class Vihicle {

move(MoveBehavior)

}

interface MoveBehavior {

move()

}

note MoveBehavior.move() as N

Vihicle .. MoveBehavior

Vihicle .. N

@enduml

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

技術分析:搞懂鏈路追蹤

TAG:千鋒JAVA開發學院 |