上篇文章講解完類圖實體,如今講解類圖關聯,若是沒閱讀過類圖實體的那篇文章,連接在這:UML 剖析(1) —— 類圖實體 ,這節繼續仍是使用 StarUML 來說解。html
下面一個一個講解上圖的關聯屬性。數據庫
Association 是雙向關聯的意思,好比老師與學生就是一個雙向關聯的關係。舉例以下:服務器
上面這個圖 Student 的 1..* 的意思一個到多個的意思,也就是表明一個 Teacher 對象對應多個 Student。異步
這個關聯是有方向關聯的意思,舉例圖以下:oop
這個的意思是就是被關聯類 B 以類屬性出如今類 A。post
這個是聚合的意思,體現了總體和部分的關係。翻譯
上圖的意思就是一個 School 類擁有一個或多個 Student 類。3d
是一種比 Aggregation 更強的聚合關係,相似於孕婦與胎兒的關係,胎兒是依附於孕婦的,若是孕婦死了,胎兒也不能生存。舉例如圖:cdn
這個的意思其實就是一個類依賴另外一個類,舉例來講就是一個類做爲參數在另外一個類的方法中做爲調用。htm
這個的意思是泛化關係,表示一個類對另外一個類的繼承。下圖就是 A 繼承 B 的意思。
這個也很是簡單,就是接口實現的意思。舉例以下圖:
時序圖其實就是對象之間傳遞消息的時間順序。如今仍是使用 StarUML 來說解時序圖的元素。
這個的意思就是一個對象,舉例以下圖:
這個的意思就是發送一條普通消息,好比用戶發送一條登陸的消息給服務器,舉例以下圖:
這個的意思就是本身發送消息給本身,好比一個對象的一個方法調用了本對象的另外一個方法,舉例以下圖:
這個的意思是異步消息,舉例以下圖:
這個圖的意思就是 User 發出 Login 的消息給 Server,Server 發送保存用戶消息給到數據庫,注意這裏的消息是異步消息。
這裏的意思是回調消息,舉例以下圖:
上圖的意思就是 User 發出 Login 的消息給 Server 後,Server 同時發出異步消息給數據庫和登陸結果給到用戶。
這個的意思就是建立一個對象,舉例以下圖:
這個的意思是銷燬一個對象,舉例以下圖:
這個的意思就是發送一個信號消息,意思就是當某個對象達到某個條件後就會自動發送一個信號消息給另外一個對象,相似於觀察者模式。
這個的意思就是發送一個不知道來源的消息,舉例以下圖:
這個的意思就是消息發送到一個不知道來源的地方,也能夠說消息沒有到達目的地,舉例以下圖:
這個的意思就是一個不知來源的消息對象,以下圖:
這個的意思用於在時序圖外與圖內的消息交互,舉例以下圖:
上圖的正方形就是 Gate。
這個的意思就是約束某個對象要在某一個狀態下,舉例以下圖:
這個的意思就是說在 start 開始前,Task 必需要在 Finish 狀態。
這個的翻譯叫組合片斷,它是用來解決交互執行的條件和方式。 組合片斷經常使用的有這麼幾種:
類型 | 名稱 | 說明 |
---|---|---|
alt(alternatives) | 選擇 | 包含一個片斷列表,這個片斷列表有備選的消息序列,每次只能走一個消息序列 |
opt(option) | 選項 | 包含一個可能會發生的消息序列 |
loop(iteration) | 重複 | 包含一個能夠重複的消息序列 |
par(parallel) | 並行 | 包含一個能夠並行的消息序列 |
break(break) | 中斷 | 若是執行了此部分則放棄了序列的其餘部分的執行,可用於中斷 loop 片斷 |
如下來各自舉例說明:
上圖的意思就是當知足了 a > 1 條件後,就會執行 Message1,不然執行 Message2。
上圖的意思就是當知足了 a > 1 條件後,纔會執行 Message1。
上圖的意思是不停重複發送 Message1 消息。若是要限定 loop 的次數的話也能夠按下圖這樣:
這樣就表明這個循環重複了 10 次。
上圖的意思就是並行發送三條消息。
上圖的意思就是當 a > 0 時,就會跳出循環,發送消息到 ClassC。
經常使用的組合片斷大概就是這些,若是各位對其餘片斷有興趣的話,能夠自行研究,這裏就再也不細說了。
這個的意思用來表示這個序列的做用。
這個的意思就是用來描述兩個對象的交互現象,舉例以下:
這個的意思就是 User 和 UserManager 的交互結果,User 使用 id 和 password 做爲參數,UserManager 返回 result 做爲 結果。
參考書籍與文章: