上篇文章講解完類圖實體,現在講解類圖關聯,如果沒閱讀過類圖實體的那篇文章,連結在這:UML 剖析(1) —— 類圖實體 ,這節繼續還是使用 StarUML 來講解。
1. 類圖關聯
下面一個一個講解上圖的關聯屬性。
1.2 Association
Association 是雙向關聯的意思,比如老師與學生就是一個雙向關聯的關係。舉例如下:
上面這個圖 Student 的 1..* 的意思一個到多個的意思,也就是代表一個 Teacher 物件對應多個 Student。
1.3 Directed Association
這個關聯是有方向關聯的意思,舉例圖如下:
這個的意思是就是被關聯類 B 以類屬性出現在類 A。
1.4 Aggregation
這個是聚合的意思,體現了整體和部分的關係。
上圖的意思就是一個 School 類擁有一個或多個 Student 類。
1.5 Composition
是一種比 Aggregation 更強的聚合關係,類似於孕婦與胎兒的關係,胎兒是依附於孕婦的,如果孕婦死了,胎兒也不能生存。舉例如圖:
1.6 Dependency
這個的意思其實就是一個類依賴另一個類,舉例來說就是一個類作為引數在另一個類的方法中作為呼叫。
1.7 Generalization
這個的意思是泛化關係,表示一個類對另一個類的繼承。下圖就是 A 繼承 B 的意思。
1.8 Interface Realization
這個也非常簡單,就是介面實現的意思。舉例如下圖:
2. 時序圖
2.1 定義
時序圖其實就是物件之間傳遞訊息的時間順序。現在還是使用 StarUML 來講解時序圖的元素。
2.2 Lifeline
這個的意思就是一個物件,舉例如下圖:
2.3 Message
這個的意思就是傳送一條普通訊息,比如使用者傳送一條登入的訊息給伺服器,舉例如下圖:
2.4 Self Message
這個的意思就是自己傳送訊息給自己,比如一個物件的一個方法呼叫了本物件的另一個方法,舉例如下圖:
2.5 Async Message
這個的意思是非同步訊息,舉例如下圖:
這個圖的意思就是 User 發出 Login 的訊息給 Server,Server 傳送儲存使用者訊息給到資料庫,注意這裡的訊息是非同步訊息。
2.6 Reply Message
這裡的意思是回撥訊息,舉例如下圖:
上圖的意思就是 User 發出 Login 的訊息給 Server 後,Server 同時發出非同步訊息給資料庫和登入結果給到使用者。
2.7 Create Message
這個的意思就是建立一個物件,舉例如下圖:
2.8 Delete Message
這個的意思是銷燬一個物件,舉例如下圖:
2.9 Async Signal Message
這個的意思就是傳送一個訊號訊息,意思就是當某個物件達到某個條件後就會自動傳送一個訊號訊息給另一個物件,類似於觀察者模式。
2.10 Found Message
這個的意思就是傳送一個不知道來源的訊息,舉例如下圖:
2.11 Lost Message
這個的意思就是訊息傳送到一個不知道來源的地方,也可以說訊息沒有到達目的地,舉例如下圖:
2.12 Endpoint
這個的意思就是一個不知來源的訊息物件,如下圖:
2.13 Gate
這個的意思用於在時序圖外與圖內的訊息互動,舉例如下圖:
上圖的正方形就是 Gate。
2.14 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)
上圖的意思就是當滿足了 a > 1 條件後,就會執行 Message1,否則執行 Message2。
2.15.2 opt(option)
上圖的意思就是當滿足了 a > 1 條件後,才會執行 Message1。
2.15.3 loop(iteration)
上圖的意思是不停重複傳送 Message1 訊息。如果要限定 loop 的次數的話也可以按下圖這樣:
這樣就代表這個迴圈重複了 10 次。
2.15.4 par(parallel)
上圖的意思就是並行傳送三條訊息。
2.15.6 break(break)
上圖的意思就是當 a > 0 時,就會跳出迴圈,傳送訊息到 ClassC。
常用的組合片段大概就是這些,如果各位對其他片段有興趣的話,可以自行研究,這裡就不再細說了。
2.16 Continuation
這個的意思用來表示這個序列的作用。
2.17 Interaction Use
這個的意思就是用來描述兩個物件的互動現象,舉例如下:
這個的意思就是 User 和 UserManager 的互動結果,User 使用 id 和 password 作為引數,UserManager 返回 result 作為 結果。
參考書籍與文章: