本學期在學 uml 建模,這星期要完成對專案用例圖中幾個主要用例的活動圖分析,索性寫下自己對活動圖的學習筆記和實操,
有些類似的用例,網上或者書上的活動圖表示都不盡相同,我是按照自己的理解,感覺沒有很嚴格的標準,重要的是把活動描述清晰明了,
活動圖
活動圖是一種表達系統動態行為的圖,提供了流程的可視化描述,
對于用例圖中的用例,我們很難看到潛在的問題,因為其流程及具體操作我們是不知道的,比起用文字描述的用例規格說明,使用活動圖將用例的復雜流程可視化會更加清晰明了,便于理解,
一. 基本概念

1. 動作(Actions)
活動包含許多動作,動作是活動的基本單位,具有原子性,動作一般用圓角矩形來表示,動賓結構描述,
活動圖中還有活動狀態(可分解),也用圓角矩形表示,但其中能包含一個完整活動,動作實際上是活動狀態的一個特例,如果一個活動只由一個動作,那么它就是一個動作狀態,
動作和活動狀態也可以叫作動作節點和活動節點
如果圓角矩形右下角有一個叉子的符號,則該動作為 callBehavior型別,我的理解是該動作會直接呼叫另一個活動,呼叫動作所屬的活動與被呼叫活動是兩個獨立的活動,為不相關集,
2. 開始和終止
活動圖展示的是一個流程,那么必然由開始和結束,一個流程有且僅有一個開始節點,但至少有一個結束節點,開始節點為實心黑點,終止節點為一個圓圈,有點像小黃人的眼睛?: )
3. 判斷節點和合并節點
判斷節點 用菱形表示,具有一個進入流程和多個離開流程,類似于 switch 分支陳述句,離開流程應該包括進入流程產生的所有可能結果要走的路徑,
合并節點 同樣用菱形表示,但合并節點具有多個進入流程并導向一個離開流程,
需要注意的是,判斷節點和合并節點都只表示邏輯意義,并不意味著動作的并發執行或者其他時間或資料同步的操作,這對區分他們與分叉節點,結合節點很關鍵
4. 分叉節點和結合節點
分叉節點在圖中表示為有一個進入箭頭多個離開箭頭的粗橫線,其與判斷節點的區別在于并發,判斷節點只執行其中一個離開流程,而分叉節點的進入流程會導致多個離開流程的并發,其常常與結合節點合用來表達并發的程序,
結合節點在圖中則表示為有多個進入箭頭一個離開箭頭的粗橫線,對于結合節點來說,必須完成所有的進入流程后,才能進行離開流程,
分叉節點和結合節點的組合使用可以概括為表現多個流程的同進同出,
5. 磁區(泳道)
磁區的目的是為了說明具體活動的執行物件,一般是用戶,系統之類,除此之外,對處于不同泳道的并發活動進行磁區并列,可以更加清晰地表達并發的進行,
6. 物件流
物件用矩形表示,有時動作的發生可能涉及到物件的變化,通過添加物件流可以直觀地表達出物件的變化,比如給油箱加油,我們可能需要這么一個油箱物件,表達油箱當前的狀態,如果油量很低則執行動作【加油】,讓油量達到滿的狀態,不建議在活動圖添加過多物件,會使得圖變得復雜而笨拙,應該均衡其利弊而使用,
二. 實際案例
下面將以一個【預訂運動場地】活動為例,畫出活動圖
-
我們要確定有多少個參與者,即泳道條數,我這里有普通用戶,訂單處理系統以及預約管理系統

-
我們要預約場館,是不是得先告訴系統用戶要做什么運動,在什么時候運動,然后預約管理系統就會篩選出滿足條件的場館,如果一個沒有,那么預訂失敗;如果有符合條件的場館,ok用戶再去看這些場館的資訊,用判斷節點來表達,

-
找到心儀的場館然后填寫預約資訊,又訂單管理系統參與生成訂單,要注意只有用戶選擇完支付方式后,我們才會執行動作支付預約費用(聯系我們使用淘寶的時候!!),所以這是并發的動作,我們上面提到了,用分叉節點和結合節點表示并發,最后在判斷節點控制下導向結果預約成功和預約失敗,最后的活動圖如下

三. 總結
畫活動圖就是描述一個活動的可視化流程,在畫活動圖之前,腦海中應該有大致的流程,先做什么后做什么,注意哪些動作是并發,然后梳理清楚,才不至于出來的圖有交叉很亂的情況,
我畫的也挺粗糙,僅僅用了活動圖的基本概念,之后代入角色反復思考,多實踐了,
本文來自博客園,作者:_krill,轉載請注明原文鏈接:https://www.cnblogs.com/krill/p/15472642.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/338968.html
標籤:面向對象
下一篇:RabbitMQ設計原理決議
