從相互作用這一術語來看,很明顯,該圖用於描述模型中不同元素之間的某種類型的相互作用。這種相互作用是系統動態行為的一部分。這種交互行為在UML中由兩個稱為序列圖和協作圖的圖來表示。兩個圖表的基本目的都是相似的。時序圖強調消息的時間順序,協作圖強調發送和接收消息的對象的結構組織。
交互圖的目的
交互圖的目的是可視化系統的交互行為。可視化交互是一項艱鉅的任務。因此,解決方案是使用不同類型的模型來捕捉交互的不同方面。
序列和協作圖用於從不同的角度捕捉動態特性。
交互圖的目的是 -
-
捕捉系統的動態行為。
-
描述系統中的消息流。
-
描述對象的結構組織。
-
描述對象之間的交互。
如何繪製交互圖?
正如我們已經討論過的,交互圖的目的是捕捉系統的動態方面。因此,為了捕捉動態的方面,我們需要了解什麼是動態方面,以及它是如何可視化的。動態方面可以定義為特定時刻運行系統的快照
我們在UML中有兩種交互圖。一個是序列圖,另一個是協作圖。順序圖捕獲從一個對像到另一個對象的消息流的時間順序,協作圖描述參與消息流的系統中對象的組織。
在繪製交互圖之前,要明確以下事項
-
對象參與交互。
-
消息在對象之間流動。
-
消息流動的順序。
-
對象組織。
以下是對訂單管理系統建模的兩個交互圖。第一個圖是序列圖,第二個圖是協作圖
Interaction
- 一個交互是行為的單位,專注於參與者之間的信息交換可見(有時間限制)。
- UML 2.0中的4個交互圖:
- 序列圖 - 交換消息的順序
- 溝通圖 - 參與者之間的關係
- 時序圖 - 參與者相對於時間的狀態變化
- 交互概覽圖 - 活動狀表示法中的交互順序
- 參與者用矩形和虛線(生命線)表示,
- 消息由生命線之間的箭頭表示
- 時間從上到下運行
- 整個圖表代表一次交互
Lifeline - 可連接的Element
可連接元素
- 一組實例 (a set of instances)
- 可以被視為指定類型的對象
- 生命線(參與者)代表可連接的元素
執行規範(執行發生)
- 生命線內行為單位執行的規範。
- 發送和接收消息確定執行規範的開始和結束。
Message
消息類型
- 同步消息(填充箭頭):
- 調用者等待,直到被叫行為終止
- 回复消息用虛線表示,打開或填充箭頭
- 異步消息(打開箭頭):
- 呼叫者不會等待,但在呼叫後繼續,不回复
- 找到消息(從實心圓圈開始的空箭頭):
- 接收器已知,發件人未知
- 丟失信息(打開箭頭指向一個實心圓圈)
- 發件人已知,收件人未知
- 創建消息(虛線與打開的箭頭指向生命線的標題):
- 圖中的這一點創建了新的生命線
- 刪除消息(打開箭頭):
- 物體破壞,停止(物體的破壞由生命線上的十字表示)
事件發生次數
- 發送事件由感嘆號(!p)表示,
- 接收事件由問號(?p)表示,
- 交互的有效序列:<!p,?p,!q,?q>
- 這不是唯一有效的序列!
事件發生有效的trace
例子
序列圖有四個對象(Customer,Order,SpecialOrder和NormalOrder)。
下圖顯示為消息序列SpecialOrder對象和相同的可在的情況下,可以使用NormalOrder對象。了解消息流的時間順序很重要。消息流只是一個對象的方法調用。
第一個調用是sendOrder(),它是Order對象的一個方法。下一個調用是confirm(),它是SpecialOrder對象的一個方法,最後一個調用是Dispatch(),它是SpecialOrder對象的一個方法。下圖主要描述了從一個對像到另一個對象的方法調用,這也是系統運行時的實際場景。
在哪裡使用交互圖?
我們已經討論過交互圖用來描述系統的動態特性。現在,我們將研究使用這些圖表的實際情況。為了理解實際應用,我們需要了解序列和協作圖的基本性質。
這兩個圖表的主要目的都與捕捉系統的動態行為相似。但是,具體目的更加重要,需要澄清和理解。
序列圖用於捕獲從一個對象流向另一個對象的消息順序。協作圖用於描述參與交互的對象的結構組織。單個圖表不足以描述整個系統的動態方面,因此使用一組圖表來整體捕捉它。
當我們想了解消息流和結構組織時,使用交互圖。消息流意味著從一個對像到另一個對象的控制流程的順序。結構組織是指系統中元素的可視化組織。
可以使用交互圖 -
-
按時間順序對控制流進行建模。
-
模擬結構性組織的控制流程。
-
對於正向工程。
-
用於逆向工程。
尋找UML在線編輯器?點擊一下即可編輯
其他UML資源
- What is UML?
- Why UML Modeling?
- Overview of the 14 UML Diagram Types
- What is Class Diagram?
- What is Component Diagram?
- What is Deployment Diagram?
- What is Object Diagram?
- What is Package Diagram?
- What is Composite Structure Diagram?
- What is Profile Diagram?
- What is Use Case Diagram?
- What is Activity Diagram?
- What is State Machine Diagram?
- What is Sequence Diagram?
- What is Communication Diagram?
- What is Interaction Overview Diagram?
- What is Timing Diagram
- UML Association vs Aggregation vs Composition
- UML Class Diagram Tutorial
- State Machine Diagram vs Activity Diagram