Java工程師必備繪圖技能之二 UML時序圖

白菜Java自習室 涵蓋核心知識微信

Java工程師必備繪圖技能之一 UML類圖
Java工程師必備繪圖技能之二 UML時序圖markdown

1. UML 時序圖概述

時序圖(Sequence Diagram),亦稱爲序列圖、循序圖或順序圖,是一種UML交互圖。它經過描述對象之間發送消息的時間順序顯示多個對象之間的動態協做。多線程

序列圖將交互關係表示爲一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸表明了在協做中各獨立對象的類元角色。類元角色用生命線表示。當對象存在時,角色用一條虛線表示,當對象的過程處於激活狀態時,生命線是一個雙道線。消息用從一個對象的生命線到另外一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。併發

2. UML 時序圖做用

  1. 展現對象之間交互的順序;
  2. 將交互行爲建模爲消息傳遞,經過描述消息是如何在對象間發送和接收的來動態展現對象之間的交互;
  3. 相對於其餘UML圖,時序圖更強調交互的時間順序;
  4. 能夠直觀的描述併發進程。

3. UML 時序圖元素

咱們在畫時序圖時會涉及7種元素:角色(Actor)、對象(Object)、生命線(LifeLine)、控制焦點(Activation)、消息(Message)、自關聯消息、組合片斷異步

其中前6種是比較經常使用和重要的元素,剩餘的一種組合片斷元素不是很經常使用,可是比較複雜。咱們先介紹前6種元素,在單獨介紹組合片斷元素。oop

UML 時序圖角色.jpg

角色(Actor)

系統角色,能夠是人或者其餘系統,子系統。以一個小人圖標表示。post

對象(Object)

對象位於時序圖的頂部,以一個矩形表示。對象的命名方式通常有三種:微信支付

  1. 對象名和類名。例如:(華爲手機:手機)或(loginServiceObject:LoginService);
  2. 只顯示類名,不顯示對象,即爲一個匿名類。例如:(:手機)或(:LoginSservice);
  3. 只顯示對象名,不顯示類名。例如:(華爲手機:)或(loginServiceObject:);

生命線(LifeLine)

時序圖中每一個對象和底部中心都有一條垂直的虛線,這就是對象的生命線(對象的時間線)。以一條垂直的虛線表。spa

控制焦點(Activation)

控制焦點表明時序圖中在對象時間線上某段時期執行的操做。以一個很窄的矩形表示。線程

消息(Message)

表現表明對象之間發送的信息。消息分爲三種類型。

  • 同步消息(Synchronous Message):消息的發送者把控制傳遞給消息的接收者,而後中止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義。以一條實線+實心箭頭表示。
  • 異步消息(Asynchronous Message):消息發送者經過消息把信號傳遞給消息的接收者,而後繼續本身的活動,不等待接受者返回消息或者控制。異步消息的接收者和發送者是併發工做的。以一條實線+大於號表示。
  • 返回消息(Return Message):返回消息表示從過程調用返回。以小於號+虛線表示。

自關聯消息

表示方法的自身調用或者一個對象內的一個方法調用另一個方法。以一個半閉合的長方形+下方實心剪頭表示。

組合片斷

組合片斷用來解決交互執行的條件和方式,它容許在序列圖中直接表示邏輯組件,用於經過指定條件或子進程的應用區域,爲任何生命線的任何部分定義特殊條件和子進程。組合片斷共有13種,名稱及含義以下:

組合片斷1.png

組合片斷2.png

4. 經常使用組合片斷舉例

抉擇(Alt)

抉擇在任何場合下只發生一個序列。 能夠在每一個片斷中設置一個臨界來指示該片斷能夠運行的條件。else 的臨界指示其餘任何臨界都不爲 True 時應運行的片斷。若是全部臨界都爲 False 而且沒有 else,則不執行任何片斷。Alt 片斷組合能夠理解爲 if...else... 條件語句。

抉擇(Alt).png

選項(Opt)

包含一個可能發生或不發生的序列。Opt 至關於 if... 語句。

選項(Opt).png

循環(Loop)

片斷重複必定次數,能夠在臨界中指示片斷重複的條件。Loop 至關於 for 語句。

循環(Loop).png

並行(Par)

並行處理,片斷中的事件能夠並行交錯。Par 至關於多線程。

並行(Par).png

5. UML 時序圖繪製

  1. 劃清邊界,識別交互語境

所謂劃清邊界是是指要肯定好繪製時序圖的範圍。在微信支付例子中省略列商家打開微信、輸入收款金額等交互消息,這些不是咱們須要體現的,咱們主要體現的是用戶的掃碼支付流程。

所謂識別交互語境就是要知道本身繪製時序圖的前提和背景。在微信支付的例子中用戶登陸了微信、開通了支付功能是前提,背景是用戶須要掃描付款買東西。

  1. 梳理時序圖中的角色和對象都有哪些?

微信支付的例子中角色只有一個,即用戶。對象有華爲手機:手機、安卓版微信:微信、:商家。

  1. 對象之間有哪些交互消息?

對象之間交互的消息詳見以上時序圖。

時序圖的繪製技巧

  1. 從初始消息開始畫,依次畫出隨後消息,並給每一個消息分配序號,方便理解。
  2. 角色和對象用名詞,消息用動詞。
  3. 角色放在時序圖的開始位置,對象重要程度或使用頻率從左到右排列。這就要根據時間的流程考慮了,是一個比較主觀的事情。
  4. 控制焦點兩端要以消息元素封頂,控制焦點不要超過消息元素。

Java工程師必備繪圖技能之一 UML類圖
Java工程師必備繪圖技能之二 UML時序圖

相關文章
相關標籤/搜索