【StarUML】時序圖


時序圖是可視化地展示對象與對象之間的聯系的圖,與其他的圖相比,它跟側重於表現為了完成一個用例,對象之間是怎么協同工作的。

之前學習的組件圖、用例圖都能表現對象之間的聯系,側重的是“有哪些聯系”,這是屬於水平維度的展示,而時序圖,它更像一個是從縱向維度用一個個的用例,將各個對象串起來,從而展現出它們之間的聯系,在軟件開發中,有了時序圖,基本上就可以指導軟件開發了。

1、基本元素

      a、角色(actor)

        角色不一定是人,也可以是組織、模塊或者其他的系統以及子系統,用下圖表示。

        image

        創建時序圖的時候,在staruml里的工具欄里是找不到這個圖的,需要在創建的module右鍵,選擇 add,選擇 actor

        image

        然后將左鍵長按actor1拖動到繪畫面板里,就可以添加了,不要使用用例圖里的小人,否則無法畫出生命線。

       b、對象

        (1)對象的命名

             對象名稱,包含兩部分:對象名+類名,中間用”:”隔離開來,有三種命名方式;

             第一種:對象名+類名,比如說 貓頭鷹:鳥;

             第二種:類名,如果在項目中,無需區別具體的對象,可以省略掉對象名,但冒號不能省略,以表示這是一個類名,比如說:鳥;

             第三種:對象名,如果項目中無需區別具體的類,可以直接寫對項目名,比如說 貓頭鷹。

        (2)命名方式的選擇

             命名只要遵循命名規則,選擇最能讓時序圖邏輯清晰地命名方式。

        (3)對象的排序

             遵循兩個約束:交互頻繁的盡量在一起(減少跨對象連接線的數量),用例發起者要放在最左端(遵循普通人的思維,從左往右)。

       c、生命線

          從對象上向下延伸的虛線,表示對象存在的時間

          image

       d、控制焦點

          代表對象活躍的時間區間,所謂活躍,就是該對象在執行內置邏輯,運行代碼,類似於在代碼里表示{},是用一個小矩形表示。

          控制焦點可重疊,兩個控制焦點重疊,就相當於{{}}

          image

       e、消息

           消息分為發送消息和返回消息,發送消息又根據發送形式不同,分為同步消息和異步消息

           發送消息類似於代碼中的調用關系,A對象調用B對象,就相當於A對象向B對象發送了調用消息,需要B執行相關邏輯,箭頭指向消息接收方,也就是B

           同步消息代表着調用之后,要一直等待,等待消息處理並返回;異步消息則可以馬上回來,去做別的事情,所以如果是同步消息,並且需要畫返回消息,則控制焦點就需要拉長,直到返回消息回來,而異步消息就沒有這個限制

           返回消息就是發生調用之后返回的結果,有返回消息,之前必須要有發送消息。

           image

        f、自關聯消息

           對象內方法調用

           image

        g、迷路消息和拾取消息

            迷路消息,意思是消息發出去了,沒有被處理或者接受者不在這個系統里,沒有被處理的情況,不存在於函數調用中,存在於消息隊列中,當消息隊列中的消息出列被處理的時候,發現不存在處理者;

            拾取消息,意思是來自其他系統的消息。

            image

  2、高級元素

      高級元素是在時序圖中加入邏輯控制,指示交互執行的條件和方式,總共有13種

     

     

     着重描述常用的四種

     a、抉擇(alt)

         抉擇就相當於if else,兩條路只能走一條

        image

       在staruml中,所有的高級元素(也稱組合片段)都是通過這個來畫的,通過設置它的屬性來決定畫哪種高級元素

        image

        改變交互操作屬性為 alt,此時在圖標中顯示地就是alt

        image

        注意:此處的name已經被我刪除掉,所有這里沒有顯示name,在使用的時候,name可以有也可以沒有

       雙擊seq,會出現一個黑色小框,點擊它

      image

      中間會出現一條黑色的線

      image

      在上面的框框任意處雙擊,會出現一個文本框,在文本框里填寫條件

      image

      這代表的意思就是 當 a>0的時候,執行第9條命令,否則執行第10條命令

 

  b、選項 (opt)

      包含一個可能發生或可能不發生的序列。 可以在臨界中指定序列發生的條件,對應於 switch

      畫法與alt畫法類似,只是 交互操作屬性 設置成opt。

      image

  

   c、循環(loop)

       相當於 for,while,foreach

       無限循環

       image

       循環10次

      image

     從1循環到10

     image

    一直循環,直到當num<0的時候退出

    image

  

d、退出循環(break)

    當滿足條件的時候退出循環(案例圖的意思是 當num等於10的時候執行save命令,並退出循環)

   image


e、 並行執行(par)

   代表同時進行,與編碼中的並行概念一致。

   image


3、畫圖思想

    第一,划清界限,圖不能呈現太多的重點,所以有些上游的流程和下游的流程,不要畫進去,否則會導致整個圖失去重點,如果確實需要表達一種語境,可以添加ref的高級元素(可以理解為子系統)。

           image

           這是成績查詢系統,查詢啊前肯定是要登錄的,但是這張圖的重點是查詢邏輯,登錄的邏輯可以用這個高級元素替代即可。

    第二,理清角色和對象,對象一定是名詞,不能是動詞。

注意:StarUML 刪除的時候一定要用 Ctrl+delete,直接delete是刪不掉的,只是不可見,它還是會占用位置!

     

   本文學習文章:http://www.woshipm.com/ucd/607593.html

                       https://www.jianshu.com/p/e8a53300aa79

                       https://sparxsystems.cn/resources/uml2_tutorial/uml2_sequencediagram.html


疑問:一個對象引出多個生命線,這個還不知道怎么畫

image

類似於此(來自 https://sparxsystems.cn/resources/uml2_tutorial/uml2_sequencediagram.html)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM