UML簡單介紹(十一)——協作圖的概念與例項完全解析
1、協作圖
協作圖是一種與時序圖語意類似的圖形,換句話說,它能表示的意思,使用時序圖都能表示。他們不同的地方在於,時序圖重在表示時間的順序關係,而協作圖重在表現物件之間的變化關係。
關於時序圖和協作圖的使用,兩者取其一即可,沒有必要兩者都用上。在非要使用兩者的情況下,也可以使用建模工具進行轉換。
2、事物
與之前介紹其它圖形類似,我們來看看協作圖的事物,如下表格:
3、關係
協作圖中的關係比較單一,實際上只有連結這一種。用線條來表示連結,連結表示兩個物件共享一個訊息,位於物件之間或者參與者物件之間。這裡不再展開做介紹說明。
4、標籤
訊息標籤的Format: [字首] [守衛條件] 序列表示式 [返回值 :=] 訊息名
字首的語法規則: 序列號,序列號,⋯,序列號 ‘/’
(字首用來同步執行緒,意思是在傳送當前訊息之前指定序列號的訊息被處理.例:1.1a, 1.1b/)
一個標籤的完整案例,如下圖:
5、兩個案例
我們先看看如下的一個簡單案例,這裡描述的是一個顧客去列印店列印東西的場景,如下圖:
整體的過程,可以描述為:actor傳送Print訊息給Computer,Computer傳送Print訊息給PrintServer,如果印表機空閒,PrintServer傳送Print訊息給printer。
我們再來看看另外一個案例,這裡描述了一個人乘坐電梯的全部過程,存在的事物主要包括參與者和電梯物件,其中參與者又包括按鈕物件、電梯控制物件、命令物件以及工作佇列,而其中的關係,就是連結關係了。如下圖所示:
我們將上面的圖形轉換為自然語言,可以描述為:參與者需要乘坐電梯,他從系統外部按下按鈕,讓電梯到達他想去的樓層。此時,電梯系統的操作被啟動,電梯控制物件以迴圈的方式檢查所有的電梯,從中選擇一個工作佇列長度最短的。然後,它建立一個作業命令,並將該命令放入對應電梯的工作佇列,接著啟用佇列。電梯物件併發執行,從它的佇列中選擇一個作業並執行。電梯是一個活動物件,它與它的控制執行緒併發執行。
6、與時序圖綜合
在開始介紹協作圖的時候,我們就說過,協作圖和時序圖表示的意思是一致的,兩者可以任選一個作為圖示物件即可,不必非要選兩個,這裡,我們將上面舉例中的乘坐電梯的協作圖,轉為時序圖,如下:
7、總結
協作圖和順序圖都表示出了物件間的互動作用,兩者之間也可以相互轉化,但是它們側重點不同:
1)順序圖清楚地表示了互動作用中的時間順序(強調時間),但沒有明確表示物件間的關係。
2)協作圖清楚地表示了物件間的關係(強調空間),但時間順序必須從順序號獲得。
當我們在具體使用兩者的時候,要依據具體的需求而定。
相關文章
- UML簡單介紹(十二)——活動圖基本概念與解析
- UML用例圖例項解析
- UML簡單介紹(十)——幾個時序圖的案例展示與分析時序圖
- Redux的簡單概念介紹Redux
- jQuery構造物件例項簡單介紹jQuery物件
- JavaScript單例模式概念與例項JavaScript單例模式
- javascript的靜態方法和例項方法簡單介紹JavaScript
- javascript遞迴概念簡單介紹JavaScript遞迴
- UML圖之協作圖(通訊圖)
- javascript中的閉包概念簡單介紹JavaScript
- Java CXF介紹與例項Java
- 簡單介紹PostgreSQL解析URL的方法SQL
- 簡單介紹正規表示式拆分url例項程式碼
- 簡單介紹Go 語言單例模式Go單例模式
- 簡單介紹 "&&" 與 “&” 和 ”|“ 與 ”||“ 的區別
- ajax實現跨域請求程式碼例項簡單介紹跨域
- jQuery外掛製作簡單介紹jQuery
- Android RecyclerView 簡介與例項AndroidView
- Angularjs製作簡單的路由功能簡單程式碼例項AngularJS路由
- javascript設計模式單例模式簡單介紹JavaScript設計模式單例
- jQuery實現的生成隨機密碼程式碼例項簡單介紹jQuery隨機密碼
- Disruptor的簡單介紹與應用
- 簡單介紹python深度學習tensorflow例項資料下載與讀取Python深度學習
- 簡單的圖神經網路介紹神經網路
- UML 架構圖入門介紹 starUML架構
- 技術寫作例項解析 | 簡潔即是美
- ajax載入xml檔案內容程式碼例項簡單介紹XML
- 一張圖讓你記住uml的常用關係的簡單圖例
- 策略模式與簡單java例項模式Java
- jquery解析json格式字串簡單介紹jQueryJSON字串
- js與&&運算子簡單介紹JS
- js動態修改元素中的內容程式碼例項簡單介紹JS
- javascript物件導向程式設計概念簡單介紹JavaScript物件程式設計
- 關於什麼是jsonp概念簡單介紹JSON
- css選擇器的解析順序簡單介紹CSS
- callee與caller的區別簡單介紹
- 簡單介紹Python drop方法刪除列之inplace引數例項Python
- Webpack 的簡單介紹Web