天天看點

UML簡單介紹(十一)——協作圖的概念與執行個體完全解析

1、協作圖

        協作圖是一種與時序圖語意類似的圖形,換句話說,它能表示的意思,使用時序圖都能表示。他們不同的地方在于,時序圖重在表示時間的順序關系,而協作圖重在表現對象之間的變化關系。

        關于時序圖和協作圖的使用,兩者取其一即可,沒有必要兩者都用上。在非要使用兩者的情況下,也可以使用模組化工具進行轉換。

2、事物

與之前介紹其它圖形類似,我們來看看協作圖的事物,如下表格:

UML簡單介紹(十一)——協作圖的概念與執行個體完全解析

3、關系

協作圖中的關系比較單一,實際上隻有連結這一種。用線條來表示連結,連結表示兩個對象共享一個消息,位于對象之間或者參與者對象之間。這裡不再展開做介紹說明。

4、标簽

消息标簽的Format:        [字首]  [守衛條件]  序清單達式   [傳回值 :=] 消息名

字首的文法規則:    序列号,序列号,⋯,序列号 ‘/’

(字首用來同步線程,意思是在發送目前消息之前指定序列号的消息被處理.例:1.1a, 1.1b/)

一個标簽的完整案例,如下圖:

UML簡單介紹(十一)——協作圖的概念與執行個體完全解析

5、兩個案例

我們先看看如下的一個簡單案例,這裡描述的是一個顧客去列印店列印東西的場景,如下圖:

UML簡單介紹(十一)——協作圖的概念與執行個體完全解析

整體的過程,可以描述為:actor發送Print消息給Computer,Computer發送Print消息給PrintServer,如果列印機空閑,PrintServer發送Print消息給printer。

        我們再來看看另外一個案例,這裡描述了一個人乘坐電梯的全部過程,存在的事物主要包括參與者和電梯對象,其中參與者又包括按鈕對象、電梯控制對象、指令對象以及工作隊列,而其中的關系,就是連結關系了。如下圖所示:

UML簡單介紹(十一)——協作圖的概念與執行個體完全解析

        我們将上面的圖形轉換為自然語言,可以描述為:參與者需要乘坐電梯,他從系統外部按下按鈕,讓電梯到達他想去的樓層。此時,電梯系統的操作被啟動,電梯控制對象以循環的方式檢查所有的電梯,從中選擇一個工作隊列長度最短的。然後,它建立一個作業指令,并将該指令放入對應電梯的工作隊列,接着激活隊列。電梯對象并發運作,從它的隊列中選擇一個作業并執行。電梯是一個活動對象,它與它的控制線程并發執行。

6、與時序圖綜合

在開始介紹協作圖的時候,我們就說過,協作圖和時序圖表示的意思是一緻的,兩者可以任選一個作為圖示對象即可,不必非要選兩個,這裡,我們将上面舉例中的乘坐電梯的協作圖,轉為時序圖,如下:

UML簡單介紹(十一)——協作圖的概念與執行個體完全解析

7、總結

協作圖和順序圖都表示出了對象間的互動作用,兩者之間也可以互相轉化,但是它們側重點不同:

1)順序圖清楚地表示了互動作用中的時間順序(強調時間),但沒有明确表示對象間的關系。

2)協作圖清楚地表示了對象間的關系(強調空間),但時間順序必須從順序号獲得。

當我們在具體使用兩者的時候,要依據具體的需求而定。