uml之協作圖
協作圖——CollaborationDiagram,也叫合作圖,是一種交互圖(interactiondiagram)。強調的是發送和接收消息的對象之間的組織結構,一個協作圖顯示了一系列的對象和在這些對象之間的聯系以及對象間發送和接收的消息。
也叫“通信圖”,“協作”作為一個結構事物用於表達靜態結構和動態行為的概念組合,表達不同事物相互協作完成一個復雜功能。
協作圖的描述
協作圖顯示某組對象,如何為了由一個用例描述的一個系統事件而與另一組對象進行協作的交互圖。
對象通常是命名或匿名的類的實例,也可以代表其他事物的實例,例如協作、組件和節點,使用協作圖來說明系統的動態情況,協作圖使描述復雜的程序邏輯或多個平行事務變得容易。
協作圖作為表示對象間相關作用的圖形表示,也可以有層次結構。可以把多個對象作為一個抽象對象,通過分解,用下層協作圖表示出這多個對象間的協作關系,這樣可緩解問題的復雜度。
協作圖的組成部分
協作圖強調參與一個交互對象的組織,基本元素包括:活動者(Actor)、對象(Object)、連接(Link)和消息(Message)。
對象:用長方形框表示對象。
連接:使用實線標記兩個對象之間的連接。
消息:由標記在連接上方的帶有標記的箭頭表示。
當兩個對象間有消息傳遞時用帶箭頭的有向邊連接這兩個對象,在UML中,協作圖的語義與序列圖是等價。
有向邊的箭頭方向表示傳遞消息的方向,在有向邊上方標識出是什麽消息,為表示發送消息的時間順序,在每個消息前附加數字編號,顯然,協作圖便於描述對象間有什麽樣的協作關系,不需要像一個序列圖只能對應於一個場景一樣,可以將多個場景中的協作關系一次性地全部描述出來,不過,與序列圖一樣,在UML的協作圖中,也規定了消息發送條件的描述。
協作圖包含類元角色和關聯角色,而不僅僅是類元和關聯,類元角色和關聯角色描述了對象的配置和當一個協作的實例執行時可能出現的連接。
當協作被實例化時,對象受限於類元角色,連接受限於關聯角色,關聯角色也可以被各種不同的臨時連接所擔當,例如過程參量或局部過程變量,連接符號可以使用構造型表示臨時連接(《parameter》或《local》)或調用同一個對象(《self》)。
雖然,整個系統中可能有其他的對象,但只有涉及到協作的對象才會被表示出來,換而言之,協作圖只對相互之間具有交互作用的對象和對象間的關聯建模,而忽略了其他對象和關聯。
協作圖與序列圖的關系
協作圖用於表示對象間的消息往來。
雖然序列圖在某種定義上也能表示對象的協作動作,但能明確描述對象間的協作關系的還是協作圖。
使用協作圖可以顯示對象角色之間的關系,如為實現某個操作或達到某種結果而在對象間交換的一組消息,如果需要強調時間和序列,最好選擇序列圖,如果需要強調上下文相關,最好選擇協作圖。
協作圖用於顯示對象之間如何進行交互以執行特定用例或用例中特定部分的行為,設計員使用協作圖和序列圖確定並闡明對象的角色,這些對象執行用例的特定事件流,它們是主要的信息來源,用於確定類的職責和接口。
與序列圖不同,協作圖顯示了對象之間的關系,序列圖和協作圖表述的是相似的信息,但表述的方式卻不同,協作圖顯示對象之間的關系,它更有利於理解對給定對象的所有影響,也更適合過程設計。
協作圖的格式決定了它們更適合在分析活動中使用。
它們特別適合用來描述少量對象之間的簡單交互,隨著對象和消息數量的增多,理解協作圖將越來越困難,此外,協作圖很難顯示補充的說明性信息,例如時間、判定點或其他非結構化的信息,而在序列圖中這些信息可以方便地添加到註釋中。
通信圖與順序圖都是表現對象之間交互和通信的,但側重點不同:順序圖著重在交互的時間順序上,通信圖則著重在交互對象的空間鏈接上
通信圖對應於簡單的順序圖。通信圖不含有交互框架,交互引用等復雜結構。
畫圖步驟:
1.確定交互過程的上下文
2.識別參與交互過程的對象
3.如果需要,為每個對象設置初始特性
4.確定對象之間的鏈,及沿著鏈的消息
5.從引發該交互過程的初始消息開始,將每個消息附到相應的鏈上
6.如果需要說明時間約束,則在消息旁邊加上約束說明
7.如果需要,可以為每個消息設置前置條件和後置條件
uml之協作圖