面向對象的分析和設計_第1頁
面向對象的分析和設計_第2頁
面向對象的分析和設計_第3頁
面向對象的分析和設計_第4頁
面向對象的分析和設計_第5頁
已閱讀5頁,還剩210頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

軟件工程第7章面向對象的分析和設計內容摘要面向對象的基本概念面向對象的分析和設計過程UML概述用況建模靜態建模動態建模物理體系結構建模2/215內容摘要面向對象的基本概念面向對象的分析和設計過程UML概述用況建模靜態建模動態建模物理體系結構建模3/215PeterCoad和EdwardYourdon提出用下列等式識認面向對象方法:面向對象

=對象(object)

+分類(classification)

+繼承(inheritance)

+通過消息的通信(communicationwithmessages)可以說,采用這四個概念開發的軟件系統是面向對象的4/215面向對象方法的出現很快受到計算機軟件界的青睞,并成為20世紀90年代的主流開發方法。我們可以從下列幾個方面來分析其原因:從認知學的角度來看,面向對象方法符合人們對客觀世界的認識規律。面向對象方法開發的軟件系統易于維護,其體系結構易于理解、擴充和修改。面向對象方法中的繼承機制有力支持軟件的復用。5/215面向對象的基本概念1.對象(object)

對象是指一組屬性以及這組屬性上的專用操作的封裝體。

屬性(attribute)通常是一些數據,有時它也可以是另一個對象。每個對象都有它自己的屬性值,表示該對象的狀態。對象中的屬性只能通過該對象所提供的操作來存取或修改。

操作(operation)(也稱方法或服務)規定了對象的行為,表示對象所能提供的服務。

6/215封裝(encapsulation)是一種信息隱蔽技術,用戶只能看見對象封裝界面上的信息,對象的內部實現對用戶是隱蔽的。封裝的目的是使對象的使用者和生產者分離,使對象的定義和實現分開。

一個對象通常可由對象名、屬性和操作三部分組成。7/2152.類(class)類是一組具有相同屬性和相同操作的對象的集合。一個類中的每個對象都是這個類的一個實例(instance)。類是創建對象的模板,從同一個類實例化的每個對象都具有相同的結構和行為。8/215轎車型號:字符串顏色:字符串牌照號:字符串....張經理的轎車型號=桑塔納顏色=紅色牌照號=滬AN2037....類實例對象9/2153.繼承(inheritance)繼承是類間的基本關系,它是基于層次關系的不同類共享數據和操作的一種機制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和操作外,可以繼承其父類(或祖先類)的屬性和操作,還可以對父類(或祖先類)中的操作重新定義其實現方法。10/215

矩形長寬對角線計算面積計算對角線

多邊形頂點數頂點坐標計算面積旋轉11/215有時,我們定義一個類,它把一些類組織起來,提供一些公共的行為,但并不需要使用這個類的實例,而僅使用其子類的實例。我們把這種沒有實例的類稱為抽象類(abstractclass)。在抽象類中可以定義抽象操作,抽象操作指:只定義這個類的操作接口,不定義它的實現,其實現部分由其子類定義。抽象操作操作名用斜體字表示,也可以在操作特征(signature)后面加上特征字符串{abstract}。12/215交通工具飛行器汽車

船轎車貨車

一般-特殊關系13/215

如果一個子類只有唯一一個父類,這個繼承稱為單一繼承。如果一個子類有一個以上的父類,這種繼承稱為多重繼承。水上交通工具

陸上交通工具

水陸兩棲交通工具多重繼承14/2154.消息(message)消息傳遞是對象間通信的手段,一個對象通過向另一個對象發送消息來請求其服務。一個消息通常包括接收對象名、調用的操作名和適當的參數(如果有必要的話)。消息只告訴接收對象需要完成什么操作,但并不指示接收者怎樣完成操作。消息完全由接收者解釋,接收者獨立決定采用什么方法完成所需的操作。15/2155.多態性(polymorphism)多態性是指同一個操作作用于不同的對象上可以有不同的解釋,并產生不同的執行結果。例如“畫”操作,作用在“矩形”對象上,則在屏幕上畫一個矩形,作用在“圓”對象上,則在屏幕上畫一個圓。也就是說,相同操作的消息發送給不同的對象時,每個對象將根據自己所屬類中定義的這個操作去執行,從而產生不同的結果。16/2156.動態綁定(dynamicbinding)動態綁定是指在程序運行時才將消息所請求的操作與實現該操作的方法連接起來。傳統的程序設計語言的過程調用與目標代碼的連接(即調用哪個過程)放在程序運行前(即編譯鏈接時)進行(稱為靜態綁定),而動態綁定則是把這種連接推遲到運行時才進行。動態綁定是一種在運行時確定被執行代碼的技術。17/215在一般與特殊關系中,子類是父類的一個特例,所以父類對象可以出現的地方,也允許其子類對象出現。因此在運行過程中,當一個對象發送消息請求服務時,要根據接收對象的具體情況將請求的操作與實現的方法進行連接,即動態綁定。18/215if條件thenp:=t;elsep:=r;area:=p.getarea;getArea{abstract}polygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVarp:polygon;Vart:triangle:=triangle.new;Varr:rectangle:=rectangle.new;19/215內容摘要面向對象的基本概念面向對象的分析和設計過程UML概述用況建模靜態建模動態建模物理體系結構建模20/215面向對象分析

Object-OrientedAnalysis獲取客戶對系統的需求:包括標識場景和用況,以及建造需求模型用基本的需求為指南,來確定類和對象(包括屬性和操作)定義類的結構和層次(繼承關系)建造對象—關系模型建造對象—行為模型利用用況/場景來復審分析模型21/2151.獲取客戶對系統的需求需求獲取必須讓客戶與開發者充分地交流,這里介紹一種采用用況來收集客戶需求的技術。分析員首先標識使用該系統的不同的執行者(actor),這些執行者代表使用該系統的不同的角色。每個執行者可以敘述他如何使用系統,或者說他需要系統提供什么功能。執行者提出的每一個使用場景(或功能)都是系統的一個用況的實例,一個用況描述了系統的一種用法(或一個功能),所有執行者提出的所有用況構成系統的完整的需求。

分析過程22/215注意,執行者與用戶是不同的兩個概念,一個用戶可以扮演幾個角色(執行者),一個執行者可以是用戶,也可以是其他系統(應用程序或設備)。得到的用況必須進行復審,以使需求完整。23/2152.

