從相互作用這一術語來看,很明顯,該圖用於描述模型中不同元素之間的某種類型的相互作用。這種相互作用是系統動態行為的一部分。這種交互行為在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
 
