協作圖包含壹組對象和以消息交互為聯系的關聯,用於描述系統的行為是如何由系統的成分合作實現的。在協作圖中,類元角色描述了壹個對象,關聯角色描述了協作關系中的鏈,並通過幾何排列表現交互作用中的各個角色。
協作圖的含義
所謂協作,是指在壹定的語境中壹組對象以及用以實現某些行為的這些對象間的相互作用。它描述了這樣壹組對象為實現某種目的而組成相互合作的“對象社會”。在協作中,它同時包含了運行時的類元角色(Classifier Roles)和關聯角色(Association Roles)。類元角色表示參與協作執行的對象描述,系統中的對象可以參與壹個或多個協作;關聯角色表示參與協作執行的關聯的描述。
協作圖就是表現對象協作關系的圖,它表示了協作中作為各種類元角色的對象所處的位置,在圖中主要顯示了類元角色和關聯角色。類元角色和關聯角色描述了對象的配置和當壹個協作的實例執行時可能出現的連接。當協作被實例化時,對象受限於類元角色,連接受限於關聯角色。
從結構方面來講:
協作圖和對象圖壹樣,包含了壹個角色集合和它們之間定義行為方面的內容的關系,從這個角度來說,協作圖也是類圖的壹種,但是協作圖與類圖這種靜態視圖不同的是,靜態視圖描述了類固有的內在屬性,而協作圖則描述了類實例的特性,因為只有對象的實例才能在協作中扮演自己的角色,它再協作中起了特殊的作用。
從行為方面來講:
協作圖和序列圖壹樣,包含了壹系列的消息集合,這些消息在具有某壹角色的各對象間進行傳遞交換,完成協作中的對象則為達到的目標。可以說在協作圖的壹個協作中描述了該協作所有對象組成的網絡結構以及相互發送消息的整體行為,表示潛藏於計算過程中的三個主要結構的統壹,即數據結構、控制流和數據流的統壹。
協作圖的作用
協作圖作為壹種在給定語境中描述協作中各個對象之間組織交互關系的控件阻止結構的圖形化方式,在使用其建模時,可以將其作用分為以下三個方面。
通過描繪對象間消息的傳遞情況來反映具體的使用語境的邏輯表達。壹個使用情境的邏輯可能是壹個用例的壹部分,或是壹條控制流,這個序列圖的作用類似。
顯示對象及其交互關系的控件阻止結構。協作圖顯示了在交互過程中各個對象之間的阻止交互關系以及對象彼此之間的連接。與序列圖不同,協作圖顯示的是對象之間的關系,並不是側重交互的順序,它沒有將時間作為壹個單獨的維度,而是使用序列號來確定消息及並發線程的順序。
協作圖的另外壹個作用是表現壹個類操作的實現。協作圖可以說明類操作中使用到的參數、局部變量以及返回值等。當使用協作圖表現壹個系統行為時,消息編號對應了程序中的嵌套調用結構和信號傳遞過程。
組成協作圖的元素
對象(Object)、消息(Message)和鏈(Link)這三個元素構成了協作圖。協作圖通過各個對象之間的組織交互關系以及對象彼此之間的連接表達對象之間的交互。
對象:
協作圖中的對象和序列圖中的對象的概念相同,同樣都是類的實例。對象的角色表示壹個或壹組對象在完成目標的過程中所應起的那部分作用。對象是角色所屬類的直接或者間接實例。在協作圖中,不需要關於某個類的所有對象都出現,同壹個類的對象在壹個協作圖中也可能要充當多個角色。
協作圖中對象的表示方式也和序列圖中對象的表示方式壹樣,使用包圍名稱的矩形框來標記,所顯示的對象及其類的名稱帶有下劃線,兩者用冒號隔開,使用“對象名:類名”的形式,與序列圖不同的是,對象的下部沒有壹條被稱為“生命線”的垂直虛線,並且對象存在多對象的形式。
消息:
在協作圖中,可以通過壹系列的消息來描述系統的動態行為。和序列圖中的消息概念相同,都是從壹個對象(發送者)向另壹個或幾個其他對象(接收者)發送信號,或由壹個對象(發送者或調用者)調用另壹個對象(接收者)的操作,並且都由三部分組成,分別是發送者、接收者和活動。
在協作圖中,消息使用帶有標簽的箭頭表示,它附在連接發送者和接收者的鏈上。鏈連接了發送者和接收者,箭頭的指向便是接收者。消息也可以通過發送給對象本身的方式,依附在連接自身的鏈上。在壹個連接上可以有多個消息,它們沿著相同或不同的路徑傳遞。每個消息包括壹個順序號以及消息的名稱。消息的名稱可以是壹個方法,包含壹個名字、參數表和可選的返回值表。消息的各種實現的細節也和“交付商品”兩步。
協作圖中的鏈與對象圖中的鏈的概念和表示形式都相同,都是兩個或多個對象之間的獨立連接,是對象引用元組(有序表),也是關聯的實例。在協作圖中,關聯角色是與具體語境有關的暫時的類元之間的關系,關聯角色的實例也是鏈,其壽命受限於協作的長短,就如同序列圖中對象的生命線壹樣。
在協作圖中,鏈的表示形式為壹個或多個相連的線或弧。在自身關聯的類中,鏈是兩端指向同壹對象的回路,是壹條弧。為了說明對象是如何與另外壹個對象進行連接的,可以在鏈的兩端添加上提供者和客戶端的