標識類和對象類和對象來自問題領域可以先標識候選類,然后進行篩選24/2153.定義類的結構和層次類的結構主要有兩種:一般—特殊(generalization—specialization)結構和整體—部分(whole—part)結構。

一般—特殊結構是一種分類結構,反映了類間的一般與特殊的關系。一般類與特殊類之間是一種“isa”的關系,如:汽車是一種交通工具。同樣,特殊類還可以分為更特殊的類,這樣可形成類的層次結構。

整體—部分結構反映了類間的整體與部分關系。值得注意的是,整體—部分關系是對對象而言的,而不是對類的。整體—部分關系是一種“hasa”的關系,如“汽車”有“發動機”。同樣,整體—部分結構也具有層次結構。25/2154.

建造對象——關系模型對象--關系模型描述了系統的靜態結構,它指出了類間的關系(relationship)

類之間的關系有關聯、依賴、泛化、實現等26/2155.

建立對象——行為模型對象--行為模型描述了系統的動態行為,它們指明系統如何響應外部的事件或激勵(stimulus)。建模的步驟如下:評估所有的用況,以完全理解系統中交互的序列標識驅動交互序列的事件,理解這些事件如何和特定的對象相關聯為每個用況創建事件軌跡(eventtrace)為系統建造狀態機圖復審對象--行為模型,以驗證準確性和一致性27/215面向對象設計

(Object_OrientedDesign)

面向對象設計的一般步驟如下:系統設計將子系統分配到處理器選擇實現數據管理、界面支持和任務管理的設計策略為系統設計合適的控制機制復審并考慮權衡(折衷)28/215對象設計在過程級別(procedurallavel)設計每個操作,即設計每個操作的實現細節定義內部類為類屬性設計內部數據結構消息設計使用對象間的協作和對象--關系模型,設計消息模型復審復審設計模型并在需要時迭代。29/2151.系統設計1)

將分析模型劃分成子系統在OO系統設計中,我們把分析模型中緊密相關的類、關系等設計元素包裝成子系統。通常,子系統的所有元素共享某些公共的性質,它們可能都涉及完成相同的功能;它們可能駐留在相同的產品硬件中;或者它們可能管理相同的類和資源。子系統由它們的責任所刻畫,即,一個子系統可以通過它提供的服務來標識。在OOD中,這種服務是完成特定功能的一組操作。

30/215

子系統的設計準則是:(1)子系統應具有定義良好的接口,通過接口和系統的其它部分通信;(2)除了少數的“通信類”外,子系統中的類應只和該子系統中的其它類協作;(3)子系統的數量不宜太多;(4)可以在子系統內部再次劃分,以降低復雜性。31/2152)標識問題本身的并發性,并為子系統分配處理器通過對對象--行為模型的分析,可發現系統的并發性。如果對象(或子系統)不是同時活動的,則它們不需并發處理,此時這些對象(或子系統)可以在同一個處理器上實現。反之,如果對象(或子系統)必須對一些事件同時異步地動作,則它們被視為并發的,此時,可以將并發的子系統分別分配到不同的處理器,或者分配在同一個處理器,而由操作系統提供并發支持。32/2153)任務管理設計Coad和Yourdon提出如下管理并發任務對象的設計策略:(1)確定任務的類型;(2)必要時,定義協調者任務和關聯的對象;(3)將協調者任務和其它任務集成。通常可通過了解任務是如何被啟動的來確定任務的類型,如事件驅動任務,時鐘驅動任務。每個任務應該定義其優先級,并識別關鍵任務。當有多個任務時還可以考慮增加一個協調者任務,以控制這些任務協同工作33/2154)數據管理設計通常數據管理設計成層次模式,其目的是將數據的物理存儲及操縱與系統的業務邏輯加以分離。數據管理的設計包括設計系統中各種數據對象的存儲方式(如內部數據結構、文件、數據庫),以及設計相應的服務,即為要儲存的對象增加所需的屬性和操作。34/2155)資源管理設計

OO系統可利用一系列不同的資源(如磁盤驅動器、處理器、通信線路等外部實體或數據庫、對象等抽象資源),很多情況下,子系統同時競爭這些資源,因此要設計一套控制機制和安全機制,以控制對資源的訪問,避免對資源使用的沖突。

6)人機界面設計對大多數應用系統而言,人機界面本身是一個非常重要的子系統。人機界面主要強調人如何命令系統,以及系統如何向人提交信息。它包括窗口、菜單、報告的設計。

35/2157)子系統間的通信子系統之間可以通過建立客戶/服務器連接進行通信,也可以通過端對端(peertopeer)連接進行通信。我們必須確定子系統間通信的合約(contract),合約提供了一個子系統和另一個子系統交互的方式。

36/2152.

對象設計對象設計是為每個類的屬性和操作作出詳細的設計,并設計連接類與它的協作者之間的消息規約。對象描述1)協議描述(外部的黑盒描述):描述對象的接口,即定義對象可以接收的消息以及當對象接收到消息后完成的相關操作;2)實現描述(內部描述):描述傳送給對象的消息所蘊含的每個操作的實現細節,實現細節包括有關對象私有部分的信息,即關于描述對象屬性的數據結構的內部細節和描述操作的過程細節。對象的使用者只需要關心協議描述37/2152)設計算法和數據結構為對象中的屬性和操作設計數據結構和實現算法。3.

設計模式(designpatterns)在許多面向對象系統中,存在一些類和通信對象的重復出現的模式。這些模式求解特定的設計問題,使面向對象設計更靈活,并最終可復用。這些模式幫助設計者復用以前成功的設計,設計者可以把這些模式應用到新的設計中。38/215一個設計模式通常可用四個信息來描述:1)模式名設計模式名應具有實際的含義,它能反映模式的適用性和意圖。2)使模式可被應用所必須存在的環境和條件。3)設計模式的特征模式特征指出一些設計的屬性,調整這些屬性使該模式能適應各種不同的問題。這些屬性表示設計的特征,這些特征能被用于檢索(通過數據庫)以找到合適的模式。4)應用設計模式的結果(consequences)對于一個設計模式的使用結果表明設計決策的走向。39/215CategoryClass-&-ObjectStructure1+1+AttributeMethodObjectmodel由五個層次組成,相當于把五張透明膠片疊在一起,每一層顯示更多的細節。面向對象設計基本過程40/215內容摘要面向對象的基本概念面向對象的分析和設計過程UML概述用況建模靜態建模動態建模物理體系結構建模41/215統一建模語言UMLUnifiedModelingLanguage42/215UML概述為何研究UML—結束方法大戰發展歷史

