UML 剖析(2) —— 類圖關聯和時序圖

UML 剖析(2) —— 類圖關聯和時序圖

上篇文章講解完類圖實體,現在講解類圖關聯,如果沒閱讀過類圖實體的那篇文章,鏈接在這:UML 剖析(1) —— 類圖實體 ,這節繼續還是使用 StarUML 來講解。

1. 類圖關聯

 

Classes(Basic)

 

 

下面一個一個講解上圖的關聯屬性。

1.2 Association

Association 是雙向關聯的意思,比如老師與學生就是一個雙向關聯的關係。舉例如下:

 

Association

 

 

上面這個圖 Student 的 1..* 的意思一個到多個的意思,也就是代表一個 Teacher 對象對應多個 Student。

1.3 Directed Association

這個關聯是有方向關聯的意思,舉例圖如下:

 

Directed Association

 

 

這個的意思是就是被關聯類 B 以類屬性出現在類 A。

1.4 Aggregation

這個是聚合的意思,體現了整體和部分的關係。

 

Aggregation

 

 

上圖的意思就是一個 School 類擁有一個或多個 Student 類。

1.5 Composition

是一種比 Aggregation 更強的聚合關係,類似於孕婦與胎兒的關係,胎兒是依附於孕婦的,如果孕婦死了,胎兒也不能生存。舉例如圖:

 

Composition

 

 

1.6 Dependency

這個的意思其實就是一個類依賴另一個類,舉例來說就是一個類作爲參數在另一個類的方法中作爲調用。

 

Dependency

 

 

1.7 Generalization

這個的意思是泛化關係,表示一個類對另一個類的繼承。下圖就是 A 繼承 B 的意思。

 

Generalization

 

 

1.8 Interface Realization

這個也非常簡單,就是接口實現的意思。舉例如下圖:

 

Interface Realization

 

 

2. 時序圖

2.1 定義

時序圖其實就是對象之間傳遞消息的時間順序。現在還是使用 StarUML 來講解時序圖的元素。

 

 

 

 

2.2 Lifeline

這個的意思就是一個對象,舉例如下圖:

 

Lifeline

 

 

2.3 Message

這個的意思就是發送一條普通消息,比如用戶發送一條登錄的消息給服務器,舉例如下圖:

 

Message

 

 

2.4 Self Message

這個的意思就是自己發送消息給自己,比如一個對象的一個方法調用了本對象的另一個方法,舉例如下圖:

 

Self Message

 

 

2.5 Async Message

這個的意思是異步消息,舉例如下圖:

 

Async Message

 

 

這個圖的意思就是 User 發出 Login 的消息給 Server,Server 發送保存用戶消息給到數據庫,注意這裏的消息是異步消息。

2.6 Reply Message

這裏的意思是回調消息,舉例如下圖:

 

Reply Message

 

 

上圖的意思就是 User 發出 Login 的消息給 Server 後,Server 同時發出異步消息給數據庫和登錄結果給到用戶。

2.7 Create Message

這個的意思就是創建一個對象,舉例如下圖:

 

Create Message

 

 

2.8 Delete Message

這個的意思是銷燬一個對象,舉例如下圖:

 

Delete Message

 

 

2.9 Async Signal Message

這個的意思就是發送一個信號消息,意思就是當某個對象達到某個條件後就會自動發送一個信號消息給另一個對象,類似於觀察者模式。

 

Async Signal Message

 

 

2.10 Found Message

這個的意思就是發送一個不知道來源的消息,舉例如下圖:

 

Found Message

 

 

2.11 Lost Message

這個的意思就是消息發送到一個不知道來源的地方,也可以說消息沒有到達目的地,舉例如下圖:

 

Lost Message

 

 

2.12 Endpoint

這個的意思就是一個不知來源的消息對象,如下圖:

 

Endpoint

 

 

2.13 Gate

這個的意思用於在時序圖外與圖內的消息交互,舉例如下圖:

 

Gate

 

 

上圖的正方形就是 Gate。

2.14 State Invariant

這個的意思就是約束某個對象要在某一個狀態下,舉例如下圖:

 

State Invariant

 

 

這個的意思就是說在 start 開始前,Task 必須要在 Finish 狀態。

2.15 Combined Fragment

這個的翻譯叫組合片段,它是用來解決交互執行的條件和方式。 組合片段常用的有這麼幾種:

類型 名稱 說明
alt(alternatives) 選擇 包含一個片段列表,這個片段列表有備選的消息序列,每次只能走一個消息序列
opt(option) 選項 包含一個可能會發生的消息序列
loop(iteration) 重複 包含一個可以重複的消息序列
par(parallel) 並行 包含一個可以並行的消息序列
break(break) 中斷 如果執行了此部分則放棄了序列的其他部分的執行,可用於中斷 loop 片段

以下來各自舉例說明:

2.15.1 alt(alternatives)

 

alt(alternatives)

 

 

上圖的意思就是當滿足了 a > 1 條件後,就會執行 Message1,否則執行 Message2。

2.15.2 opt(option)

 

opt(option)

 

 

上圖的意思就是當滿足了 a > 1 條件後,纔會執行 Message1。

2.15.3 loop(iteration)

 

loop(iteration)

 

 

上圖的意思是不停重複發送 Message1 消息。如果要限定 loop 的次數的話也可以按下圖這樣:

 

loop(10)

 

 

這樣就代表這個循環重複了 10 次。

2.15.4 par(parallel)

 

par(parallel)

 

 

上圖的意思就是並行發送三條消息。

2.15.6 break(break)

 

break(break)

 

 

上圖的意思就是當 a > 0 時,就會跳出循環,發送消息到 ClassC。

常用的組合片段大概就是這些,如果各位對其他片段有興趣的話,可以自行研究,這裏就不再細說了。

2.16 Continuation

 

Continuation

 

 

這個的意思用來表示這個序列的作用。

2.17 Interaction Use

這個的意思就是用來描述兩個對象的交互現象,舉例如下:

 

Interaction Use

 

 

這個的意思就是 User 和 UserManager 的交互結果,User 使用 id 和 password 作爲參數,UserManager 返回 result 作爲 結果。

參考書籍與文章:

《UML和模式應用》

《大象:Thinking in UML》

UML Message

UML Sequence Diagrams

 

 

原文:https://juejin.im/post/5a69857a6fb9a01c952647e1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章