- 用來描述對象之間動態的交互關系。着重提現對象之間消息傳遞的時間順序。
- 順序圖將交互關系表示為一個二維圖。其中,縱軸是時間軸,時間沿豎線向下延伸。橫軸代表了在協作中各位獨立的對象。
時序圖的組成
時序圖包含了5個元素:
①參與者
②對象(Object)
③生命線(Lifeline)
④消息(Message)
⑤激活(Activation)
⑥ 約束(Constraint)
1.對象
- 如果對象位於時序圖的頂部,說明在交互開始之前該對象已經存在額。
- 如果對象是在交互的過程中創建的,那么它應當位於圖的中間部分。
對象包括三種:
- 指定類名和對象名的對象 objectName: className
- 指定類名但沒有對象名的對象 (匿名對象) :className
- 指定對象名但不指定類名的對象 objectName
圖形表示:
第一類:
第二類:
第三類:
創建對象的兩種方法:
1.1對象的撤銷
- 如果要象的撤銷一個對象,只要在其生命線終止點放置一個“X”符號即可,該點通常是對刪除或取消消息的回應。
2.生命線
- 生命線是對一條垂直的虛線,表示時序圖中的對象在一段時間段內的存在。每個對象的底部中心的位置都帶有生命線。
- 生命線是一個時間線,從順序圖的頂部一直延伸帶底部,所用的時間取決與交互持續時間。
3.消息
- 消息定義的對象之間某種形式的通信,它可以激發某個操作、喚起信號或導致目標對象的創建或撤銷。
- 消息是對兩個對象之間的單路通信。
- 消息可以用於在對象間傳遞的參數。
- 消息可以是信號的,也可以是調用的。
4.激活
- 激活表示該對象被占用以完成某個任務,去激活指的則是對象處於空閑的狀態、在等待消息。
- 在UML中,為了表示對象是激活的,可以將該對象的生命線拓寬成為矩形。其中的矩形稱為激活條或控制期。
5.消息
1. 同步消息:
- 發送者要發送一條消息且接收者已經做好接收這個消息的准備才能傳送的消息叫同步消息。實心箭頭。消息的名稱是被調用者的方法名。
2. 異步消息
- 發送者不管接收者是否做好准備都可以發送的消息叫異步消息。
3. 返回消息
4. 創建對象
5. 撤銷對象
6. 自關聯消息
6.約束
- 約束條件
- 消息前加約束條件。通常有條件約束、循環約束。
- 條件約束:[條件],只有在符合條件時,才發送消息。
循環約束:*[條件]
約束片段
片段類型 | 名稱 | 說明 |
---|---|---|
Opt | 選 項 |
包含一個可能發生或可能不發生的序列。 可以在臨界中指定序列發生的條件。 |
Alt | 抉 擇 |
包含一個片段列表,這些片段包含備選消息序列。 在任何場合下只發生一個序列。可以在每個片段中設置一個臨界來指示該片段可以運行的條件。 else 的臨界指示其他任何臨界都不為 True 時應運行的片段。 如果所有臨界都為 False 並且沒有 else,則不執行任何片段。 |
Loop | 循 環 |
片段重復一定次數。 可以在臨界中指示片段重復的條件。Loop 組合片段具有“Min”和“Max”屬性,它們指示片段可以重復的最小和最大次數。 默認值是無限制。 |
Break | 中 斷 |
如果執行此片段,則放棄序列的其余部分。 可以使用臨界來指示發生中斷的條件。 |
Par | 並 行 |
並行處理。 片段中的事件可以交錯。 |
Critical | 關 鍵 |
用在 Par 或 Seq 片段中。 指示此片段中的消息不得與其他消息交錯。 |
Seq | 弱 順 序 |
有兩個或更多操作數片段。 涉及同一生命線的消息必須以片段的順序發生。 如果消息涉及的生命線不同,來自不同片段的消息可能會並行交錯。 |
Strict | 強 順 序 |
有兩個或更多操作數片段。 這些片段必須按給定順序發生。 |
Consider | 考 慮 |
指定此片段描述的消息列表。 其他消息可發生在運行的系統中,但對此描述來說意義不大。在“Messages”屬性中鍵入該列表。 |
Ignore | 忽 略 |
此片段未描述的消息列表。 這些消息可發生在運行的系統中,但對此描述來說意義不大。在“Messages”屬性中鍵入該列表。 |
Assert | 斷 言 |
操作數片段指定唯一有效的序列。 通常用在 Consider 或 Ignore 片段中。 |
Neg | 否 定 |
此片段中顯示的序列不得發生。 通常用在 Consider 或 Ignore 片段中。 |
循環分支屬於業務流程中比較常見的特殊結構。
- loop,也叫循環,是滿足循環條件的前提下,不斷地重復做某些事情;
- alt,條件分支,是根據不同的條件選擇不同的分支;
- opt,可選分支,是滿足一定條件則執行該分支,否則就跳過。
如下圖: