白菜Java自習室 涵蓋核心知識微信
時序圖(Sequence Diagram),亦稱爲序列圖、循序圖或順序圖,是一種UML交互圖。它經過描述對象之間發送消息的時間順序顯示多個對象之間的動態協做。多線程
序列圖將交互關係表示爲一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸表明了在協做中各獨立對象的類元角色。類元角色用生命線表示。當對象存在時,角色用一條虛線表示,當對象的過程處於激活狀態時,生命線是一個雙道線。消息用從一個對象的生命線到另外一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。併發
咱們在畫時序圖時會涉及7種元素:角色(Actor)、對象(Object)、生命線(LifeLine)、控制焦點(Activation)、消息(Message)、自關聯消息、組合片斷。異步
其中前6種是比較經常使用和重要的元素,剩餘的一種組合片斷元素不是很經常使用,可是比較複雜。咱們先介紹前6種元素,在單獨介紹組合片斷元素。oop
系統角色,能夠是人或者其餘系統,子系統。以一個小人圖標表示。post
對象位於時序圖的頂部,以一個矩形表示。對象的命名方式通常有三種:微信支付
時序圖中每一個對象和底部中心都有一條垂直的虛線,這就是對象的生命線(對象的時間線)。以一條垂直的虛線表。spa
控制焦點表明時序圖中在對象時間線上某段時期執行的操做。以一個很窄的矩形表示。線程
表現表明對象之間發送的信息。消息分爲三種類型。
表示方法的自身調用或者一個對象內的一個方法調用另一個方法。以一個半閉合的長方形+下方實心剪頭表示。
組合片斷用來解決交互執行的條件和方式,它容許在序列圖中直接表示邏輯組件,用於經過指定條件或子進程的應用區域,爲任何生命線的任何部分定義特殊條件和子進程。組合片斷共有13種,名稱及含義以下:
抉擇在任何場合下只發生一個序列。 能夠在每一個片斷中設置一個臨界來指示該片斷能夠運行的條件。else 的臨界指示其餘任何臨界都不爲 True 時應運行的片斷。若是全部臨界都爲 False 而且沒有 else,則不執行任何片斷。Alt 片斷組合能夠理解爲 if...else... 條件語句。
包含一個可能發生或不發生的序列。Opt 至關於 if... 語句。
片斷重複必定次數,能夠在臨界中指示片斷重複的條件。Loop 至關於 for 語句。
並行處理,片斷中的事件能夠並行交錯。Par 至關於多線程。
所謂劃清邊界是是指要肯定好繪製時序圖的範圍。在微信支付例子中省略列商家打開微信、輸入收款金額等交互消息,這些不是咱們須要體現的,咱們主要體現的是用戶的掃碼支付流程。
所謂識別交互語境就是要知道本身繪製時序圖的前提和背景。在微信支付的例子中用戶登陸了微信、開通了支付功能是前提,背景是用戶須要掃描付款買東西。
微信支付的例子中角色只有一個,即用戶。對象有華爲手機:手機、安卓版微信:微信、:商家。
對象之間交互的消息詳見以上時序圖。