|
上次講完形象的用例圖,這次繼續(xù)講UML的另一種重要的圖:時序圖(Sequence Diagram). 這是一種以時間為主線,通過發(fā)送信息的時間順序來描述各對象之間的動態(tài)協(xié)作的UML交互圖。
1. 元素 時序圖的元素主要包括下面幾種: 角色 Actor 我的理解這個元素應(yīng)該叫主角,一般一個時序圖里會有一個主角,復(fù)雜的圖會有更多個。角色可以是人、機器、系統(tǒng)或子系統(tǒng)。可以用人形圖標(biāo)表示。
對象 Object 在時序圖中,對象是信息交互的主體(個人認為角色其實也屬于對象的范疇,只是為了強調(diào)其重要性,所以往上拎了)。對象在時序圖中可以用三種方式表示:只顯示對象名,只顯示類名,對象名+類名都顯示,這個根據(jù)場景的情況和作圖方便來定,同一個時序圖統(tǒng)一一種對象顯示方式即可。 對象的排列順序 Sequence 既然叫時序圖,那最好就是按照對象的交互先后進行排列了,有點類似演出上場。不同的是,時序圖里是主角先登場,然后才是其他對象。還有,如果兩個對象的交互比較頻繁,那就盡可能靠在一起,方便標(biāo)注信息和后面特寫嘛(焦點,組合)。 生命線 Lifeline 在時序圖里,每個對象都是有存在的時間段的,這就需要用生命線進行展示-在對象下方延伸一條虛線,虛線長度代表存在的時間段。生命線也是時間概念,但為了主軸時間線錯開方便作圖,所以采用向下延伸的方式。
控制焦點 Focus of Control 對象激活的時間段,在這個時段內(nèi)對象有特定動作需要執(zhí)行。這個可以理解為特寫鏡頭,聚焦對象之間的互動。用矩形框表示。
消息 Message 這部分代表對象之間的信息傳送。消息主要可分為同步信息、異步信息和返回信息。 同步信息和異步信息是一對相對概念,差別在于發(fā)送者傳遞信息給接收者之后的動作: a. 消息傳遞完,發(fā)送者停止活動,等待接收者反饋(拒絕Reject或者返回控制Process), 這是同步消息; b. 消息傳遞完,發(fā)送者繼續(xù)干自己手上的活,不等待接收者反饋。這是異步消息。 返回信息是過程調(diào)用返回的,比如下游接口pAPI的返回信息response。 還有一類消息-自關(guān)聯(lián)消息,表示方法的自我調(diào)用,或者在一個對象內(nèi)方法A調(diào)用方法B。 2. 關(guān)系表示 在時序圖中,關(guān)系的表示主要通過組合片段進行。組合片段是時序圖中專門用來解決交互執(zhí)行條件和方式的描述手段。組合片段可直接表示邏輯組件,通過框定指定條件或子進程的作用域,可以為任何生命線的任何部分定義特定條件和子進程。(相當(dāng)于控制焦點+特寫說明) 組合片段總共有13種,包括如下: a.選項Opt,抉擇Alt, 抉擇比較常用,指在一個預(yù)設(shè)條件下只能發(fā)生一個序列。比如去取款時,ATM機沒錢了,那就不會有取款選項。 選項這種通常是用戶有多個選擇的情況。同樣是在ATM機操作,你可以取款,也可以不取款就站著看。 b.循環(huán)Loop,中斷Break,并行Par,關(guān)鍵Critical,弱順序/強順序 Seq/Strict, 循環(huán)應(yīng)該是開發(fā)人員非常熟悉的了,當(dāng)滿足重復(fù)條件,循環(huán)就能一直進行。 并行,上面講元素-消息時也提過,是發(fā)送者無需等待反饋繼續(xù)進行活動,與串行是相對的。 c.考慮Consider,忽略Ignore,斷言Assert,否定Neg 考慮和忽略主要針對片段描述的消息列表,兩者對當(dāng)前描述來說意義不大,但只能取一個。 斷言和否定是在考慮/忽略的片段中,斷言是操作數(shù)片段指定唯一有效的序列,否定是此片段中顯示的序列不得發(fā)生。(說實話這個真不好理解。) 另外,如果要描述組合片段之間的關(guān)系怎么辦呢?那就用門 Gate 吧:門是連接組合A中的消息和組合B中的消息的連接點。在時序圖中,用一個小方框表示。這個門可以理解為下層展開/關(guān)閉的開關(guān)。
|
|
|