




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2024/8/2111什么是狀態(tài)圖?狀態(tài)圖描述了一個(gè)對(duì)象或交互過(guò)程在它的生命周期中對(duì)一系列外界激勵(lì)所呈現(xiàn)出的不同狀態(tài)以及它相應(yīng)的響應(yīng)和活動(dòng)狀態(tài)機(jī)用狀態(tài)和瞬時(shí)過(guò)程的變化圖形來(lái)表示一個(gè)對(duì)象對(duì)外界激勵(lì)下的響應(yīng),狀態(tài)機(jī)一般附著在一個(gè)對(duì)象或具體的方法上狀態(tài)圖描述了一個(gè)狀態(tài)機(jī),在我們考慮的范圍內(nèi),它們是同一件事UML中關(guān)于狀態(tài)圖的定義和描述主要是采用DavidHare提出的狀態(tài)圖方法并加上了面向?qū)ο蟮暮x2024/8/2122狀態(tài)圖的構(gòu)成狀態(tài)圖由一組表示狀態(tài)和遷移組成。一個(gè)簡(jiǎn)單的編輯器可以被看作為一個(gè)有限狀態(tài)機(jī),它具有狀態(tài)Empty,Waitingforacommand,和Waitingfortext.事件Loadfile,Inserttext,Insertcharacter,Saveandquit引發(fā)狀態(tài)機(jī)中的狀態(tài)的遷移2024/8/2133什么是狀態(tài)?狀態(tài)表示的是一個(gè)對(duì)象或交互過(guò)程中的一個(gè)特定階段:滿足了某一個(gè)條件,進(jìn)行某項(xiàng)活動(dòng)或等待某個(gè)事件的發(fā)生,狀態(tài)對(duì)應(yīng)一段有限的時(shí)間。狀態(tài)對(duì)應(yīng)于一組對(duì)象屬性的值狀態(tài)由一個(gè)帶圓角的矩形表示兩個(gè)特殊狀態(tài):初始狀態(tài):一個(gè)小實(shí)心黑圓終止?fàn)顟B(tài):一個(gè)套有小實(shí)心黑圓得圓2024/8/2144什么是遷移?一個(gè)遷移表示由事件、條件或事件觸發(fā)后狀態(tài)的改變狀態(tài)間的遷移用一根帶箭頭的直線來(lái)表示。2024/8/2155.動(dòng)作可以在狀態(tài)內(nèi)使用動(dòng)作表示其行為動(dòng)作是選取一段輸入且產(chǎn)生一組輸出并最終可改變系統(tǒng)的狀態(tài)動(dòng)作的執(zhí)行只需要一小段時(shí)間且執(zhí)行不可中斷動(dòng)作可發(fā)生在以下3個(gè)位置:當(dāng)一條遷移被選中時(shí)當(dāng)進(jìn)入一個(gè)狀態(tài)時(shí)(entry)當(dāng)退出一個(gè)狀態(tài)時(shí)(exit)2024/8/2162024/8/2176.活動(dòng)一個(gè)狀態(tài)可關(guān)聯(lián)到一個(gè)活動(dòng),該活動(dòng)的執(zhí)行與駐留在這一狀態(tài)上的對(duì)象的生命周期一樣長(zhǎng)動(dòng)作與活動(dòng)的區(qū)別:動(dòng)作的執(zhí)行時(shí)間短且不可中斷,而一個(gè)活動(dòng)的執(zhí)行需要一段時(shí)間且其執(zhí)行是可以中斷的,其中斷的時(shí)機(jī)就是該狀態(tài)的一個(gè)遷移被時(shí)活動(dòng)使用“do標(biāo)識(shí)”2024/8/2182024/8/2192024/8/21102024/8/21112024/8/21127.內(nèi)部遷移內(nèi)部遷移指一個(gè)未離開(kāi)該狀態(tài)的遷移。通過(guò)事件觸發(fā)內(nèi)部遷移,并可出現(xiàn)與這些事件相關(guān)聯(lián)的動(dòng)作2024/8/21138.嵌套狀態(tài)圖嵌套簡(jiǎn)化了復(fù)雜性,可用于取代內(nèi)部遷移2024/8/21142024/8/2115打電話的狀態(tài)圖2024/8/21169.建模技巧/1狀態(tài)機(jī)最經(jīng)常被用以對(duì)一個(gè)對(duì)象的生命周期中的行為進(jìn)行建模,特別是在對(duì)象具有依賴于狀態(tài)的行為的時(shí)候可以具有狀態(tài)機(jī)的包括類,子系統(tǒng),用例和接口
(確定實(shí)現(xiàn)接口的對(duì)象必須滿足的狀態(tài))2024/8/21179.建模技巧/2在實(shí)時(shí)系統(tǒng)中,狀態(tài)機(jī)可以用于進(jìn)程(capsules)和協(xié)議(確定實(shí)現(xiàn)協(xié)議的對(duì)象需要滿足的狀態(tài))并不是所有的對(duì)象都需要狀態(tài)機(jī).
如果對(duì)象的行為是簡(jiǎn)單的,比如說(shuō)它只是簡(jiǎn)單的存儲(chǔ)和獲取數(shù)據(jù),對(duì)象的行為是狀態(tài)不變的(state-invariant),那么其狀態(tài)機(jī)就沒(méi)有多少意義對(duì)對(duì)象的生命周期的建模涉及到三件事情:描述對(duì)象需要響應(yīng)的事件對(duì)這些事件的響應(yīng)過(guò)去對(duì)當(dāng)前行為的影響對(duì)對(duì)象的生命周期的建模也涉及到?jīng)Q定對(duì)象響應(yīng)事件的次序,這種響應(yīng)始于對(duì)象的創(chuàng)建時(shí)刻,繼續(xù)直到其銷毀2024/8/21189.建模技巧/3為了對(duì)對(duì)象的生命周期進(jìn)行建模:確定狀態(tài)機(jī)的背景,是類,用例,還是整個(gè)系統(tǒng)如果背景是類或者是一個(gè)用例,收集鄰近的類,包括父類或者通過(guò)關(guān)聯(lián)或依賴關(guān)系能夠到達(dá)的類,這些鄰居是動(dòng)作的可能的目標(biāo),或者是保安條件中包含的內(nèi)容如果背景是整個(gè)系統(tǒng),將焦點(diǎn)放在系統(tǒng)的某一個(gè)行為上,然后考慮對(duì)象在該方面的生命周期。整個(gè)系統(tǒng)的生命周期太大了。建立對(duì)象的初始和最終狀態(tài),如果對(duì)于初始和最終狀態(tài)有前置條件或后置條件,也要定義它們2024/8/2119確定對(duì)象能夠響應(yīng)的事件,它們可以從對(duì)象的接口中找到,在實(shí)時(shí)系統(tǒng)中,它們可以從對(duì)象的協(xié)議中找到從初始狀態(tài)到最終狀態(tài),畫(huà)出對(duì)象的最高層的狀態(tài),將這些狀態(tài)用轉(zhuǎn)移連接起來(lái),這些連接由特定的事件觸發(fā)確定進(jìn)入和退出動(dòng)作通過(guò)使用子狀態(tài)能夠擴(kuò)展和簡(jiǎn)化狀態(tài)機(jī)2024/8/21209.建模技巧/4檢查是否狀態(tài)機(jī)中所有的事件觸發(fā)轉(zhuǎn)換與由對(duì)象實(shí)現(xiàn)的接口所期望的事件匹配所有的對(duì)象接口期望的事件都包含在狀態(tài)機(jī)中在實(shí)時(shí)系統(tǒng)中,對(duì)進(jìn)程的協(xié)議進(jìn)行同樣的檢查。確定那些明確希望忽略事件的地方(例如延遲事件)2024/8/2121是否狀態(tài)機(jī)中的所有的動(dòng)作得到了包含的對(duì)象的關(guān)系、方法和操作支持在狀態(tài)圖中進(jìn)行跟蹤檢查,將它與期待的事件和響應(yīng)的順序進(jìn)行比較,搜索那些到達(dá)不了的狀態(tài)和“死鎖”狀態(tài)在調(diào)整狀態(tài)機(jī)圖時(shí),確保語(yǔ)義不變2024/8/21229.建模技巧/5在有選擇的情形下,盡量使用狀態(tài)機(jī)的可視化語(yǔ)義而不是寫(xiě)詳細(xì)的轉(zhuǎn)移說(shuō)明。例如,不要在一個(gè)轉(zhuǎn)移上列出多個(gè)信號(hào),然后用文字說(shuō)明依據(jù)不同的信號(hào)來(lái)管理不同的控制流;代之以單獨(dú)的轉(zhuǎn)移,由單獨(dú)的信號(hào)觸發(fā)。2024/8/21239.建模技巧/6狀態(tài)命名根據(jù)在一個(gè)狀態(tài)中等待或發(fā)生的情況來(lái)確定。記住,狀態(tài)不是一個(gè)“時(shí)間點(diǎn)”,它是狀態(tài)機(jī)等待什么事發(fā)生的一段時(shí)間。例如‘waitingForEnd’
就比‘end’好;
‘timingSomeActivity’
就比‘timeout’好.不要把狀態(tài)命名成動(dòng)作2024/8/21249.建模技巧/7一致性命名。給狀態(tài)機(jī)中的每一個(gè)狀態(tài)和轉(zhuǎn)換一個(gè)唯一的名字;這將使源代碼級(jí)的調(diào)試更容易小心使用狀態(tài)變量(控制行為的屬性)2024/8/21259.建模技巧/8如果一個(gè)圖上5±2狀態(tài),考慮使用子狀態(tài)。一般而言,在通常的情況下十個(gè)狀態(tài)可能沒(méi)有問(wèn)題,但是兩個(gè)狀態(tài)之間卻有四十個(gè)轉(zhuǎn)換肯定需要重新考慮。我們需要保證狀態(tài)圖是容易理解的根據(jù)觸發(fā)事件和/或在轉(zhuǎn)換上發(fā)生的情況來(lái)命名轉(zhuǎn)換。在選擇名字時(shí),也需要從可理解性的角度出發(fā)2024/8/21269.建模技巧/9當(dāng)你看到一個(gè)選擇點(diǎn),你需要問(wèn)一下是否能夠?qū)⑦x擇條件的責(zé)任分配給另外一個(gè)組件。在這種情況下,發(fā)送者或者其它活動(dòng)者進(jìn)行決策,并將帶有決策信息的信號(hào)發(fā)送給另外一個(gè)對(duì)象,該信號(hào)的名字要帶有決策信息,例如信號(hào)的名字為isFull和isEmpty,而不應(yīng)該是value和checkingmessagedata)2024/8/21279.建模技巧/10選擇點(diǎn)的命名:在選擇點(diǎn)處的回答問(wèn)題的命名要采用描述性的方法例如,‘isThereStillLife’或者'isItTimeToComplain'選擇點(diǎn)名字是唯一的:對(duì)任何對(duì)象,盡力保證選擇點(diǎn)的名字是唯一的(同樣,保持轉(zhuǎn)換的名字是唯一的)轉(zhuǎn)換的表達(dá)不能過(guò)長(zhǎng):如果過(guò)長(zhǎng),需要考慮用函數(shù),或者將公共的代碼片斷用函數(shù)表示,轉(zhuǎn)換必須讀起來(lái)象高層的偽代碼,例如,如果轉(zhuǎn)換上的代碼長(zhǎng)于25行,可能就太長(zhǎng)了2024/8/21289.建模技巧/11動(dòng)作根據(jù)它們的任務(wù)命名注意entry和exit動(dòng)作,很容易發(fā)生修改后,忘了修改它們退出動(dòng)作可以提供安全特性,例如從‘heaterOn’到heateroff狀態(tài)之間的退出動(dòng)作,該動(dòng)作就用以確保狀態(tài)轉(zhuǎn)換2024/8/21299.建模技巧/12子狀態(tài)必須包含兩個(gè)或以上狀態(tài),除非狀態(tài)機(jī)是抽象的并將被包含的元素的子類所修飾選擇點(diǎn)必須被用于在動(dòng)作或轉(zhuǎn)換的條件邏輯的場(chǎng)合。選擇點(diǎn)容易被看到,而在代碼中表達(dá)的條件邏輯是隱藏的,容易被忽略2024/8/21309.建模技巧/13避免下列保安條件:如果一個(gè)事件能觸發(fā)多個(gè)轉(zhuǎn)換,沒(méi)有一個(gè)控制確定對(duì)哪一個(gè)保安條件首先進(jìn)行判斷,這樣的情況下,結(jié)果是不可預(yù)測(cè)的多個(gè)保安條件都可能是真的,但是只有一個(gè)轉(zhuǎn)換可以遵循,路徑的選擇可能是無(wú)法預(yù)測(cè)的保安條件不是可視化的,很難看到它們的存在2024/8/21319.建模技巧/14不要使?fàn)顟B(tài)機(jī)象流程圖
這種狀態(tài)可能意味著你對(duì)一個(gè)可能實(shí)際上不存在的抽象情形進(jìn)行了建模:
使用了一個(gè)主動(dòng)類對(duì)最好采用被動(dòng)(或數(shù)據(jù))類的行為進(jìn)行建模采用緊密耦合的數(shù)據(jù)類和主動(dòng)類對(duì)一個(gè)數(shù)據(jù)類進(jìn)行建模(例如,數(shù)據(jù)類被用于傳遞類型信息,但是主動(dòng)類包含了絕大部分的數(shù)據(jù),這些數(shù)據(jù)本來(lái)應(yīng)該是與數(shù)據(jù)類相聯(lián)系的).
2024/8/2132這種對(duì)狀態(tài)機(jī)錯(cuò)誤的應(yīng)用可以通過(guò)以下癥狀來(lái)判斷:
消息發(fā)送給自己只是為了重用代碼非常少的狀態(tài),很多的選擇點(diǎn)在狀態(tài)機(jī)中沒(méi)有一個(gè)循環(huán),這種狀態(tài)機(jī)在過(guò)程控制應(yīng)用或者控制事件序列是有效的;在分析階段中,它們的出現(xiàn)代表了狀態(tài)機(jī)被弱化成流程圖當(dāng)問(wèn)題找到后:
使主動(dòng)類變小從而將職責(zé)分得更清楚將更多的行為移到與問(wèn)題主動(dòng)類相關(guān)的數(shù)據(jù)類中將更多的行為移到主動(dòng)類功能中
構(gòu)造更富有意義的信號(hào)而不是依賴于數(shù)據(jù)2024/8/2133小組作業(yè)航班從Tentative(暫定)開(kāi)始。有人制定時(shí)刻表,確定是否包含這個(gè)航班。如果計(jì)劃批準(zhǔn),則航班轉(zhuǎn)入Scheduled狀態(tài)。航班時(shí)刻表發(fā)布到Internet上離起飛時(shí)間小于60天,該航班開(kāi)始開(kāi)始售票,進(jìn)入Open狀態(tài)可以從航班中增加和刪除旅客,但售出最后一張票,航班就滿了。如果有人退票,則再次開(kāi)始售票飛機(jī)起飛10分鐘前,航班停止售票如果飛機(jī)還沒(méi)有到達(dá),則航班延遲。若延遲超過(guò)4小時(shí),則航班取消。若乘客不足50人,則也把航班取消。如果航班取消,則航空公司要為乘客尋找另一航班。如果飛機(jī)到達(dá),則其起飛和著陸,完成這個(gè)航班航班從Tentative(暫定)開(kāi)始。有人制定時(shí)刻表,確定是否包含這個(gè)航班。如果計(jì)劃批準(zhǔn),則航班轉(zhuǎn)入Scheduled狀態(tài)。航班時(shí)刻表發(fā)布到Internet
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)防溺水視頻觀后感
- 五千以內(nèi)加減混合兩步運(yùn)算水平監(jiān)控口算題大全附答案
- 超市促銷活動(dòng)總結(jié)(15篇)
- 酒店年度工作總結(jié)(集錦15篇)
- 2022年福建省中考化學(xué)第9題說(shuō)題課件
- 酒店地毯保養(yǎng)
- 重度燒傷的護(hù)理流程
- 酒店會(huì)議服務(wù)培訓(xùn)
- 2024-2025學(xué)年深圳市初三英語(yǔ)中考適應(yīng)性考試英語(yǔ)試題(含答案)
- 小學(xué)五年級(jí)數(shù)學(xué)口算1000題
- 2024年黑龍江公務(wù)員《行政職業(yè)能力測(cè)驗(yàn)》試題真題及答案
- 2025年鄂爾多斯職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- 湖南省2022年普通高等學(xué)校對(duì)口招生考試英語(yǔ)試題(無(wú)答案)
- 2025年企業(yè)與個(gè)體工商戶長(zhǎng)期供銷合同模板
- 家政收納培訓(xùn)課件
- 聲學(xué)基礎(chǔ)課后題答案
- 煙霧探測(cè)與報(bào)警系統(tǒng)
- 【七年級(jí)下冊(cè)地理中圖版】專題04 交通運(yùn)輸 【知識(shí)梳理】
- 課題申報(bào)書(shū):產(chǎn)教融合共同體在東盟國(guó)家跨境建設(shè)的風(fēng)險(xiǎn)與防范對(duì)策研究
- 12J201平屋面建筑構(gòu)造圖集(完整版)
- 2024年新疆區(qū)公務(wù)員錄用考試《行測(cè)》真題及答案解析
評(píng)論
0/150
提交評(píng)論