類圖的6大關係詳解

類圖

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

泛化關係 (Generalization)

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

@startuml

title Generalization

class Vihical
class Car
class Trunck

Vihical <|-- Car
Vihical <|-- Trunck

@enduml複製代碼

實現關係 (Realization)

用來實現一個接口,在 Java 中使用 implements 關鍵字。3d

@startuml

title Realization

interface MoveBehavior
class Fly
class Run

MoveBehavior <|.. Fly
MoveBehavior <|.. Run

@enduml複製代碼

聚合關係 (Aggregation)

表示總體由部分組成,可是總體和部分不是強依賴的,總體不存在了部分仍是會存在。code

@startuml

title Aggregation

class Computer
class Keyboard
class Mouse
class Screen

Computer o-- Keyboard
Computer o-- Mouse
Computer o-- Screen

@enduml複製代碼

組合關係 (Composition)

和聚合不一樣,組合中總體和部分是強依賴的,總體不存在了部分也不存在了。好比公司和部門,公司沒了部門就不存在了。可是公司和員工就屬於聚合關係了,由於公司沒了員工還在。cdn

@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

@endumlblog

依賴關係 (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複製代碼
相關文章
相關標籤/搜索