分享:類圖的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
TAG:千鋒JAVA開發學院 |