1994年Booch和Rumbaugh在RationalSoftwareCorporation開始了UML的工作,其目標是創建一個“統一的方法”,

1995年OOSE的創始人Jacobson加盟到這項工作中,工作重點轉移到創建一種統一的建模語言UML1996年6月、10月、1997年1月、11月分別推出了UML0.9、UML0.91、UML1.0、UML1.143/215UML概述1997年11月,OMG(ObjectManagementGroup)批準把UML1.1作為基于面向對象技術的標準建模語言之后,UML進行了持續的修訂和改進,先后產生了UML1.2、1.3、1.4、1.5版本2004年推出了UML2.0,UML2.0對UML1.x作了重大的修改44/215UML模型元素(V1.3)

模型中的實體以及實體間相互連接的關系泛化

對象屬性操作狀態用例

結點接口包依賴關聯聚集模型元素類屬性操作構件注解45/215UML模型元素(V2.0)

模型中的實體以及實體間相互連接的關系部分模型元素注解類屬性操作對象:類屬性操作狀態用況

結點供應接口包依賴關聯泛化主動類屬性操作請求接口構件實現46/215UML2.0的13種圖-1用況圖(usecasediagram)類圖(classdiagram)對象圖(objectdiagram)構件圖(componentdiagram)組合結構圖(compositestructurediagram)順序圖(sequencediagram)通信圖(communicationdiagram)交互圖(interactiondiagram)47/215UML2.0的13種圖-2狀態機圖(statemachinediagram)活動圖(activitydiagram)部署圖(deploymentdiagram)

制品圖(artifactdiagram)包圖(packagediagram)時間圖(timingdiagram)交互概覽圖(interactionoverviewdiagram)48/215UML圖1-用況圖描述參與者與用況(參與者使用系統以實現某一特定目標的情形)之間的關聯關系,以及用況之間的擴展、繼承等關系銀行儲蓄帳戶管理系統《包含》《包含》《包含》銀行職員(用戶代理)帳戶管理銀行間轉帳開戶取款銀行內轉帳注銷存款校驗密碼轉帳報表生成其它銀行帳戶管理系統客戶系統管理員銀行職員(管理人員)49/215UML圖2-類圖展現一組類、接口以及它們相互之間的關系2條或2條以上的線交于0個或1個點lineX1:realY1:realX2:realY2:realpointX:realY:real相交2..*0..150/215UML圖3-對象圖展現一組對象以及相互之間的關系,是依照類圖所建立的一組事物(實例)的靜態快照L1:lineX1=10Y1=10X2=-10Y2=-10L2:lineL3:lineX1=10Y1=5X2=-10Y2=-5L4:lineX1=9Y1=5X2=9Y2=3X1=-10Y1=10X2=10Y2=-10P1:pointX=0Y=0P2:pointX=9Y=4。551/215UML圖4-構件圖描述構件、接口以及構件間的組裝關系的靜態視圖,復合構件本身可以由內部的子構件圖描述應用收費管理信用卡代理構件的內部結構圖信用卡代理狀況購買預購銷售團體銷售:售票員:營業員界面:銷售亭界面:管理員界面:票:信用卡收費個體銷售收費顧客訪問營業員訪問52/215UML圖5-組合結構圖UML2.0新增的圖,展示了類或協作的內部結構,與構件差別不大,經常認為與構件圖等同53/215UML圖6-順序圖描述特定場景下交互各方消息發送和接收的順序呼叫方電話線應叫方54/215UML圖7-通信圖另一種交互圖,強調交互上下文:參與交互的對象或角色的結構組織控制電梯運行的通信圖2:nextjob=GetJob():Elevator:Queue:Order{new}{local}nextjob:Elevatorcontrol:ButtonPush(){parameter}job1.2:Create()1.1*[allqueues]:len:=Length(){broadcast}1.3:Invoke(job)1:GetElevator(floorid)job55/215UML圖8-狀態機圖以狀態機的形式描述目標對象在各種事件作用下的行為電梯升降的狀態機圖Movingupdo/movingtofloorMovingdowndo/movingtofloorIdletimer=0do/increasetimerarrivedarrivedgodown(floor)MovingtoFirstfloorgoup(floor)[timer=time-out]arrivedgoup(floor)Onfirstfloor56/215UML圖9-活動圖描述一系列活動之間的控制流和數據流[未付款][已付款]*[對每一訂單項][有貨][缺貨]取消并退回訂單收到訂單付款認可檢查訂單項制作并發放提貨單更新庫存制作并發放缺貨單制作并發放采購單57/215UML圖10-部署圖描述系統運行時各相關處理單元結點、各結點上部署的構件、以及相互間的通信協議《DecNet》《TCP/IP》《TCP/IP》ClientA:CompaqProPCApplicationServer;SiliconGraphicsO2DatabaseServer:VAXClientB:CompaqProPC58/215UML圖10-部署圖變體:制品圖部署圖的變體:描述系統實現制品的物理結構,制品包括文件、數據庫等這兩個物理文件“承載了”邏輯類HelloWorld的實現59/215UML圖11-包圖描述包(一種模型分解單位)以及包之間的關系售票處計劃廣告進度表客戶記錄票記錄運作售票工資單計算購買60/215UML圖12-時間圖UML2.0新增的圖,描述對象間的交互,但關注于關于時間的推理,而不僅僅是相對順序添水加熱61/215UML圖13-交互概覽圖UML2.0新增的圖可認為是:活動圖+順序圖的混合體使用活動圖的表示法,其中的節點或者是一個交互或者是一個交互引用62/215UML2.0的視圖和圖視圖(view)UML圖(靜態方面)UML圖(動態方面)用況視圖用況圖交互圖狀態機圖活動圖設計視圖類圖對象圖同上交互視圖與設計視圖相同,更強調消息交互方面實現視圖構件圖同上部署視圖部署圖同上需求設計實現部署63/215UML視圖1-用況視圖描述可被最終用戶、分析人員和測試人員看到的系統(外部)行為不涉及系統的內部結構,但卻是系統體系結構設計的驅動力靜態方面:用況圖動態方面:交互圖、狀態機圖、活動圖64/215UML視圖2-設計視圖描述系統設計方案,主要包括類、接口以及相互之間的協作關系靜態方面:類圖、對象圖動態方面:交互圖、狀態機圖、活動圖65/215UML視圖3-交互視圖展示系統不同部分之間的控制流,包括并發和同步機制主要針對系統的非功能性方面,例如性能、可伸縮性、吞吐量等靜態方面:類圖、對象圖動態方面:交互圖、狀態機圖、活動圖與設計視圖的區別:突出控制系統的主動類以及各部分間消息的流動66/215UML視圖4-實現視圖描述組成最終產品發布的相關制品及其關系,實現單元體現為可裝配、打包并發布的文件體現了邏輯單元(類和構件)到物理制品(物理構件、文件等)的映射靜態方面:構件圖動態方面:交互圖、狀態機圖、活動圖67/215UML視圖5-部署視圖描述最終產品物理部署的拓撲結構包括組成整個系統的各種分布式硬件設備,以及各個軟件模塊在這些設備上的部署和運行關系靜態方面:部署圖動態方面:交互圖、狀態機圖、活動圖68/215內容摘要面向對象的基本概念面向對象的分析和設計過程UML概述用況建模靜態建模動態建模物理體系結構建模69/215用況建模用況:文本形式的情節描述,用以說明某參與者使用系統以實現某一特定目標的情形用況建模用于描述一個系統應該做什么,用用況圖來描述(可能有多幅)用況圖給出了用戶所感受到的系統行為,但不描述系統如何實現該功能70/215用況圖用框圖展示各類外部執行者(actor)與系統所提供的用況之間的參與關系,包括:系統邊界、用況執行者(參與者):可能使用這些用況的人或外部系統,參與者與用況連接表示參與者使用了該用況模型元素間關系:關聯、擴展、包含、泛化等每個用況的細節通常用文字描述,也可以用活動圖來描述71/215用況之間的關系-1關系說明記號關聯參與者與所參與的一個用況之間的通信路徑擴展擴展的用況到基本用況的一種關系:擴展用況可以訪問基本用況的所有屬性,并在基本用況基礎上增加新的行為《extend》72/215用況之間的關系-2關系說明記號包含被包含用況是基本用況的一部分,基本用況能看到被包含用況并依賴于它的的執行結果,但二者不能相互訪問其它屬性泛化一個一般用況與一個更特殊的用況之間的關系,特殊用況可繼承一般用況的特征《include》73/215電話訂購系統用況圖客戶售票員送貨員主管建立信用供應訂單訂單支付提供客戶數據產生訂單信用卡支付現金支付設置訂單請求目錄電話訂購《include》《include》《include》《extend》核對身份關聯擴展包含泛化74/215銀行儲蓄帳戶管理系統《include》《include》《include》銀行職員(用戶代理)帳戶管理銀行間轉帳開戶取款銀行內轉帳注銷存款校驗密碼轉帳報表生成其它銀行帳戶管理系統客戶系統管理員銀行職員(管理人員)包含泛化75/215參與者之間的泛化關系76/215用況圖對于各方的作用客戶:用況模型指明了系統的功能,描述了系統能如何使用開發者:用況模型幫助他們理解系統要做什么,同時為以后的其它模型建模、結構設計、實現等提供依據集成測試和系統測試人員:根據用況來測試系統,以驗證系統是否完成了用況指定的功能77/215用況建模步驟定義系統(總體范圍)確定參與者確定用況描述用況定義用況間的關系確認模型78/215用況建模—定義系統范圍/邊界根據項目的總體目標/任務以及基本的開發決策決定做什么不做什么總體目標/任務:實現出版社書籍的網上銷售開發決策:網上支付采用銀聯支付系統、書籍的基本信息來自于出版社已有的編輯和發行管理系統(遺產系統)邊界外的人或系統(第三方系統、遺留系統等)成為候選的參與者79/215用況建模—確定參與者參與者是指與系統交互的人、組織或其它系統參與者代表一種角色,而不是具體的人可分成主參與者和輔助參與者主參與者是用況的直接執行者,例如保險系統中業務員處理保險的注冊和管理輔助參與者對于用況的執行起輔助作用,例如保險系統中管理員負責分配業務員權限80/215確定參與者的啟發式問題誰使用系統的主要功能(主執行者)誰需要從系統中得到對他們日常工作的支持誰需要維護、管理和維持系統的日常運行系統需要控制哪些硬件設備系統需要與哪些其它系統交互哪些人或哪些系統對系統產生的結果(值)感興趣81/215用況建模—確定用況用況的特征用況總是由參與者啟動的執行者必須直接或間接地指示系統去執行用況用況向參與者提供服務或返回結果,這些結果必須是可識別的用況是完整的,一個用況必須是一個完整的描述

