UML簡單介紹(十一)——協作圖的概念與例項完全解析

ljtyzhr發表於2015-06-04

1、協作圖

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

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


2、事物

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



3、關係

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


4、標籤

訊息標籤的Format:        [字首]  [守衛條件]  序列表示式   [返回值 :=] 訊息名

字首的語法規則:    序列號,序列號,⋯,序列號 ‘/’

(字首用來同步執行緒,意思是在傳送當前訊息之前指定序列號的訊息被處理.例:1.1a, 1.1b/)

一個標籤的完整案例,如下圖:


5、兩個案例

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


整體的過程,可以描述為:actor傳送Print訊息給Computer,Computer傳送Print訊息給PrintServer,如果印表機空閒,PrintServer傳送Print訊息給printer。

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


        我們將上面的圖形轉換為自然語言,可以描述為:參與者需要乘坐電梯,他從系統外部按下按鈕,讓電梯到達他想去的樓層。此時,電梯系統的操作被啟動,電梯控制物件以迴圈的方式檢查所有的電梯,從中選擇一個工作佇列長度最短的。然後,它建立一個作業命令,並將該命令放入對應電梯的工作佇列,接著啟用佇列。電梯物件併發執行,從它的佇列中選擇一個作業並執行。電梯是一個活動物件,它與它的控制執行緒併發執行。


6、與時序圖綜合

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


7、總結

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

1)順序圖清楚地表示了互動作用中的時間順序(強調時間),但沒有明確表示物件間的關係。

2)協作圖清楚地表示了物件間的關係(強調空間),但時間順序必須從順序號獲得。

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


相關文章