簡介
又作“通信圖”。面向對象動态建模,用于建立行為的實體間行為交互的四種圖:狀态圖(StageDiagram),序列圖(SequenceDiagram),協作圖(CommunicationDiagram),活動圖(ActivityDiagram)。
其中,“順序圖”與“協作圖”表述的是相似的消息,“活動圖”是“狀态圖”的一種。
協作圖(CollaborationDiagram/CommunicationDiagram,也叫合作圖)是一種交互圖(interactiondiagram),強調的是發送和接收消息的對象之間的組織結構。一個協作圖顯示了一系列的對象和在這些對象之間的聯系以及對象間發送和接收的消息。對象通常是命名或匿名的類的實例,也可以代表其他事物的實例,例如協作、組件和節點。使用協作圖來說明系統的動态情況。協作圖使描述複雜的程序邏輯或多個平行事務變得容易。
協作圖(CollaborationDiagram/CommunicationDiagram)顯示某組對象如何為了由一個用例描述的一個系統事件而與另一組對象進行協作的交互圖。使用協作圖可以顯示對象角色之間的關系,如為實現某個操作或達到某種結果而在對象間交換的一組消息。如果需要強調時間和序列,最好選擇序列圖;如果需要強調上下文相關,最好選擇協作圖。
協作圖用于顯示對象之間如何進行交互以執行特定用例或用例中特定部分的行為。設計員使用協作圖和序列圖确定并闡明對象的角色,這些對象執行用例的特定事件流。它們是主要的信息來源,用于确定類的職責和接口。
與序列圖(SequenceDiagram)不同,協作圖顯示了對象之間的關系。序列圖(SequenceDiagram)和協作圖表述的是相似的信息,但表述的方式卻不同。協作圖顯示對象之間的關系,它更有利于理解對給定對象的所有影響,也更适合過程設計。
協作圖的格式決定了它們更适合在分析活動中使用(請參見活動:用例分析)。它們特别适合用來描述少量對象之間的簡單交互。随着對象和消息數量的增多,理解協作圖将越來越困難。此外,協作圖很難顯示補充的說明性信息,例如時間、判定點或其他非結構化的信息,而在序列圖中這些信息可以方便地添加到注釋中。
協作圖強調參與一個交互對象的組織,它由以下基本元素組成:活動者(Actor)、對象(Object)、連接(Link)和消息(Message)。在UML中,使用實線标記兩個對象之間的連接,協作圖中的消息,由标記在連接上方的帶有标記的箭頭表示。
描述
協作圖包含類元角色和關聯角色,而不僅僅是類元和關聯。類元角色和關聯角色描述了對象的配置和當一個協作的實例執行時可能出現的連接。當協作被實例化時,對象受限于類元角色,連接受限于關聯角色。關聯角色也可以被各種不同的臨時連接所擔當,例如過程參量或局部過程變量。連接符号可以使用構造型表示臨時連接(《parameter》或《local》)或調用同一個對象(《self》)。雖然整個系統中可能有其他的對象,但隻有涉及到協作的對象才會被表示出來。換而言之,協作圖隻對相互之間具有交互作用的對象和對象間的關聯建模,而忽略了其他對象和關聯。
協作圖(collaborationdiagram)用于表示對象間的消息往來。雖然序列圖在某種定義上也能表示對象的協作動作,但能明确描述對象間的協作關系的還是協作圖。圖5-39表示了自動販賣機的協作圖。
當兩個對象間有消息傳遞時用帶箭頭的有向邊連接這兩個對象。在UML中,協作圖的語義與序列圖是等價的,有向邊的箭頭方向表示傳遞消息的方向,在有向邊上方标識出是什麼消息。為表示發送消息的時間順序,在每個消息前附加數字編号。顯然,協作圖便于描述對象間有什麼樣的協作關系,不需要像一個序列圖隻能對應于一個場景一樣,可以将多個場景中的協作關系一次性地全部描述出來。不過,與序列圖一樣,在UML的協作圖中,也規定了消息發送條件的描述。
協作圖作為表示對象間相關作用的圖形表示,也可以有層次結構。可以把多個對象作為一個抽象對象,通過分解,用下層協作圖表示出這多個對象間的協作關系,這樣可緩解問題的複雜度。