面向物件分析與設計 - 動態建模



動態模型表示系統的與時間相關的方面。它關注的是系統中物件狀態隨時間的變化。主要概念包括:

  • 狀態:物件生命週期中特定條件下的情況。

  • 轉換:狀態的變化。

  • 事件:觸發轉換的發生。

  • 動作:由於某些事件而發生的連續且原子的計算,以及

  • 轉換的併發性。

狀態機模擬物件在其生命週期中由於某些事件以及由於事件而發生的動作而透過多個狀態的過程。狀態機透過狀態轉換圖以圖形方式表示。

狀態和狀態轉換

狀態

狀態是物件在特定時間段內具有的屬性值的抽象。它是在物件生命週期中持續有限時間段的一種情況,在此期間它滿足某些條件,執行某些活動或等待某些事件發生。在狀態轉換圖中,狀態由圓角矩形表示。

狀態的組成部分

  • 名稱 - 字串區分不同的狀態。狀態可能沒有名稱。

  • 進入/退出動作 - 表示進入和退出狀態時執行的活動。

  • 內部轉換 - 狀態內的變化,不會導致狀態改變。

  • 子狀態 - 狀態中的狀態。

初始狀態和最終狀態

物件的預設起始狀態稱為其初始狀態。最終狀態表示狀態機的執行完成。初始狀態和最終狀態是偽狀態,除了名稱外,可能不包含常規狀態的組成部分。在狀態轉換圖中,初始狀態由填充的黑色圓圈表示。最終狀態由另一個未填充的黑色圓圈包圍的填充的黑色圓圈表示。

轉換

轉換表示物件狀態的變化。如果物件在發生事件時處於某個狀態,則物件可能會執行某些活動(取決於指定的條件)並更改狀態。在這種情況下,據說發生了狀態轉換。轉換給出了第一狀態和新狀態之間的關係。轉換以從源狀態到目標狀態的實心有向弧線圖形表示。

轉換的五個部分是:

  • 源狀態 - 受轉換影響的狀態。

  • 事件觸發器 - 導致源狀態中的物件在滿足保護條件時發生轉換的事件。

  • 保護條件 - 布林表示式,如果為真,則在接收到事件觸發器時導致轉換。

  • 動作 - 由於某些事件而對源物件發生的不可中斷的原子計算。

  • 目標狀態 - 轉換完成後到達的狀態。

示例

假設一個人從X地乘坐計程車到Y地。該人的狀態可能是:等待(等待計程車)、乘坐(他已搭乘計程車並在乘坐)、到達(他已到達目的地)。下圖描述了狀態轉換。

Transitions

事件

事件是一些可以觸發物件或物件組狀態轉換的事件。事件在時間和空間上都有位置,但沒有與其關聯的時間段。事件通常與某些動作相關聯。

事件的示例包括滑鼠單擊、按鍵、中斷、堆疊溢位等。

觸發轉換的事件寫在狀態圖的弧線旁邊。

示例

考慮上圖所示的示例,當乘客獲得計程車時,從等待狀態到乘坐狀態的轉換髮生。同樣,當他到達目的地時,最終狀態達到。這兩個事件可以稱為Get_Taxi和Reach_Destination。下圖顯示了狀態機中的事件。

Transition Events

外部事件和內部事件

外部事件是從系統使用者傳遞到系統內物件的事件。例如,使用者滑鼠單擊或按鍵是外部事件。

內部事件是從系統內的一個物件傳遞到另一個物件的事件。例如,堆疊溢位、除法錯誤等。

延遲事件

延遲事件是指那些不被物件在當前狀態下立即處理,而是排隊以便以後在其他狀態下由物件處理的事件。

事件類

事件類表示具有共同結構和行為的一組事件。與物件類一樣,事件類也可以組織成層次結構。事件類可能與其關聯的屬性,時間是一個隱式屬性。例如,我們可以考慮航空公司航班起飛的事件,我們可以將其分組到以下類中:

Flight_Departs (航班號,出發城市,到達城市,航線)

動作

活動

活動是對物件狀態的操作,需要一些時間段。它們是在系統內正在進行的執行,可以被打斷。活動在活動圖中顯示,活動圖描繪了從一個活動到另一個活動的流程。

動作

動作是作為某些事件的結果而執行的原子操作。原子是指動作是不可中斷的,即,如果動作開始執行,它將執行到完成而不會被任何事件中斷。動作可能會對已觸發事件的物件或對該物件可見的其他物件進行操作。一組動作構成一個活動。

進入動作和退出動作

進入動作是在進入狀態時執行的動作,無論導致進入該狀態的轉換是什麼。

同樣,在離開狀態時執行的動作,無論導致離開該狀態的轉換是什麼,都稱為退出動作。

場景

場景是對指定動作序列的描述。它描述了物件經歷特定動作序列的行為。主要場景描述了基本序列,次要場景描述了替代序列。

動態建模圖

動態建模主要使用兩種圖:

互動圖

互動圖描述不同物件之間的動態行為。它包含一組物件、它們之間的關係以及物件傳送和接收的訊息。因此,互動模擬一組相關物件的 رفتار。兩種型別的互動圖是:

  • 序列圖 - 它以表格方式表示訊息的時間順序。

  • 協作圖 - 它表示透過頂點和弧線傳送和接收訊息的物件的結構組織。

狀態轉換圖

狀態轉換圖或狀態機描述單個物件的動態行為。它說明了物件在其生命週期中經歷的狀態序列、狀態轉換、導致轉換的事件和條件以及由於事件而產生的響應。

事件併發

在系統中,可能存在兩種型別的併發。它們是:

系統併發

在此,併發在系統級別建模。整個系統被建模為狀態機的集合,其中每個狀態機與其他狀態機併發執行。

物件內的併發

在此,物件可以發出併發事件。物件可能具有由子狀態組成的狀態,並且每個子狀態中都可能發生併發事件。

與物件內併發相關的概念如下:

簡單狀態和複合狀態

簡單狀態沒有子結構。具有巢狀在其內部的更簡單狀態的狀態稱為複合狀態。子狀態是巢狀在另一個狀態中的狀態。它通常用於降低狀態機的複雜性。子狀態可以巢狀到任意多個級別。

複合狀態可以具有順序子狀態或併發子狀態。

順序子狀態

在順序子狀態中,執行控制以順序方式從一個子狀態傳遞到另一個子狀態。在這些狀態機中,最多隻有一個初始狀態和一個最終狀態。

下圖說明了順序子狀態的概念。

Sequential Sub-states

併發子狀態

在併發子狀態中,子狀態並行執行,或者換句話說,每個狀態在其內部都有併發執行的狀態機。每個狀態機都有自己的初始狀態和最終狀態。如果一個併發子狀態在其最終狀態之前到達其最終狀態,則控制在其最終狀態等待。當所有巢狀狀態機到達其最終狀態時,子狀態會重新組合回單個流程。

下圖顯示了併發子狀態的概念。

Concurrent Sub-states
廣告
© . All rights reserved.