狀態轉換圖(簡稱為狀態圖)通過描繪系統的狀態及引起系統狀態轉換的事件,來表示系統的行為。此外,狀態圖還指明了作為特定事件的結果系統將做哪些動作。
(一)狀態
狀態是任何可以被觀察到的系統行為模式,一個狀態代表系統的一種行為模式。狀態規定了系統對事件的響應方式。
在狀態圖中定義的狀態主要有:初態(即初始狀態)、終態(即最終狀態)和中間狀態。在一張狀態圖中只能有一個初態,而終態則可以有0至多個。
狀態圖既可以表示系統循環運行過程,也可以表示系統單程生命期。
(二)事件
事件是在某個特定時刻發生的事情,它是對引起系統做動作或(和)從一個狀態轉換到另一個狀態的外界事件的抽象。
事件就是引起系統做動作或(和)轉換狀態的控制信息。
(三)符號
在狀態圖中,初態用實心圓表示,終態用一對同心圓(內圓為實心圓)表示。
中間狀態用圓角矩形表示,可以用兩條水平橫線把它分成上、中、下3個部分。上面部分為狀態的名稱,這部分是必須有的;中間部分為狀態變量的名字和值,這部分是可選的;下面部分是活動表,這部分也是可選的。
活動表的語法格式如下:
事件名(參數表)/動作表達式其中,“事件名”可以是任何事件的名稱。
在活動表中經常使用下述3種標準事件:entry, exit和do。entry事件指定進入該狀態的動作,exit事件指定退出該狀態的動作,而do事件則指定在該狀態下的動作。需要時可以為事件指定參數表。活動表中的動作表達式描述應做的具體動作。
狀態圖中兩個狀態之間帶箭頭的連線稱為狀態轉換,箭頭指明了轉換方向。狀態變遷通常是由事件觸發的,在這種情況下應在表示狀態轉換的箭頭線上標出觸發轉換的事件表達式;如果在箭頭線上未標明事件,則表示在源狀態的內部活動執行完之后自動觸發轉換。
事件表達式的語法如下:
事件說明[守衛條件]/動作表達式其中,事件說明的語法為:事件名(參數表)。
?(四) 簡例