(有開始、有結果)82/215用況(UseCase)文本形式的情節描述,用以說明某參與者使用系統以實現某一特定目標的情形例:顧客攜帶所購商品到達收銀臺,收銀員使用POS系統記錄每件商品,系統連續顯示累計金額并逐行顯示細目,顧客輸入支付信息,系統對支付信息進行驗證和記錄,成功后更新庫存信息,顧客從系統得到購物小票然后離開83/215場景(Scenario)使用系統的一個特定情節或用況的一條執行路徑,即用況實例(UseCaseInstance)主成功場景:顧客攜帶商品到收銀臺,順利地完成商品掃描及信用卡付款等全過程替代場景1:…商品掃描失敗,提示輸入商品唯一碼…替代場景2:…信用卡劃賬通訊失敗,提示客戶使用現金結帳………替代場景n:用戶信用卡支付成功后要求退貨……因此用況就是一系列可能的場景集合84/215確定用況的啟發式問題執行者需要系統提供哪些功能?執行者需要系統做什么?執行者是否需要讀、創建、刪除、修改或儲存系統中的某類信息?執行者是否要被系統中的事件提醒,或者執行者是否要提醒系統中某些事情?從功能觀點看,這些事件表示什么?執行者的日常工作是否因為系統的新功能(尤其是目前尚未自動化的功能)而被簡化或提高效率85/215用況建模—描述用況使用文本描述用況的目的用況是如何啟動的:哪個參與者在什么情況下啟動(前提)參與者和用況之間的消息流(步驟)主消息流和其它消息流是什么根據條件或異常情況等選擇不同的流程分支系統中哪些實體被使用或修改(結果),如何確定用況執行結束使用活動圖描述86/215用況的簡要文字描述執行者的簡要描述,如客戶:向公司訂購商品的人客戶代表:公司處理客戶請求的雇員庫存系統:記錄公司庫存的軟件用況的簡要描述,如訂購貨物:客戶創建一個新的請求商品的訂單,并為那些商品付費取消訂單:客戶取消一個已經存在的訂單87/215用況的詳細描述用況名稱、參與者用況的前置條件和后置條件:用況開始和結束的條件事件流:一系列陳述句,從參與者的角度出發的一系列步驟一般有多個事件流:主要流程、其它流程特殊需求:相關的非功能性需求88/215用況的詳細描述結構用例的組成部分注釋用例名稱以動詞開始范圍要設計的系統級別“用戶目標”(基本流程)或“子功能”主要參與者調用系統以提供服務的參與者涉眾及其關注點關注該用例的人,以及他們各自的需要前置條件用例啟動前必須成立的條件后置條件用例結束后必須成立的條件主成功場景典型的、理想的成功場景替換場景其它可能的場景(成功或失敗)特殊需求相關的非功能需求技術和數據變元表不同的I/O方法及數據格式發生頻率當前用例的發生頻率,可能影響調查、測試和實現的時間安排其它問題仍待解決或確認的問題89/215POS系統收銀用況詳細說明-1范圍:下一代POS系統級別:用戶目標主要參與者:收銀員涉眾及其關注點:收銀員:準確、快速地完成收銀操作…

