UML狀態機視圖解析
本節和大家一起學習一下UML狀態機視圖,狀態機用于描述類的行為,但它們也描述用例、協作和方法的動態行為。這里主要介紹一下UML狀態機和組成狀態兩大部分內容,希望本節的介紹對你有所幫助。
UML狀態機視圖概述
概述
UML狀態機視圖通過對類對象的生存周期建立模型來描述對象隨時間變化的動態行為。每一個對象都被看作是通過對事件進行探測并做出回應來與外界其他部分通信的獨立的實體。事件表示對象可以探測到的事物的一種運動變化—如接受到從一個對象到另一個對象的調用或信號、某些值的改變或一個時間段的終結。任何影響對象的事物都可以是事件,真實世界所發生的事物的模型通過從外部世界到系統的信號來建造的。
狀態是給定類的對象的一組屬性值,這組屬性值對所發生的事件具有相同性質的反應。換而言之,處于相同狀態的對象對同一事件具有同樣方式的反應,所以當給定狀態下的多個對象當接受到相同事件時會執行相同的動作,然而處于不同狀態下的對象會通過不同的動作對同一事件做出不同的反應。例如,當自動答復機處于處理事務狀態或空閑狀態時會對取消鍵做出不同的反應。
狀態機用于描述類的行為,但它們也描述用例、協作和方法的動態行為。對這些對象方面而言,一個狀態代表了執行中的一步。我們通常用類和對象來描述狀態機,但是它也可以被其他元素所直接應用。
狀態機
狀態機是展示狀態與狀態轉換的圖。通常一個狀態機依附于一個類,并且描述一個類的實例對接受到的事件所發生的反應。狀態機也可以依附于操作、用例和協作并描述它們的執行過程。
狀態機是一個類的對象所有可能的生命歷程的模型。對象被孤立地從系統中抽出和考察,任何來自外部的影響被概述為事件。當對象探測到一個事件后,它依照當前的狀態做出反應,反應包括執行一個動作和轉換到新狀態。狀態機可以構造成繼承轉換,也能夠對并發行為建立模型。
狀態機是一個對象的局部視圖,一個將對象與其外部世界分離開來并獨立考查其行為的圖。利用狀態機可以精確地描述行為,但不適合綜合理解系統執行操作。如果要更好地理解整個系統范圍內的行為產生的影響,那么交互視圖將更有用些。然而,狀態機有助于理解如用戶接口和設備控制器這樣的控制機。
組成狀態
一個簡單狀態沒有子結構,只帶有一組轉換和可能的入口和出口動作。UML狀態機視圖的組成狀態是一個被分解成順序的或并發的子狀態的狀態。表6–4列出了各種狀態。
表6–4狀態的種類
將狀態分解成互斥的子狀態是對狀態的一種專門化處理。一個外部狀態被細分成多個內部子狀態,每一個子狀態都繼承了外部狀態的轉換。在某一時間只有一個子狀態處于激活狀態。外部狀態表達了每一個內部狀態都具有的條件。
進入或離開一個組成狀態的轉換會引起入口動作或出口動作的執行。如果有多個組成狀態,跨越多個層次的轉換會引起多重入口動作(最外層***執行)和出口動作(最內層***執行)的執行。如果轉換帶有動作,那么這個動作在入口動作執行后,出口動作執行前執行。
UML狀態機視圖中組成狀態也可能在其內部具有一個初始狀態。組成狀態邊界上的轉換隱含為初始狀態上的轉換。一個新對象起始于它的最外層的初始狀態。如果一個對象到達了它最外層狀態的終止狀態,那么該對象將被銷毀。初始狀態、終止狀態、入口動作和出口動作封裝了狀態的定義,使狀態的定義與進出狀態的轉換無關。
圖6–5展示了一個狀態的順序分解,其中包括一個初始狀態。這是售票系統的狀態機模型。
圖6-5狀態機
將一個狀態分解成并發的多個子狀態代表相互獨立的并行處理過程。當進入一個并發超狀態時,控制線程的數目增加;當離開一個并發超狀態時,控制線程的數目減少對于每一個狀態而言,并發通常依靠不同的對象實現,但是,并發子狀態還可以代表一個單獨狀態內部的邏輯并發關系。圖6–6展示了選修一門大學課程的并發分解。
圖6–6帶有并發組成狀態的狀態機
圖6–7子機器狀態
UML狀態機視圖中通常,可以在一個狀態機中使用其他狀態機的一部分,這種可重用性會帶來一些方便。狀態機可以命名,并可以用名字引用其他一個或多個狀態機。目標狀態機是一個子機器,引用這個子機器的狀態叫做子機器引用狀態。它的含義是在需要引用的地方用一個狀態機來替換原有內容。一個狀態機可以包含一個活動,即可以包含一個處理過程或一個需要消耗時間才能完成的持續過程或是可以被中斷的事件,而子機器不能圖6-7演示了子機器的引用。
進入一個子機器引用狀態的轉換會激活目標子機器的初始狀態。要進入其他狀態的子機器,需要在子機器引用狀態中安置一個或多個樁狀態。樁狀態用于在子機器中標識狀態。
【編輯推薦】