序列圖
(Sequence Diagram
)
是按時間順序描述了對象
間的交互模式
;它利用對象的“生命線”和它們之間傳遞的消息
來顯示對象如何參與交互。
序列圖(Sequence Diagram)
是一個模型,用於描述對象組如何隨着時間在某些行爲方面進行協作。序列圖捕獲單一用例
的行爲,同時顯示在特定用例的時間框架
中的對象以及這些對象之間傳遞的消息。序列圖並不顯示對象之間的關係。
序列圖是一種強調消息的時序交互圖,它由活動者(Actor)、對象(Object
)、消息(Message)、生命線(Lifeline)和控制焦點(Focus of control)組成。在UML
中對象表示爲一個矩形,其中對象名稱標有下劃線;消息在序列圖中由有標記的箭頭表示;生命線由虛線表示。控制焦點由薄薄的矩形表示。
序列圖將交互關係表示爲一個二維圖,縱向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立對象的類
元角色。類元角色的活動用生命線表示。當對象存在時,生命線用一條縱向虛線表示,當對象的過程處於激活狀態時,生命線是一個雙道線。
序列圖以圖的形式詳細描述了業務角色
和業務主角
之間的交互,以及如何在執行業務用例
時訪問業務實體
。序列圖簡要描述了參與的業務角色的工作,從激活的角度描述瞭如何操作業務實體,以及它們如何通過發送消息實現通信。
部分個人登記處業務用例的序列圖。
也可以使用協作圖
介紹序列圖中表示的信息(請參見指南:業務對象模型
中的協作圖)。
© 1987 - 2001 Rational
Software Corporation。版權所有。
序列圖具有的用途
· 當不同的類之間存在多個簡短的方法時,描述控制流的整體序列
· 顯示併發進程和激活
· 顯示在協作圖中難以描述的時間序列
· 顯示涉及類交互而與對象無關的一般形式
如何創建序列圖
本部分包含以下內容:
·
生成序列圖
·
完善生成的序列圖
生成序列圖
2. 在“項目”窗口中,展開 "UMLTutorialProject
" >“模型
”節點。
3. 右鍵單擊 "CollaborationDiagram
" 節點,然後從上下文菜單中選擇“通過選定的元素創建圖”。
將打開“新建嚮導”窗口,並顯示“創建新圖”頁面。
|
您可以從上下文菜單列出的兩類可用的交互圖中選擇一種 類型
:協作圖和序列圖。這些圖主要強調對象之間的交互關係。
|
4. 在“圖類型”列表中,選擇“序列圖”。
5. 在“圖名稱”字段中,鍵入 SequenceDiagram
。
6. 保留“名稱空間”字段中的缺省設置,並單擊“確定”。
IDE 將執行以下操作:
o 在 CollaborationDiagram
節點下創建 SequenceDiagram
節點
o 在圖編輯器中顯示新圖,該圖是由生命線元素以及來自協作圖的消息構成的
o 打開“建模
組件
面板”,顯示在創建序列圖過程中使用的圖標。
該圖應當與下面的圖類似。
完善生成的序列圖
事務中的對象被繪製成點狀豎線,其名稱顯示在頂部。由於在創建序列圖時無法預先定義生命線元素的順序,因此您需要在此時重新排序這些元素。
1. 選擇標記爲 User 的生命線,將其移至圖的左側。
2. 重新排序其餘的生命線元素,使其均勻地分佈於圖編輯器中。按以下順序從左到右依次放置生命線:
o User
o ATM
o Consortium
o Branch
現在,該圖應當與下面的圖類似。
自調用消息圖元素表示調用對象時使用的消息。本圖中表示的內部操作是對 ATM 對象中現有現金的驗證。
1. 您可能需要延長生命線元素,以方便消息元素的放置。要延長生命線,請按照下列步驟操作:
a. 選擇 User 生命線元素。
b. 單擊底部中心的藍色方框,然後向下拖動方框以延長生命線。
c. 重複步驟 a 和 b,延長其他的生命線,直至該圖與下面的圖類似。
2. 從“建模組件面板”的“基本”類別,選擇“自調用消息”圖標 。
3. 單擊延長的 ATM 生命線元素的下半部分。
IDE 將在此生命線上放置一個自調用消息元素。
4. 單擊鼠標右鍵以取消選擇“自調用消息”圖標。
5. 在自調用消息元素中,單擊位於下面的消息箭頭。
消息的屬性將顯示在“屬性”窗口中。
6. 在“屬性”窗口的“名稱”字段中,鍵入 validateCashOnHandOperation
,然後按 Enter 鍵。
7. 右鍵單擊自調用消息元素中上面的消息箭頭,然後從上下文菜單中選擇“操作”。下圖指示了放置光標的位置。請注意頂部箭頭上方的雙豎線。
8. 從操作列表中選擇 "public boolean getIsOperating
"。
您會看到對該消息的上部進行了標記,如下圖所示。
由於 validateCashOnHand
操作是 ATM 類的一部分,因此需要在生命線上放置一個消息流來調用該操作。
1. 從“建模組件面板”的“基本”類別,選擇“同步消息”圖標 。
2. 單擊現有藍條下的 User 生命線元素。
3. 在您第一次單擊位置的右側再次直接單擊 ATM 生命線元素。
圖上將出現一個消息和一個返回消息。
|
如果不希望返回消息出現在圖上,請右鍵單擊圖編輯器的空白區域。從上下文菜單中取消選擇“顯示所有返回消息”。
|
4.
5. 右鍵單擊剛剛創建的消息,從上下文菜單中選擇“操作”>“添加操作”。
鍵入
validateCashOnHand
,然後按 Enter 鍵。
IDE 將在圖上標記該消息,然後將消息作爲操作添加到
類圖
的 ATM 類中。在“項目”窗口中,展開 ATM 類節點,確認操作列表與下面的圖類似。
爲了便於設計過程的順利進行,IDE 有一個自動擴展消息的選項。如果將自動擴展設置爲選中狀態,則在圖上放置新消息時,其佔用的空間便會擴展爲消息的寬度。
1. 要設置自動擴展選項,請在 User 和 ATM 元素名稱之間的跟蹤中單擊鼠標右鍵。
打開上下文菜單。
2. 選擇“將寬度設置爲消息寬度”。
兩個元素名稱之間的跟蹤中將會出現一個指示器欄,如下圖所示。
3. 重複上述步驟,設置 ATM 和 Consortium 元素之間以及 Consortium 和 Branch 元素之間的消息寬度選項。
返回頁首
“創建消息”符號可以創建生命線元素或實例。
1. 從“建模組件面板”的“基本”類別,選擇“創建消息”圖標 。
2. 單擊 Branch 生命線的下半部分。
3. 繪製鏈接,直至 Branch 生命線的右側,然後再次單擊。
這樣便會在圖上放置一個消息和一條生命線,如圖所示。
5. 單擊鼠標右鍵以取消選擇該圖標。
6. 選擇新的生命線。
“屬性”窗口將顯示此生命線元素的屬性。
7. 在“屬性”窗口中標記爲“表示類元”的行上,單擊向下箭頭。
將會出現一個下拉列表。
8. 從下拉列表中選擇 "CashierStation",然後按 Enter 鍵。
9. 單擊圖編輯器,查看這個帶有標籤的生命線元素。
|
您可以適當放寬此新生命線元素,直至看到其完整的名稱 CashierStation 爲止。
|
10. 該圖應當與下面的圖類似。
異步消息元素表示不阻止調用對象的消息。此類消息能夠創建新對象、創建新
線程
並與現有線程進行通訊。
1. 從“建模組件面板”的“基本”類別,選擇“異步消息”圖標 。
2. 單擊 Branch 生命線元素,然後單擊 CashierStation 生命線元素,在 Branch 和 CashierStation 生命線之間繪製一條鏈接。
3. 單擊鼠標右鍵以取消選擇該圖標。
4. 右鍵單擊新鏈接,然後從上下文菜單中選擇“操作”> "public int getStationID
"。
該操作將向此消息添加操作,如下圖所示。
組合片段允許在序列圖上直接表示邏輯組件,如備選項、選項、異常、並行合併、循環、求反、臨界區域和斷言等。組合片段提供了一種方法,通過指定條件或子進程的應用區域,該方法可以爲任何生命線的任何部分定義特殊條件和子進程。
1. 從“建模面板”的“控制”類別,選擇“組合片段”圖標 。
2. 要繪製組合片段元素以封裝消息 public void validateCashOnHand
,請單擊表示該消息的藍色虛線矩形的外部,然後拉伸矩形,以圍住該消息。
切記在單擊時不要選中任何生命線元素。您的組合片段應當如下圖所示。
3. 單擊鼠標右鍵以取消選擇該圖標。
4. 右鍵單擊組合片段元素中的 "assert
" 標籤,然後選擇“交互運算符”> "loop"。
|
loop 交互運算符指定組合片段表示一個循環。每次重複循環時,就會計算觸發表達式的結果。觸發表達式可以包括特定次數的循環迭代。
|
5. 右鍵單擊標記爲 "loop
" 的組合片段,然後從上下文菜單中選擇“交互操作數”>“編輯交互約束”。
IDE 會在目標組合片段元素中顯示一個表達式框。
6. 雙擊單詞 expression,使表達式處於可編輯狀態,如下圖所示。
7. 鍵入 x < 10
,然後按 Enter 鍵。
8. 單擊圖編輯器。
這個表達式將被接受並顯示在框中。該圖應當與下面的圖類似。
當您完成了序列圖後,便可保存該圖。
1. 在圖編輯器中,右鍵單擊 "SequenceDiagram
" 標籤。
2. 從上下文菜單中選擇“保存文檔”。
這將關閉菜單並保存序列圖。
返回頁首
在本教程中,您瞭解瞭如何使用現有的類圖和協作圖來創建序列圖。具體學習瞭如何執行下列任務:
· 從現有的協作圖生成序列圖
· 使用“建模組件面板”中的圖標將消息添加到圖
· 將鏈接添加到圖
· 添加組合片段元素
· 保存圖