顧客:快速完成付款并獲得購物憑證以方便退貨………前置條件:收銀員經過認證、顧客是超市會員后置條件:正確更新庫存、正確計算稅金……90/215POS系統收銀用況詳細說明-2主成功場景:

1.顧客攜帶商品到收銀臺付款

2.收銀員啟動一次銷售過程……

n.顧客付款系統打印票據完成整個銷售過程替換場景:a.……顧客信用卡額度不足要求退貨……b.……顧客信用卡額度不足要求退貨…………特殊需求:

1.90%情況下信用卡刷卡響應時間小于30秒2.顧客能在1米范圍內清楚看到單價和累計金額顯示……91/215POS系統收銀用況詳細說明-3技術與數據變元:

1.商品ID獲取可以通過掃描和鍵盤輸入兩種方式2.商品ID支持中國、歐洲及日本三種編碼標準

……發生頻率:可能在16小時內不間斷發生其它問題:

1.收銀員下班后是否需要清理現金并進行結帳處理2.該超市是否可能在未來實行24小時營業……92/215確定用況之間的關系關聯:參與者與用況擴展:用況與用況包含:用況與用況泛化:用況與用況93/215實例本實例實現一個簡化了的銀行儲蓄賬戶管理系統,該系統是在銀行的柜臺上對客戶辦理活期儲蓄業務。系統的需求陳述如下:一個客戶可以在多個銀行中開設賬戶,一個客戶也可在同一銀行中開設多個不同的賬戶。客戶可以通過銀行職員進行開戶、存款、取款、轉賬、注銷賬戶等活動。其中轉賬指客戶將自己的某個賬戶上的錢款轉入同一銀行的不同賬戶(稱為銀行內轉賬)或轉入不同銀行的賬戶(稱為銀行間轉賬)。系統管理員負責系統的賬戶管理及業務報表的生成。94/215識別執行者客戶:到銀行辦理儲蓄業務的人,負責輸入密碼銀行職員(客戶代理):銀行工作人員,代表客戶進行儲蓄業務的操作銀行職員(管理人員):銀行工作人員,根據客戶的儲蓄業務更新賬戶管理員:銀行計算機的管理人員,負責賬戶的管理和業務報表的生成95/215識別用況從系統的需求陳述可知,銀行職員(客戶代理)需要系統提供開戶、存款、取款、轉賬、注銷賬戶等功能,這些功能都包含了校驗密碼的功能。系統管理員需要系統提供賬戶管理和報表生成功能。銀行職員(管理人員)則參與了賬戶管理中的更新賬戶的功能。此外,轉賬功能可分為銀行內轉賬和銀行間轉賬,我們可將它們設計成三個用況,其中銀行內轉賬用況和銀行間轉賬用況都繼承了基本轉賬用況。據此分析,得到該系統的用況圖如下圖所示。96/215銀行儲蓄賬戶管理系統《包含》《包含》《包含》銀行職員(用戶代理)賬戶管理銀行間轉賬開戶取款銀行內轉賬注銷存款校驗密碼轉賬報表生成其它銀行賬戶管理系統客戶系統管理員銀行職員(管理人員)97/215開戶用況描述用況名稱:開戶參與的執行者:銀行職員(客戶代理),客戶前置條件:一個合法的銀行職員(客戶代理)已登錄到該系統事件流:1.當選擇開戶功能時用況開始2.輸入客戶信息(姓名、地址、身份證號等)3.從賬戶管理系統獲取新的賬號4.請客戶輸入密碼5.請客戶再次輸入密碼6.如果兩次密碼不一致則回到第4步,否則繼續7.在賬戶庫中添加新賬戶8.打印存折,用況結束后置條件:在賬戶庫中增加了一個新賬戶,得到一張新存折98/215取款用況描述用況名稱:取款參與的執行者:銀行職員(客戶代理)前置條件:一個合法的銀行職員(客戶代理)已登錄到該系統事件流:基本路徑:1.當選擇取款功能時用況開始2.當輸入客戶信息(姓名、賬號等)后

a)如果客戶信息與賬戶不一致,顯示錯誤信息,可以重新輸入或結束用況

b)如果該賬戶被凍結(如因掛失而凍結),顯示凍結信息并結束用況3.輸入并校驗密碼99/2154.輸入取款金額,如果該賬戶的余款小于取款金額,顯示錯誤信息,要求重新輸入5.打印取款單,交客戶簽字6.建立取款事件記錄,更新賬戶信息7.打印存折,用況結束可選路徑:1.在第5步客戶簽字之前的任何時刻,客戶可以取消本次取款,用況結束2.第3步校驗密碼時,如發現密碼不一致,則重新輸入密碼,或用況結束后置條件:如果取款成功,客戶賬戶中的余額被更新(減少),否則余額不變。100/215取款用況的活動圖描述[客戶不確認][客戶確認][余額≥取款額][未凍結][不一致][一致][選擇重新輸入][選擇結束][凍結][余額<取款額]●··●··打印取款單輸入客戶信息顯示錯誤信息建立取款記錄更新賬戶信息打印存折顯示錯誤信息輸入取款金額輸入并校驗密碼顯示凍結信息●··101/215內容摘要面向對象的基本概念面向對象的分析和設計過程UML概述用況建模靜態建模動態建模物理體系結構建模102/215類圖和對象圖類和對象模型的基本模型元素有類、對象以及它們之間的關系對象圖是類圖的實例,描述某一時刻類圖中類的特定實例以及這些實例之間的特定鏈接對象圖使用了與類圖相同的符號,只是在對象名下附加下劃線,對象名后可接以冒號和類名,即

object-name:class-name系統中的類和對象模型描述了系統的靜態結構103/215類圖和對象圖的基本元素

