如下類圖使用 PlantUML 繪製,更多語法及使用請參考:plantuml.com/ 。bash
用來描述繼承關係,在 Java 中使用 extends 關鍵字。spa
@startuml
title Generalization
class Vihical
class Car
class Trunck
Vihical <|-- Car
Vihical <|-- Trunck
@enduml複製代碼
用來實現一個接口,在 Java 中使用 implements 關鍵字。3d
@startuml
title Realization
interface MoveBehavior
class Fly
class Run
MoveBehavior <|.. Fly
MoveBehavior <|.. Run
@enduml複製代碼
表示總體由部分組成,可是總體和部分不是強依賴的,總體不存在了部分仍是會存在。code
@startuml
title Aggregation
class Computer
class Keyboard
class Mouse
class Screen
Computer o-- Keyboard
Computer o-- Mouse
Computer o-- Screen
@enduml複製代碼
和聚合不一樣,組合中總體和部分是強依賴的,總體不存在了部分也不存在了。好比公司和部門,公司沒了部門就不存在了。可是公司和員工就屬於聚合關係了,由於公司沒了員工還在。cdn
@startuml
title Composition
class Company
class DepartmentA
class DepartmentB
Company *-- DepartmentA
Company *-- DepartmentB
@enduml複製代碼
表示不一樣類對象之間有關聯,這是一種靜態關係,與運行過程的狀態無關,在最開始就能夠肯定。所以也能夠用 1 對 一、多對 一、多對多這種關聯關係來表示。好比學生和學校就是一種關聯關係,一個學校能夠有不少學生,可是一個學生只屬於一個學校,所以這是一種多對一的關係,在運行開始以前就能夠肯定。對象
@startuml
title Association
class School
class Student
School "1" - "n" Student
@endumlblog
和關聯關係不一樣的是,依賴關係是在運行過程當中起做用的。A 類和 B 類是依賴關係主要有三種形式:繼承
@startuml
title Dependency
class Vihicle {
move(MoveBehavior)
}
interface MoveBehavior {
move()
}
note "MoveBehavior.move()" as N
Vihicle ..> MoveBehavior
Vihicle .. N
@enduml複製代碼