版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章 動態(tài)建模系統(tǒng)的動態(tài)行為是指對象是如何通過通信來進行協(xié)作的,以及系統(tǒng)中的對象是如何在系統(tǒng)的生命周期內改變狀態(tài)的。交互(Interaction):為產生某種功能而在一組對象之間進行的通信過程。描述交互的動態(tài)圖:· 狀態(tài)圖(State Diagram):可以描述一個對象在其生命周期中擁有哪些狀態(tài),該對象在這些狀態(tài)下的行為,以及什么樣的事件會導致狀態(tài)發(fā)生改變。· 交互圖(Interaction Diagram):可以描述對象之間是如何進行交互和通信的。包括順序圖(Sequence Diagram)、通信(協(xié)作)圖(Communication Diagram)、交互概觀圖(I
2、nteraction Overview Diagram)以及時序圖(Timing Diagram)。其中,順序圖和通信圖都可以顯示交互。但是順序圖的焦點在時間上, 而通信圖的焦點在空間上。交互概觀圖顯示了一些作為一個較大交互流的部分內容的交互圖。時序圖顯示沿著一個精確時間軸的交互。· 活動圖(Activity Diagram):是另外一種顯示交互的方法,但是活動圖的主要焦點是工作。4.1 對象之間的交互兩個對象之間的交互是通過一個對象向另一個對象發(fā)送消息來實現(xiàn)的。消息的類型:· 簡單消息:一個平直的控制流。簡單消息顯示了控制是如何從一個對象傳遞到另一個對象的,這個過程中并沒
3、有描述任何有關對象之間通信的細節(jié)信息。· 同步消息:一個嵌套的控制流,一般是作為操作調用來實現(xiàn)的。只有在處理該消息的操作結束之后,調用者才能恢復繼續(xù)執(zhí)行。· 異步消息:異步的控制流。對象之間的異步消息表明了不等待語義;發(fā)送者不必等待該消息處理完就可以繼續(xù)執(zhí)行。同步消息異步消息簡單消息立即返回的同步消息圖4.1 消息類型注解4.2 狀態(tài)圖4.2.1 狀態(tài)和轉換 狀態(tài)和狀態(tài)轉換的概念一個對象的狀態(tài)是該對象在此之前所執(zhí)行的所有活動的結果,通常是由對象的屬性值所決定的,并且會鏈接到其他對象。有關對象狀態(tài)的例子:· 貨物(對象)已經付款(狀態(tài));· 小轎車(對象)
4、靜止不動(狀態(tài));· 機器的引擎(對象)在運轉(狀態(tài));· Jim(對象)擔任銷售員的角色(狀態(tài));· Kate(對象)結婚了(狀態(tài))。當一個事件發(fā)生時,對象就可能會改變狀態(tài)。對象的動態(tài)行為可以表現(xiàn)在兩個方面:交互和內部狀態(tài)的變化。 狀態(tài)圖的組成部分· 起始點(初態(tài))(Initial State)· 結束點(終態(tài))(Final State)· 狀態(tài)(State)· 狀態(tài)轉換(State Transition)· 導致狀態(tài)發(fā)生轉換的事件狀態(tài)轉換激發(fā)(Fire)或狀態(tài)轉換被觸發(fā)(Triggered)UnpaidPaid
5、刪除貨物對象付款創(chuàng)建貨物對象圖4.2 貨物對象的狀態(tài)圖Onfirst floorMovingupMovingdownMoving tofirst floorIdlearrivedarrivedarrivedgo upgo upgo downtime-out圖4.3 電梯對象的狀態(tài)圖 狀態(tài)的組成部分狀態(tài)名狀態(tài)變量活動圖4.4 狀態(tài)的三個部分:狀態(tài)名、狀態(tài)變量和活動 活動組成在活動組成中可能會使用的三個標準事件:entry, exit和do?;顒咏M成的形式語法(Formal Syntax)是:event-name argument-list /action-expression LoginLogi
6、n time = Current timeentry/type“l(fā)ogin”exit/login(user name, password)do/get user namedo/get passwordhelp/display help圖4.5 一個名為login的狀態(tài) 狀態(tài)轉換Startingapplicationsdo/loadapplicationsStarting OSdo/load OSBootdo/run biosprogram圖4.6 不帶顯式事件的狀態(tài)轉換用于確定一個狀態(tài)轉換的形式語法是:event-signature guard-condition/ action-expres
7、sion send-clause其中,event-signature的語法定義為:event-name(parameter, .)并且send-clause的語法是:destination-expressiondestination-event-name(argument,)Event-Signature(事件簽名)event-signature包括一個事件名(event-name)和相關的參數(shù)。參數(shù)列表的語法是:Parameter-name:type-expression, Parameter-name:type-expression Onfirst floorMoving tofirst
8、floorIdlearrivedarrivedarrivedgo up (floor)go up (floor)go down (floor)time-outMoving updo/moving to floorMoving downdo/moving to floor圖4.7 狀態(tài)轉換上所附的事件帶有一個參數(shù)floor帶event-signature的狀態(tài)轉換的例子如下:draw (f : Figure , c : Color )redraw ( )redrawprint ( invoice )Initializingdo/bootupWorkingShutting Downturn PC
9、onshut down圖4.8 GUI 的狀態(tài)和狀態(tài)轉換Guard-Condition(保護條件)Onfirst floorMoving tofirst floorarrivedarrivedarrivedgo up (floor)go up (floor)go down (floor)timer = time-outMoving updo/moving to floorMoving downdo/moving to floorIdletimer = 0do/increase timer圖4.9 guard-condition:timer = time-out帶一個guard-conditio
10、n的狀態(tài)轉換的例子如下: t = 15 sec number of invoices > n withdrawal ( amount ) balance >= amount Initializingdo/bootupWorkingShutting Downturn PC onshut downScreensavingtime outkeystrokeormouse movement圖4.10 帶保護條件的GUI 的狀態(tài)圖Action-Expression(動作表達式)Onfirst floorarrivedarrivedgo up (floor)go up (floor)go do
11、wn (floor)timer = time-out / go down (first floor)Moving updo/moving to floorMoving downdo/moving to floorIdletimer = 0do/increase timer圖4.11 在Idle 狀態(tài)和On first floor 狀態(tài)之間的狀態(tài)轉換上有一個guard-condition和一個 action-expression。帶有action-expression的狀態(tài)轉換的例子如下:increase ( ) / n : = n+1 / m : = m+1add (n) / sum : =
12、sum + n/ flashSend-Clause(發(fā)送語句)send-clause是動作的特殊情況。它是一個用于在兩個狀態(tài)的轉換過程中發(fā)送消息的顯式語法。該語法包括一個destination-expression和一個event-name。例如,下面的action-expression: timer = Time-out / go down ( first floor )可以被轉換成如下的send-clause: timer = Time-out self.go down ( first floor )其他帶有send-clause的狀態(tài)轉換的例子如下:out_of_paper ( ) in
13、dicator.light( )left_mouse_btn_down ( location ) / color := pick_color ( location ) pen.set ( color )4.2.2 事件事件是指發(fā)生的某件事情,它可以導致產生某一動作。Displaydo/displaycurrent timeSet minutedo/displayminutesSet hoursdo/display hoursmode_buttonmode_buttoninc/hours := hours + 1inc/minutes := minutes + 1mode_buttonDigit
14、al_watchmode_button()inc()類狀態(tài)圖圖4.12 Digital_watch類及其相應的狀態(tài)圖在UML中有以下四種類型的事件:· 條件變?yōu)檎妫哼@種事件在圖形上顯示為一個狀態(tài)轉換上的guard-condition條件。· 接收到一個顯式的來自其他對象的信號:在圖形上顯示為狀態(tài)轉換上的一個event-signature。· 接收到操作調用:對象調用了另一個對象中的操作。在圖形上顯示為狀態(tài)轉換上的一個 event-signature。· 指定的一段時間的消耗:在圖形上顯示為狀態(tài)轉換上的一個時間表達式。錯誤也是一種事件例如:errorout
15、_of_memory類可以接收或發(fā)送消息。信號也是普通的類,但只用于發(fā)送信號。信號類可以使用signal構造型來構造。signalInputabstractdevice: Devicetime: TimesignalMouseabstractup: Booleandown: BooleanxPos: IntyPos: IntsignalKeyboardcharacter: Charup: Booleandown: BooleansignalVoice Recognitioncommando: stringsignalRight MouseButtonsignalLeft MouseButton
16、Senddo/send(input) to corresponding classIdleInput輸入信號Input可以是下述任意一種類的對象:Keyboard, Left Mouse Button, Right Mouse Button, Voice Recognition圖4.13 帶抽象父類的信號類層次結構Java ImplementationDisplaydo/displaycurrent timeSet minutedo/displayminutesSet hoursdo/display hoursmode_buttonmode_buttoninc/hours := hours +
17、 1 modulo 24inc/minutes := minutes + 1 modulo 60mode_button圖4.14 一個數(shù)字手表的狀態(tài)圖public class State public final int Display = 1; public final int Set_hours = 2; public final int Set_minutes = 3; public int value;public class Watchprivate State state = new State ( );private DigitalDisplay LCD = new Digita
18、lDisplay ( ); public Watch ( ) state.value = State.Display ( ); LCD.display_time ( ); public void mode_button ( ) switch ( state.value ) case State.Display : LCD.display_time ( ); state.value = State.Set_hours; break;case State.Set_Hours : LCD.display_hours ( ); state.value = State.Set_minutes; brea
19、k; case State.Set_minutes : LCD.display_time ( ); state.value = State.Display; break;public void inc ( )case ( state.value )case State.Display :;break;case State.Set_hours :LCD.inc_hours ( );break;case State.Set_minutes :LCD.inc_minutes ( );break;使用中維修中閑置報廢修好損壞多余重新使用不能修好超過年限圖4.15 一個設備使用狀態(tài)的狀態(tài)圖4.3 在狀態(tài)
20、圖之間發(fā)送消息On/StopOn/PlayOffOffOnOn ()Off ()Play ()Stop ()Remote ControlOn ()Play ()Off ()Stop ()Off()/Stop()CD PlayerOn ()Off ()Play ()Stop ()圖4.16 遙控器對象(Remote Control)向CD播放機對象(CD Player)發(fā)送消息待命啟動加熱計時關機加熱開機關機暫停溫度計時控制器電烤箱加熱( )加熱( )關機( ) 計時器5分鐘關機( )加熱( )關機( )溫度120溫度140圖4.17 狀態(tài)圖之間的消息發(fā)送4.3.1 子狀態(tài)一個狀態(tài)可以包含一些嵌套的子狀態(tài)(Substate)。這些子狀態(tài)可能是與子狀態(tài)(And-substate),也可能是或子狀態(tài)(Or-substate)。ForwardBackwardRunning圖4.18 或子狀態(tài)ForwardBackwardHigh speedLow speedRunning圖4.19 與子狀態(tài)待機提速運行減速使用中啟動開機到達運行速度停機速度=0圖4.20 描述設備使用狀況的嵌套狀態(tài)圖4.3.2 歷史指示器歷史指示器(History
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生態(tài)旅游服務合同標準文本4篇
- 2025年度高性能鋁合金產品批量采購銷售合同4篇
- 二零二五版?;愤\輸車輛燃油消耗優(yōu)化合同3篇
- 2025年蝦苗養(yǎng)殖基地飼料國際物流與清關服務合同范本3篇
- 二零二五版?;愤\輸安全管理協(xié)議3篇
- 2025年度水利工程漏水應急響應與免責合同4篇
- 二零二五年度煤矸石破碎再生建材訂購協(xié)議3篇
- 二零二五年度國際航運服務合同4篇
- 二零二五年度高端住宅認籌合同范本2篇
- 2025年訴訟保全擔保流程執(zhí)行與合規(guī)審查合同3篇
- 2024版塑料購銷合同范本買賣
- 【高一上】【期末話收獲 家校話未來】期末家長會
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 二年級下冊加減混合豎式練習360題附答案
- 自帶藥物治療告知書
- 房產中介門店6S管理規(guī)范
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術規(guī)程
- 汽輪機盤車課件
- 異地就醫(yī)備案個人承諾書
評論
0/150
提交評論