對象名:類名屬性名=值操作類名屬性名:類型操作聚集組合關聯泛化依賴實現104/215類圖和對象圖(例)實例xL4P2lineX1:realY1:realX2:realY2:realpointX:realY:realL1:lineX1=10Y1=10X2=-10Y2=-10L2:lineL3:lineX1=10Y1=5X2=-10Y2=-5L4:lineX1=9Y1=5X2=9Y2=3X1=-10Y1=10X2=10Y2=-10P1:pointX=0Y=0P2:pointX=9Y=4。5P1L1yL2類圖對象圖105/215類圖中類之間的關系關系含義符號關聯兩個元素之間的關聯關系依賴兩個元素之間的依賴關系泛化一般與特殊關系聚集整體與部分之間的關聯關系組合更強的一種整體與部分間的擁有關系,整體負責部分的創建和刪除實現規約(specification)與它的實現之間的關系106/215關聯關系從參與方數量分:二元關聯、多元關聯從參與限制:受限關聯整體和部分的關聯:聚集和組合107/215二元關聯二元關聯表示為在兩個類之間用一條直線連接,直線上可寫上關聯名有首都國家城市工作于公司員工雇傭關聯通常是雙向的108/215關聯的重數限制和角色駕駛人轎車駕駛員公車工作于公司員工雇傭*1工作于公司員工雇傭**關聯的兩端還可加上角色名(role)109/215與自身的關聯*雇傭*工作于工人1..*老板0..1管理公司員工雇傭關聯的鏈公司A張三公司B李四公司A王五公司C張三鏈是關聯的實例110/215自身關聯中的角色一個類的對象在不同的關聯中扮演不同的角色保險公司人保險合同保險單0..11表示為表達0..*1有涉及婚姻丈夫妻子0..*1..*涉及有保險客戶111/215多元關聯(例)項目程序語言程序員112/215多元關聯的對象圖(例)CAD程序:項目C:語言記賬系統:項目COBOL:語言張三:

開發人員三重關聯對象圖113/215受限關聯受限關聯用于一對多或多對多的關聯限定符用來區分關聯“多”端的對象集合,它指明了在關聯“多”端的某個特殊對象

目錄文件0..*{ordered}有序關聯目錄文件文件名受限關聯114/215聚集聚集(aggregation)是表示整體-部分關系的一種關聯聚集中的“部分”對象可以是多個“整體”對象的一部分(共享非獨占)

聚集成員**組個人115/215組合組合(composition)是一種更強形式的關聯代表整體的組合對象有管理它的部分對象的特有責任,如部分對象的生成和釋放組合關聯具有強的物主身份,即“整體”對象擁有“部分”對象,“部分”對象生存在“整體”對象中*窗口正文對話框按鈕菜單***116/215關聯類某些關聯關系本身具有復雜的性質,可以獨立為一個類關聯類往往可以轉換為多元關聯用戶工作站授權

優先級特權開始一個時間片*

授權

*117/215關聯類間的導航符號明確的含義隱含的含義未指明雙向可導航右邊可導航左邊未指明只有右邊可導航只有右邊可導航只有右邊可導航右邊未指明左邊不可導航只有右邊可導航雙向可導航雙向可導航雙向不可導航雙向不可導航導航可理解為從一個類的對象訪問到另一個類的對象118/215關聯類間的導航(例)導航*選課*學生課程(a)

*選課*學生課程(c)*選課*學生課程(b)119/215泛化關系泛化表示類間的一般—特殊關系(is-a)一般類定義了它的特殊類的公共屬性和操作對一般類擴展一些屬性和/或操作后,可以特化(specialize)成特殊類一般類是特殊類的父類,特殊類是一般類的子類特殊類可以繼承一般類的屬性和操作子類可以定義自己的屬性和操作,也可重新定義父類中的操作,但重新定義的操作必須與父類具有相同的型構(signature)120/215

顯示計算面積四邊形

顯示六邊形

顯示三角形

多邊形顯示邊數頂角座標

長寬矩形計算面積泛化關系例121/215泛化關系例泛化是一種分類學關系,一個一般類可以從不同的維或方面進行特化例如學生可以從性別、學習階段(研究生、本科生、中學生等)等不同維度進行特化用類元(用作分類符)來表示分類的維度或方面,對應的特殊類組成一個泛化集在泛化集中可對其元素應用約束,在UML中提供以下約束,見下表122/215泛化集的約束符號含義Disjoint(不相交)該類元的多個泛化子類是互斥的,及不存在重疊部分Overlapping(重疊)該類元的多個泛化子類不是互斥的,存在重疊部分Complete(完全的)該類元的多個泛化子類完全覆蓋父類(從某個特定的維度上)Incomplete

(不完全的)該類元的多個泛化子類只能部分覆蓋父類(從某個特定的維度上)123/215泛化集的約束醫生人男人工人女人教師{overlapping,incomplete}{disjoint,complete}:職業:職業:職業:性別:性別泛化集的約束(例)124/215實現關系表示一個模型元素對于一個行為規約(specification)的實現關系例如類對于接口的實現,設計類對于分析類的實現泛化和實現都可以將一般描述與具體描述聯系起來,其區別是:泛化是同一語義層(例如都是類)上的元素之間的連接實現是不同語義層中的元素之間的連接,通常建立在不同的模型內,如設計類到分析類的實現關系實現關系125/215實現關系《interface》choiceBlocksetDefault(choice:Choice)getChoice():ChoiceRadioButtonArraysetDefault(choice:Button)getChoice():ButtonPopUpMenusetDefault(choice:String)getChoice():StringButtonChoiceString1..*1..*1..*choicechoicechoice實現關系(例)126/215依賴關系依賴表示兩個或多個模型元素之間語義上的依賴關系例如網上書店中的交易通知依賴于郵件發送依賴關系用一個虛線箭頭表示,箭頭上可附加說明依賴類型的關鍵字UML2.0中的依賴種類如下:Access(訪問),bind(綁定),call(調用),create(創建),derive(派生),instantiate(實例化),permit(允許),realize(實現),refine(精化),send(發送),substitute(替換),trace(追蹤依賴),use(使用)127/215SchedulingEngine依賴關系BoxOffice《use》依賴關系(例)128/215約束和派生(constraint&derivation)約束是用自然語言或特定的形式語言正文表示的語義條件或限制約束的形式:{正文字符串}約束可以附加到任何模型元素上,例如泛化的約束有:不相交、交迭、完全的、不完全的129/215***保險公司人公司保險合同{xor}***保險公司人公司保險合同目錄文件

