UML动态图
狀態圖(狀態機圖):表示一個模型元素在其生命期間的情況:從該模型元素的開始狀態起,響應事件,執行某些動作,引起轉移到新狀態,又在新狀態下響應事件,執行動作,引起轉移到另一個狀態,如此繼續,直到終結狀態。
狀態圖(狀態機)包含以下內容:狀態,事件,組合狀態
?
1、狀態。
狀態名字,進入動作,退出動作,狀態中發生的活動(狀態內活動,狀態向外發送的活動)。
2、事件
使狀態發生變化的某時刻發生的動作,或者活動。狀態發生轉化的條件。
3、組合狀態
一個狀態內部包含其他狀態,成為組合狀態,內部被包含的狀態被成為子狀態。
如果被包含的是一個子狀態圖,那么該子狀態圖必須有自己的起始狀態和終止狀態。
?
?
狀態圖的圖符
?
1、狀態:圓角矩形。
2、轉換:實線箭頭
3、事件:轉換說明文字。
4、起始狀態:
?
5、終止狀態:
?
??
狀態圖的嘮叨
?它是對模型元素在系統生命周期內各種狀態的描述,其中模型元素就包含對象,類,或者是子系統等。這個范圍可大可小。從大方面上看,我們可以把一個系統分成幾個子系統,來對系統進行狀態的劃分,這種情況,我們只是為了了解這個系統有那幾個模塊,這幾個模塊之間的相互裝換,如果是軟件工程開始做項目,那么這份宏觀的狀態圖可能就是給用戶或者非開發人員看的;從細處來說,我們可以對系統中某個對象進行狀態分析,這就是給開發人員看的,我們必須要從細出分析,考慮全面 ,系統做出來才可靠。總之就是不同需求畫不同的狀態圖,并不是一成不變的,我們要根據具體情況掌握好對狀態圖或者其他圖的粒度。
?
這是簡單的對機房收費系統的兩個角度畫的狀態圖。
?
從宏觀上看機房收費系統的狀態:空閑,等待操作狀態,顯示結果狀態。
以機房收費系統的某一個查詢窗體為對象進行狀態分析:主界面 ,通過選擇余額查詢到余額查詢界面,通過輸入卡號,開始查詢,然后會出現四個狀態:卡沒有注冊,輸入不合理,沒有該卡記錄,顯示該卡記錄。
?
?
?
初次畫圖,對狀態圖理解不到位,請指正,歡迎交流學習。
活動圖是一種流程圖,用來描述活動的序列,從一個活動到另一個活動的控制流。
活動圖的作用:描述用例,描述類的操作。
?
活動圖的構成
必要組成元素:
1、活動:命令的執行,活動的進行。
圖符表示:
2、狀態:開始狀態,結束狀態。
圖符表示:
?
3、轉移:活動之間,活動與狀態之間的轉換。
4、判斷:對一個動作或者狀態進行判斷,然后選擇要執行的下一步操作。
空形菱形表示
?
5、同步條:用于并行執行的活動圖中。成對出現,并行活動開始和結束都有一跟同步條來表示分歧和匯合。
粗線條表示同步條。
?
?
?
其他組成元素
6、泳道:對活動進行分組。怎么分組——每一個區域都代表特定的類,或者是人,或者是部門責任區。
?
在含有泳道的活動圖中,清晰的表明了每個活動的執行對象。在活動圖中每個活動只可以屬于一個泳道。
7、對象流
活動圖中可以將活動涉及到得對象通過依賴將其連接在狀態或者活動上。對象用矩形框表示。
?
?
活動圖和狀態圖
?
活動圖和狀態圖都是狀態機的一種表現形式。都是對系統中動態活動進行建模。
兩種圖的不同:
| 活動圖 | 狀態圖 |
| 對一個對象類執行的某一系列活動進行組合描述 | 某一類對象經過不同活動后的狀態進行組合描述 |
| 系統內部的處理流程驅動 | 外部事件的參與 |
?
活動圖和流程圖
相似:都是一種流程圖。
不同
| 流程圖 | 活動圖 |
| 描述處理過程 | 描述對象的活動順序 |
| 控制結構:順序,分支,循環 | 控制結構:對象的動作行為決定。 |
| 面向過程 | 面向對象 |
| 不可以描述并發過程 | 可以描述并發過程 |
?
機房收費系統示例:
?
管理員添加和刪除管理員的活動圖:
查詢充值金額活動圖:
結賬活動圖:
一、什么是時序圖
序列圖表示了系統在參與者互動執行某一個用例期間,系統內部的一群對象的協作情況。一個用例就對應一個時序圖。序列圖是對系統動態行為進行描述。用于用例分析和設計階段。
?
二、對比
1、序列圖和協作圖
序列圖跟協作圖相似,兩種圖傳遞的意思是一樣的。不同的是序列圖強調的是消息的傳遞順序,它將交互關系表示為一個二維圖。縱向是時間軸,橫軸是對象,對象的生命周期沿豎線向下延伸。而協作圖強調的是系統間的組織結構,重在表現對象的角色,消息的傳遞順序不明顯。
看示例:
時序圖
?
協作圖
2、時序圖和類圖、用例圖
用例圖是系統外部對象(參與者)與系統這兩大對象之間的互動,而類圖是對系統中涉及到得所有對象,進行抽象描述。時序圖是參與者和系統進行交互,系統內部對象之間的具體互動實現。SO,時序圖關聯了類圖與用例圖,可以通過用例圖和類圖進行整合。
?
三、時序圖的構成
1、角色:參與者。
角色是類中的用戶類,可以直接拖過來用,但是這里的角色應該是脫離系統之外的一個單純的角色。類中定義的屬性和操作可以不考慮。
?
2、對象:系統內部參與用例的一群對象。
?
對象的來源
1、類圖。
開篇已經說過時序圖其實可以是用例圖和類圖的整合。所以時序圖中的對象大部分是已經存在的。
存在哪?在類圖中。也就是說時序圖中的對象是我們在類中已經創建好的,我們只需要拿來用。還有一點要注意:時序圖中用到得是具體的對象,而非類,所以時序圖中的對象是類圖中類的實例化。
畫法:
2、創建
還有一小部分對象是在交互過程中通過消息創建的。
畫法:
當然有創建就有撤銷:在生命線的末尾打岔。
?
3、消息:角色,跟對象,對象和對象之間信息的傳遞。
簡單消息:
同步消息:發出消息后等待對方回應后,再去做別的事情。
異步消息::發出消息后無需等待對方回應,可以先去做別的事情。
返回消息:
4、生命線:對象在某一用例中的生命周期。
激活期:生命線上不是虛線的部分,代表對象在某一用例過程中執行某一操作的時間。
?
PS:??? 一個用例,可以對應生成一個用例。
參與者對象只能跟邊界對象互動。
實體對象不能發送消息給邊界對象和控制對象。
如只是對數據增,刪,該,查,可以不設置控制對象。
關系:序列圖的一群對象來自類圖,對象之間的交互來自用例描述。
?
四、時序圖怎么畫?
采用BCE(boundary-control-entity patterns)模式繪制時序圖。
BCE 模型中將對象分為三類:邊界類,控制類,實體類。
邊界類:用來隔離系統內外,通常負責接收并響應系統內外消息,參與者與系統對象進行消息傳遞要通過邊界類來實現。
控制類:一個用例會生成一個控制類。用來控制用例執行期間的復雜運算或者業務邏輯。
實體類:系統內部的對象。
他們的排列如下圖所示。
步驟:1、找出參與者和添加用例控制類。
2、然后根據用例流程不斷對邊界類和實體類進行填充。
PS:控制類只有一個,邊界類和實體類可以使多個。
?
分析下來,其實我們的具體實現是在做一道填空題。我們需要向B,C,E三個框中添加對象。
?
以下是對機房收費系統登陸用例的時序圖:
按F5鍵同時生成的協作圖:
?
修改密碼示例:圖一個為一次修改成功:
圖二為二次修改成功
?
圖二的畫法不確定,請指正。
一、什么是協作圖?
顧名思義協作圖就是合作圖,有合作就涉及到多個對象。
協作圖(Collaboration Diagram /Communication Diagram,也叫合作圖)是一種交互圖(interaction diagram),顯示某組對象如何為了由一個用例描述的一個系統事件而與另一組對象進行協作的,使用協作圖可以顯示對象角色之間的組織關系。
?
二、對比
1、協作圖和時序圖。
兩者表的消息時一樣的,只是強調的重點不同。協作圖表達的是在實現某個用例期間,對象之間的合作關系,而時序圖表達的是對象之間產生合作發生消息的時間順序。前一篇博客中有不在贅述。
?
兩者可以相互轉化。(rational rose?快捷鍵F5。)
2、協作圖和活動圖
(1)活動圖本質上是一種流程圖,每個“活動”可以是某個具體的“事務”,比如審核單據等。用不太嚴謹的表述來說,活動圖是一種粒度比較粗的事件流程圖,多在需求階段使用。
協作圖就不一樣了,協作圖里的基本單元是對象(或者概念類),表達這些對象之間的協作關系,多在設計階段使用。
?
(2)活動圖是一個具體活動的表示圖,有活動起點和活動終點;協作圖是對象之間關系的表示圖,沒有起點和終點?。
?
三、協作圖的構成
時序圖跟協作圖可以相互轉化,不難理解,協作圖的構成有角色,對象,連接,消息。具體含義同時序圖。
協作圖表現的是對象在空間上的聯系,所以不存在時序圖中的生命線和激活器。
?
看一下簡單的例子。
圖一是管理員結賬的協作圖。
?
圖二是圖一轉換的時序圖
?
總結
- 上一篇: UML——状态图
- 下一篇: 联想利泰的一道做出来就给月薪7K的面试题