狀態(tài)圖的標(biāo)記符與活動(dòng)圖的標(biāo)記符非常相似,有時(shí)會(huì)讓人混淆。其實(shí),狀態(tài)圖用來(lái)表示單個(gè)對(duì)象的行為如何改變其狀態(tài)。而活動(dòng)圖是用來(lái)建模不同區(qū)域的工作如何彼此交互。
一、 定義狀態(tài)圖
狀態(tài)圖用來(lái)建模對(duì)象是如何改變其狀態(tài)以響應(yīng)事件和展示對(duì)象從創(chuàng)建到刪除的生命周期。狀態(tài)定義為對(duì)象行為在某一個(gè)時(shí)刻的快照或者轉(zhuǎn)折點(diǎn)。例如,計(jì)算機(jī)的狀態(tài)可以定義為開(kāi)機(jī)、啟動(dòng)、工作中、空閑、關(guān)機(jī)和離線等。狀態(tài)圖的任務(wù)就是用來(lái)描述一個(gè)對(duì)象所處的可能狀態(tài)以及狀態(tài)之間的轉(zhuǎn)移,并給出狀態(tài)變化序列的起點(diǎn)與終點(diǎn)。
二、 為什么要建模狀態(tài)圖
狀態(tài)圖除了可以用于描述對(duì)象接收事件觸發(fā)時(shí)的行為狀態(tài)外,它還可以用于許多其他情況。例如,狀態(tài)圖可以用來(lái)說(shuō)明基于用戶輸人的屏幕狀態(tài)改變,也可以用來(lái)說(shuō)明復(fù)雜用例的狀態(tài)進(jìn)展情況。
可建模狀態(tài)圖的對(duì)象有:類、用例、子系統(tǒng)、整個(gè)系統(tǒng)
在一般系統(tǒng)中,不需對(duì)每個(gè)類創(chuàng)建狀態(tài)圖。當(dāng)一個(gè)類實(shí)例(對(duì)象)有多種狀態(tài),每種狀態(tài)中的行為表現(xiàn)又不相同,則可創(chuàng)建狀態(tài)圖。例如,銀行帳戶可以有幾種不同的狀態(tài),可以打開(kāi)、關(guān)閉或透支。在這些不同狀態(tài)下,帳戶的處理功能是不同的。
三、狀態(tài)圖的標(biāo)記符
狀態(tài)圖由狀態(tài)、轉(zhuǎn)移和事件組成。本節(jié)介紹狀態(tài)和轉(zhuǎn)移,下一節(jié)介紹事件。聯(lián)合使用狀態(tài)和轉(zhuǎn)移可以更好地建模它們,有時(shí)需要包含決策點(diǎn)和同步條來(lái)顯示更高層次的細(xì)節(jié)信息。
1、 狀態(tài)
狀態(tài)圖中共有3種獨(dú)立的狀態(tài)標(biāo)記符
狀態(tài)圖中可以包含0到多個(gè)開(kāi)始狀態(tài)。狀態(tài)圖中也可以包含多個(gè)結(jié)束狀態(tài),每一個(gè)都表示一個(gè)模型能夠終止的點(diǎn)。
狀態(tài)細(xì)節(jié)是指當(dāng)對(duì)象處于特定狀態(tài)時(shí),可能要進(jìn)行一些活動(dòng),例如生成報(bào)表、進(jìn)行計(jì)算或向另一對(duì)象發(fā)送事件。
為了進(jìn)一步描述對(duì)象在特定狀態(tài)下的一些活動(dòng),可加入細(xì)節(jié)活動(dòng)、進(jìn)入、退出、事件和狀態(tài)歷史信息。
2.轉(zhuǎn)移
轉(zhuǎn)移用來(lái)顯示從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的處理流。轉(zhuǎn)移使用從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的開(kāi)放箭頭來(lái)標(biāo)記
3.決策點(diǎn)
決策點(diǎn)在建模狀態(tài)圖時(shí)提供了方便,因?yàn)樗ㄟ^(guò)在中心位置分組轉(zhuǎn)移到各自的方向,從而提高了狀態(tài)圖的可視性
4.同步
狀態(tài)圖中使用同步是為了說(shuō)明并發(fā)工作流的分岔與聯(lián)合。下圖所示為同步條的標(biāo)記符。
四、轉(zhuǎn)移的事件、條件和動(dòng)作
條件用來(lái)描述狀態(tài)轉(zhuǎn)移的前提。事件用來(lái)指示什么觸發(fā)了轉(zhuǎn)移,動(dòng)作用來(lái)說(shuō)明當(dāng)轉(zhuǎn)移發(fā)生時(shí)會(huì)產(chǎn)生什么情況。事件、條件和動(dòng)作是轉(zhuǎn)移的三個(gè)選項(xiàng)
事件
事件通常在從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的轉(zhuǎn)移路徑上直接指定。事件用來(lái)指示是什么導(dǎo)致了模型中狀態(tài)的改變。下圖演示了事件的標(biāo)記符
示例:
建模航班狀態(tài)圖
創(chuàng)建一個(gè)狀態(tài)圖來(lái)描述航班如何從提出申請(qǐng)、制定航班計(jì)劃、售票、起飛、飛行、到著陸的狀態(tài)過(guò)程。