0..*{ordered}約束例-1130/215約束例-21..*成員11黨派領袖1{subset}政治家黨派{self.employer=self.boss.employer}0..1工人*老板0..1公司員工*雇員雇主131/215

Cost-priceSales-price/profitArticle{profit=Sales-price-Cost-price}

Invoice+amount:Real+date:Date=Currentdate+customer:String+specification:String-administrator:String=“unspecified”-maxCount:Integer=0-numberOfInvoices:Integer+status:Status=unpaid{unpaid,paid}約束例-3132/215關聯關系也可以被派生或約束1*{person.employer=person.department.employer}*1employeremployerdepartmentworksForDepartment/worksForCompany1*公司部門人約束例-4133/215134/215確定需要建模的類(分析階段)CRC(類—責任—協作者)方法:使用一組表示類的索引卡片類名(Class)類的責任(Responsibility)類的協作者(Collaborator)類名:

協作者:

責任:

135/215CRC的主要步驟標識潛在的對象類篩選對象類,確定最終對象類標識責任(類的屬性和操作)標識協作者復審CRC卡136/215標識潛在的對象類通常陳述中的名詞或名詞短語是可能的潛在對象,包括外部對象:他們產生或使用軟件系統中的數據/信息物理實體:如發票、選課單、報告、打印的信件系統運行過程中的事件:如機器人移動、系統入侵角色:與系統交互的人,如學生、教務員等組織單位或機構:如院系、班級等……137/215篩選對象類的原則該對象的信息對于系統的正常運作是必須的(如選課單)該對象必須擁有一組可標識的操作,它們可以按某種方式修改對象屬性的值具有多個相關屬性的對象類(過于簡單的對象類可以暫時合并到其它類中)該對象具備一些公共的屬性和操作出現在問題空間中的真實實體(如發票)138/215對象類的其它屬性CRC卡上還可以包含其它屬性實在性:切實的存在還是抽象實體包含性:原子的還是包含嵌套對象并發性:擁有獨立的線程還是被動接受調用持久性:持久的、臨時的(在系統運行期間一直有效)、短暫的完整性:是否強調內部的資源控制,即開放性的程度139/215標識對象類的責任責任:類所了解的信息或能執行的操作信息:通過課程對象是否能直接了解所有選該門課程的學生操作:選課這一操作屬于學生類還是屬于課程類主要體現為屬性和操作類的責任分配是面向對象分析和設計的一個關鍵問題140/215確定類的屬性和操作屬性表示類的穩定特征,即為了完成客戶規定的目標所必須保存的類的信息操作定義了對象的行為并以某種方式修改對象的屬性值操作可以通過對系統的過程敘述的分析提取出來,通常敘述中的動詞可作為候選的操作操作大體可分為三類數據處理:增刪改、格式化、選擇、輸入/輸出等完成某種計算的操作,如關于選課合法性的檢查為控制事件的發生而監控對象的操作141/215標識協作者協作:一個對象為了完成某個責任需要向其它對象發送消息通過類屬關系標識協作者具有整體與部分關系的兩個類,如窗口的刷新需要窗口內所有的控件刷新一個類必須從另一個類獲取信息:學生對象記錄選課信息時需要從課程對象讀取課程基本信息一個類依賴于另一個類:選課結果通知依賴于郵件類的發送功能142/215CRC卡復審復審由客戶和軟件分析員參加,方法如下參加復審的人,每人拿CRC卡片的一個子集,有協作關系的卡片要分開將所有用況/場景分類,為每一個用況進行復審復審負責人仔細閱讀用況,當讀到一個命名的對象時,將令牌傳送給持有對應類的卡片的人員大家模擬各個對象類的責任(自己處理、創建協作對象、發送協作消息等),令牌隨著模擬過程傳遞模擬過程中如果發現幾個相關的協作類無法很好的完成某個用況的要求則進行修改143/215UML中屬性的描述visibilityattribute-nametype

multiplicity=initial-value{property-string}Visibility(可見性):該屬性在哪個范圍內可見attribute-name:屬性名type(類型):屬性的類型。multiplicity(重數):該屬性可能的值的個數以及它們的排列次序和唯一性initial-value(初值):創建對象時的初值/默認值property-string(特征字符串):用來明確地指明該屬性可能的候選值144/215UML中可見性符號種類語義+Public(公共的)任何能看到當前類對象的對象都能看到該屬性#Protected(受保護的)這個類或者它的任何子孫類的對象都能看到該屬性Private(私有的)只有這個類對象自身能看到該屬性Package(包的)在同一個包中的任何類對象能看到該屬性145/215屬性的重數形式:[minimum..maximum]maximum可以是“*”,表示無限當一個屬性有多個值時,可在值的個數后面用{}指明值元素的順序和唯一性關鍵字排列次序和唯一性set無序,值元素唯一bag無序,值元素不唯一orderedset有序,值元素唯一list(orsequence)有序,值元素不唯一146/215Invoice+amount:Real+date:Date=Currentdate+customer:String+line:record[1..5]{set}-administrator:String=“unspecified”-numberofinvoices:Integer+status:Status=unpaid{unpaid,paid}147/215類屬性類屬性表示被這個類所有實例對象共享該屬性的值,類屬性是這個類的名字空間中的全局變量類屬性用下劃線來表示maxCount:Integer=0jobID:Integercreate(){jobID=maxCount++}schedule()Job類屬性實例屬性類操作實例操作148/215UML中操作的描述visibilityoperating-name(parameter-list):return-type{property-string}參數的描述:directionparameter-name:typemultiplicity=default-value關鍵字語義in傳遞值的輸入參數,該參數的改變對調用者是無效的out輸出參數,沒有輸入值,其最終值對調用者是有效的inout一個可以修改的輸入參數,其最終值對調用者是有效的return調用的返回值,該值對調用者是有效的,語義上與out參數沒有不同,但在一串表達式中使用時return是有效的149/215FigureSize:SizePos:Position+draw()+resize(percentX:Integer=25,percentY:Integer=25)+returnPos():Position150/215內容摘要面向對象的基本概念面向對象的分析和設計過程UML概述用況建模靜態建模動態建模物理體系結構建模151/215UML中的動態建模動態建模用來描述系統的動態行為,顯示對象在系統運行期間不同時刻的動態交互UML中用狀態機圖、活動圖和交互圖(順序圖、通信圖)來建立動態模型152/215狀態機圖狀態機圖描述對象所有可能的狀態,以及哪些事件將導致狀態的改變狀態機圖描述了對象的動態行為,是一種對象生存周期的模型狀態機圖建模的步驟列出對象具有的所有狀態:狀態分為起始狀態(1個)、結束狀態(0個或多個)和中間狀態標識導致狀態轉換的事件為狀態和遷移定義狀態變量和動作153/215狀態機圖的基本符號狀態變量:是狀態機圖所顯示的類的屬性,也可以是臨時變量活動:列出了處于該狀態時要執行的事件和動作狀態名狀態變量活動狀態遷移起始狀態結束狀態狀態機圖的基本符號一個初始狀態0個或多個結束狀態(由事件導致的)狀態轉換與狀態轉換相關的內部變量進入/退出、或在該狀態持續期間的行為154/215Movingupdo/movingtofloorMovingdowndo/movingtofloorIdletimer=0do/increasetimerarrivedarrivedgodown(floor)MovingtoFirstfloorgoup(floor)[timer=time-out]arrivedgoup(floor)Onfirstfloor電梯升降的狀態機圖155/215狀態活動中的標準事件entry事件:進入該狀態時的特定動作exit事件:退出該狀態時的特定動作do事件:處于該狀態中時執行的動作活動區中事件的語法:

