類圖cdn
如下類圖使用 PlantUML 繪製,更多語法及使用請參考:http://plantuml.com/ 。對象
泛化關係 (Generalization)blog
用來描述繼承關係,在 Java 中使用 extends 關鍵字。繼承
@startuml接口
title Generalizationci
class Vihicalit
class Cario
class Trunckclass
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 對 一、多對 一、多對多這種關聯關係來表示。好比學生和學校就是一種關聯關係,一個學校能夠有不少學生,可是一個學生只屬於一個學校,所以這是一種多對一的關係,在運行開始以前就能夠肯定。
@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