·狀態(tài)和狀態(tài)機狀態(tài)、狀態(tài)表示法及狀態(tài)機 ·狀態(tài)是指在對象生命周期中滿足某些條件、執(zhí)行某些活動或等待某些事件的一個條件和狀況 ·一個狀態(tài)通常包括名稱、進入/退出活動、內部轉換、子狀態(tài)和延遲事件等五個部分組成 ·狀態(tài)機是計算機科學理論的一部分,但UML中的狀態(tài)機模型主要是基于David Harel所做的擴展,是用來展示狀態(tài)與狀態(tài)之間轉換的圖 ·如何閱讀狀態(tài)機圖閱讀最簡單的狀態(tài)圖 ·最為核心的元素無外乎是兩個:一個是用圓角矩形表示的狀態(tài)(初態(tài)和終態(tài)例外);另一個則是在狀態(tài)之間的、包含一些文字描述的有向箭頭線,這些箭頭線稱為轉換 轉換的五要素 ·源狀態(tài):即受轉換影響的狀態(tài) ·目標狀態(tài):當轉換完成后對象的狀態(tài) ·觸發(fā)事件:用來為轉換定義一個事件,包括調用、改變、信號、時間四類事件 ·監(jiān)護條件:布爾表達式,決定是否激活轉換、 ·動作:轉換激活時的操作 讀圖小結 ·與狀態(tài)off相關的轉換有兩個,其觸發(fā)事件都是turnOn,只不過其監(jiān)護條件不同。如果對象收到事件turnOn,那么將判斷壺中是否有水;如果[沒水],則仍然處于off狀態(tài);如果[有水]則轉為on狀態(tài),并執(zhí)行“燒水”動作 ·而與狀態(tài)on相關的轉換也有兩個,如果“水開了”就執(zhí)行turnOff,關掉開關;如果燒壞了,就進入了終態(tài)了 復雜轉換
閱讀帶有復雜轉換的狀態(tài)圖 只有動作描述,進入和退出和操作方法寫在了里面 各種轉換的區(qū)別 ·進入和退出轉換:當進入一個狀態(tài)時,執(zhí)行某個動作;或當退出某個狀態(tài)時,執(zhí)行什么動作。這時就可以使用進入和退出轉換來表示 ·內部轉換:用來處理一些不離開該狀態(tài)的事件 活動與延遲事件 ·活動:當對象處于一個狀態(tài)時,它一般是空閑的,在等待一個事件的發(fā)生。但是某些時間,你可能希望描述個正在進行的活動。在處于一個狀態(tài)的同時,對象做著某些工作,并一直繼續(xù)到被某個事件中斷 ·延遲事件:延遲事件是一種特殊的事件,它是指該事件不會觸發(fā)狀態(tài)的轉換,當對象處于該狀態(tài)時事件不會丟失,但會被延遲執(zhí)行。例如,當E-mail程序中正在發(fā)送第一封郵件時,用戶下達發(fā)送第二封郵件執(zhí)令就會被延遲,但第一封郵件發(fā)送完成后,這封郵件就會被發(fā)送。這種事件就屬于延遲事件 復合狀態(tài)表示法 順序復合狀態(tài)圖 監(jiān)護條件為“應答音”,代表已連接。 并發(fā)復合狀態(tài)圖 三種評測方式 歷史 ·“一個圓圈中加上字母H”,是用來表示歷史狀態(tài)的。 它的含義是:當從狀態(tài)“結賬”和“顯示購物車”返回子狀態(tài)“顯示索引信息”時,將進入的是離開時的歷史狀態(tài)。也就是說,轉到購物車或結賬區(qū)之后,再回到“瀏覽目錄”的頁面時,其中的內容是不變的,仍然保留原來的信息。 子狀態(tài)機 ·將子狀態(tài)機單獨定義,并對其進行命名(通常以大寫字母開頭),然后在需要使用的地方來引用它 引用C狀態(tài)機
·如何繪制狀態(tài)機圖繪制狀態(tài)機圖 ·繪制狀態(tài)機圖的理想步驟是:尋找主要的狀態(tài),確定狀態(tài)之間的轉換,細化狀態(tài)內的活動與轉換,用復合狀態(tài)來展開細節(jié) ·尋找主要狀態(tài):對于航班機票預訂系統(tǒng)而言,顯然包括的狀態(tài)主要有 ·確定狀態(tài)間轉換 表格橫向是轉出 表格縱向是轉入
·細化狀態(tài)內的活動與轉換 ·使用復合狀態(tài) ·狀態(tài)機圖應用說明·對對象生命周期建模:主要描述對象能夠響應的事件、對這些事件的響以及過去對當前行為的影響 ·對反應型對象建模:這個對象可能處于的穩(wěn)定狀態(tài)、從一個狀態(tài)到另一個狀態(tài)之間的轉換所需的觸發(fā)事件,以及每個狀態(tài)改變時發(fā)生的動作 ·狀態(tài)機圖既可以用來表示一個業(yè)務領域的知識,也可以用來描述設計階段對象的狀態(tài)變遷 ·本章小結
·首先介紹了“狀態(tài)”的概念和UML表示法,然后引入了狀態(tài)機的概念 ·通過三個例子逐一說明簡單狀態(tài)機圖、包含復雜轉換的狀態(tài)機圖以及包含復合狀態(tài)的狀態(tài)機圖的閱讀方法 ·,緊接著通過一個航班機票預訂系統(tǒng)來闡述了狀態(tài)圖的繪制過程:確定狀態(tài),分析狀態(tài)間的轉換,細化活動與內部轉化,通過復合狀態(tài)來組織 ·簡明地點出狀態(tài)圖的兩大功能:對對象的生命周期建模以及對反應型對象的行為建模
內容出自:UML 面向對象設計PPT |
|