event-name(argumentlist)[guard-condition]/activity-expression事件名可以是包括三個標準事件在內的任何事件參數表表示該動作所需的參數警戒條件是布爾表達式,動作表達式將執行的動作156/215login狀態loginlogintime=currenttimeentry/type“login”do/getuse_namedo/getpasswordhelp/displayhelpexit/login(use_name,password)entry和exit事件必須執行,不能中斷do及其它事件可以被導致當前狀態遷移的事件中斷157/215狀態遷移-1標在遷移箭頭上的事件發生了首先執行引起遷移的事件中的動作,然后遷移到新的狀態,執行新狀態中的內部動作在執行do或用戶定義的動作時,可以被導致狀態遷移的外部事件中斷,但entry動作和exit動作不能被中斷,它們總是要執行完例如打印機處于打印狀態時可以隨時被用戶取消(abort事件),但exit動作中所要求的清理作業區的動作一定會執行158/215狀態遷移-2狀態機圖中相應的遷移上未指明事件表示當前狀態中的內部動作(包括entry、exit、do以及用戶定義的動作)全部執行完后,該狀態遷移被自動觸發例如打印機處于打印狀態時將一直執行打印動作直至當前打印任務完成(除非發生取消事件),然后自動進入空閑狀態159/215idleCollectingmoneyCoinsin(amount)/addtobalancetestandcomputeDo:testitemandcomputechangeDo:dispenseitemDo:makechangeSelect(item)[change<0][itemempty]Coinsin(amount)/SetbalanceCancel/refundCoins[change>0][change=0]自動售貨機的狀態機圖160/215狀態遷移的語法event-name(parameter-list)[guard-condition]/effect-list事件名、參數表、警戒條件既有事件特征又有警戒條件,則表示僅當這個事件發生并且警戒條件為真時才觸發相應的狀態遷移只有警戒條件,則表示當該條件變為真時,觸發狀態遷移effect-list是當該遷移觸發時執行的動作表達式表達式中可引用相應對象中的屬性、操作,或者事件特征中的參數,動作可以包括調用、發送和其它種類的動作一個狀態遷移上可以有多個用′/′符號分隔動作表達式,它們按從左到右的次序依次執行,不允許嵌套或遞歸161/215[timer=time-out]/godown(firstfloor)Movingupdo/movingtofloorMovingdowndo/movingtofloorIdletimer=0do/increasetimerarrivedarrivedgodown(floor)goup(floor)goup(floor)Onfirstfloor電梯的狀態機圖162/215狀態機圖中的事件數字手表類及其狀態機圖inc/hours:=hours+1Digital_Watchmode_button()inc()do/displayminutesSetminutesdo/displayhoursSethoursdo/displaycurrenttimeDisplaymode_buttonmode_buttoninc/minutes:=minutes+1mode_button狀態機圖類事件是指已發生并可能引發某種活動的一件事163/215事件類型描述調用事件callevent收到一條被一個對象外部同步調用的請求(同步)改變事件changeevent某些特定值(如監控的環境溫度、運行系統環境參數等)的改變,一般與一個布爾表達式相關聯信號事件signalevent收到供對象間異步通信用的一個外部的、被命名的信號(異步)時間事件timeevent到達一個絕對時間或經過一段相對的時間量事件的種類164/215狀態機圖之間發送的消息狀態機圖之間可通過動作(如在發送子句中指明接收者)或圖間的虛線箭頭向其他狀態機圖發送消息當采用虛線箭頭時,狀態機圖必須畫在矩形框中從表示源對象的狀態機圖中的狀態遷移上畫虛線箭頭到表示目標對象的狀態機圖的邊框上在兩個狀態機圖的邊框間畫虛線箭頭,表示源對象在其執行期間的某時刻發送該消息在目標對象的狀態機圖中應畫有一個捕獲這個消息的相應的遷移165/215On()Off()RemoteControlPlay()Stop()OffOnOn()Off()Play()Stop()OffOn/StopOn/PlayOff()/Stop()CDPlayerOn()Off()Stop()Play()狀態機圖之間的消息發送166/215組合狀態組合狀態被分解成區域,每個區域中包含一或多個直接子狀態正交狀態(并發):當該狀態活躍時,多個區域中的子狀態可能同時處于活躍狀態非正交狀態(非并發):當該狀態活躍時,在同一時刻只有一個子狀態是活躍的SS167/215非正交狀態例如,汽車中的變速器有中間狀態、前進狀態和倒退狀態,前進狀態又有三個排擋子狀態:第一、第二、第三,在任一時刻,這三個子狀態同時只有一個是活躍的,所以前進狀態是“非正交”組合狀態ForwardStopdownshiftupshiftdownshiftupshiftFirstSecondThirdpushNpushRpushNpushFNeutralReverseTransmission168/215正交狀態三局二勝比賽的正交狀態PlayingrubberAVulnerabilityAwinAwinAwinsrubberNotvulnerablevulnerableBVulnerabilityBwinBwinBwinsrubberNotvulnerablevulnerable169/215如果某些對象是另一些對象的聚集對象,則這些代表“部分”對象的狀態圖通常是并發的,它們都是聚集對象的并發子狀態。例如“汽車”對象是“點火”、“變速器”、“剎車”、“油門”等對象的聚集對象。transmissionignitionacceleratorcarbrake170/215Carturnkeytostart[Transmission

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論