面向?qū)ο蟮姆治龊驮O(shè)計(jì)_第1頁(yè)
面向?qū)ο蟮姆治龊驮O(shè)計(jì)_第2頁(yè)
面向?qū)ο蟮姆治龊驮O(shè)計(jì)_第3頁(yè)
面向?qū)ο蟮姆治龊驮O(shè)計(jì)_第4頁(yè)
面向?qū)ο蟮姆治龊驮O(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩210頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件工程第7章面向?qū)ο蟮姆治龊驮O(shè)計(jì)內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過(guò)程UML概述用況建模靜態(tài)建模動(dòng)態(tài)建模物理體系結(jié)構(gòu)建模2/215內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過(guò)程UML概述用況建模靜態(tài)建模動(dòng)態(tài)建模物理體系結(jié)構(gòu)建模3/215PeterCoad和EdwardYourdon提出用下列等式識(shí)認(rèn)面向?qū)ο蠓椒ǎ好嫦驅(qū)ο?/p>

=對(duì)象(object)

+分類(classification)

+繼承(inheritance)

+通過(guò)消息的通信(communicationwithmessages)可以說(shuō),采用這四個(gè)概念開發(fā)的軟件系統(tǒng)是面向?qū)ο蟮?/215面向?qū)ο蠓椒ǖ某霈F(xiàn)很快受到計(jì)算機(jī)軟件界的青睞,并成為20世紀(jì)90年代的主流開發(fā)方法。我們可以從下列幾個(gè)方面來(lái)分析其原因:從認(rèn)知學(xué)的角度來(lái)看,面向?qū)ο蠓椒ǚ先藗儗?duì)客觀世界的認(rèn)識(shí)規(guī)律。面向?qū)ο蠓椒ㄩ_發(fā)的軟件系統(tǒng)易于維護(hù),其體系結(jié)構(gòu)易于理解、擴(kuò)充和修改。面向?qū)ο蠓椒ㄖ械睦^承機(jī)制有力支持軟件的復(fù)用。5/215面向?qū)ο蟮幕靖拍?.對(duì)象(object)

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

屬性(attribute)通常是一些數(shù)據(jù),有時(shí)它也可以是另一個(gè)對(duì)象。每個(gè)對(duì)象都有它自己的屬性值,表示該對(duì)象的狀態(tài)。對(duì)象中的屬性只能通過(guò)該對(duì)象所提供的操作來(lái)存取或修改。

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

6/215封裝(encapsulation)是一種信息隱蔽技術(shù),用戶只能看見對(duì)象封裝界面上的信息,對(duì)象的內(nèi)部實(shí)現(xiàn)對(duì)用戶是隱蔽的。封裝的目的是使對(duì)象的使用者和生產(chǎn)者分離,使對(duì)象的定義和實(shí)現(xiàn)分開。

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

矩形長(zhǎng)寬對(duì)角線計(jì)算面積計(jì)算對(duì)角線

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

船轎車貨車

一般-特殊關(guān)系13/215

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

陸上交通工具

水陸兩棲交通工具多重繼承14/2154.消息(message)消息傳遞是對(duì)象間通信的手段,一個(gè)對(duì)象通過(guò)向另一個(gè)對(duì)象發(fā)送消息來(lái)請(qǐng)求其服務(wù)。一個(gè)消息通常包括接收對(duì)象名、調(diào)用的操作名和適當(dāng)?shù)膮?shù)(如果有必要的話)。消息只告訴接收對(duì)象需要完成什么操作,但并不指示接收者怎樣完成操作。消息完全由接收者解釋,接收者獨(dú)立決定采用什么方法完成所需的操作。15/2155.多態(tài)性(polymorphism)多態(tài)性是指同一個(gè)操作作用于不同的對(duì)象上可以有不同的解釋,并產(chǎn)生不同的執(zhí)行結(jié)果。例如“畫”操作,作用在“矩形”對(duì)象上,則在屏幕上畫一個(gè)矩形,作用在“圓”對(duì)象上,則在屏幕上畫一個(gè)圓。也就是說(shuō),相同操作的消息發(fā)送給不同的對(duì)象時(shí),每個(gè)對(duì)象將根據(jù)自己所屬類中定義的這個(gè)操作去執(zhí)行,從而產(chǎn)生不同的結(jié)果。16/2156.動(dòng)態(tài)綁定(dynamicbinding)動(dòng)態(tài)綁定是指在程序運(yùn)行時(shí)才將消息所請(qǐng)求的操作與實(shí)現(xiàn)該操作的方法連接起來(lái)。傳統(tǒng)的程序設(shè)計(jì)語(yǔ)言的過(guò)程調(diào)用與目標(biāo)代碼的連接(即調(diào)用哪個(gè)過(guò)程)放在程序運(yùn)行前(即編譯鏈接時(shí))進(jìn)行(稱為靜態(tài)綁定),而動(dòng)態(tài)綁定則是把這種連接推遲到運(yùn)行時(shí)才進(jìn)行。動(dòng)態(tài)綁定是一種在運(yùn)行時(shí)確定被執(zhí)行代碼的技術(shù)。17/215在一般與特殊關(guān)系中,子類是父類的一個(gè)特例,所以父類對(duì)象可以出現(xiàn)的地方,也允許其子類對(duì)象出現(xiàn)。因此在運(yùn)行過(guò)程中,當(dāng)一個(gè)對(duì)象發(fā)送消息請(qǐng)求服務(wù)時(shí),要根據(jù)接收對(duì)象的具體情況將請(qǐng)求的操作與實(shí)現(xiàn)的方法進(jìn)行連接,即動(dòng)態(tài)綁定。18/215if條件thenp:=t;elsep:=r;area:=p.getarea;getArea{abstract}polygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVarp:polygon;Vart:triangle:=triangle.new;Varr:rectangle:=rectangle.new;19/215內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過(guò)程UML概述用況建模靜態(tài)建模動(dòng)態(tài)建模物理體系結(jié)構(gòu)建模20/215面向?qū)ο蠓治?/p>

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

分析過(guò)程22/215注意,執(zhí)行者與用戶是不同的兩個(gè)概念,一個(gè)用戶可以扮演幾個(gè)角色(執(zhí)行者),一個(gè)執(zhí)行者可以是用戶,也可以是其他系統(tǒng)(應(yīng)用程序或設(shè)備)。得到的用況必須進(jìn)行復(fù)審,以使需求完整。23/2152.

標(biāo)識(shí)類和對(duì)象類和對(duì)象來(lái)自問(wèn)題領(lǐng)域可以先標(biāo)識(shí)候選類,然后進(jìn)行篩選24/2153.定義類的結(jié)構(gòu)和層次類的結(jié)構(gòu)主要有兩種:一般—特殊(generalization—specialization)結(jié)構(gòu)和整體—部分(whole—part)結(jié)構(gòu)。

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

整體—部分結(jié)構(gòu)反映了類間的整體與部分關(guān)系。值得注意的是,整體—部分關(guān)系是對(duì)對(duì)象而言的,而不是對(duì)類的。整體—部分關(guān)系是一種“hasa”的關(guān)系,如“汽車”有“發(fā)動(dòng)機(jī)”。同樣,整體—部分結(jié)構(gòu)也具有層次結(jié)構(gòu)。25/2154.

建造對(duì)象——關(guān)系模型對(duì)象--關(guān)系模型描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),它指出了類間的關(guān)系(relationship)

類之間的關(guān)系有關(guān)聯(lián)、依賴、泛化、實(shí)現(xiàn)等26/2155.

建立對(duì)象——行為模型對(duì)象--行為模型描述了系統(tǒng)的動(dòng)態(tài)行為,它們指明系統(tǒng)如何響應(yīng)外部的事件或激勵(lì)(stimulus)。建模的步驟如下:評(píng)估所有的用況,以完全理解系統(tǒng)中交互的序列標(biāo)識(shí)驅(qū)動(dòng)交互序列的事件,理解這些事件如何和特定的對(duì)象相關(guān)聯(lián)為每個(gè)用況創(chuàng)建事件軌跡(eventtrace)為系統(tǒng)建造狀態(tài)機(jī)圖復(fù)審對(duì)象--行為模型,以驗(yàn)證準(zhǔn)確性和一致性27/215面向?qū)ο笤O(shè)計(jì)

(Object_OrientedDesign)

面向?qū)ο笤O(shè)計(jì)的一般步驟如下:系統(tǒng)設(shè)計(jì)將子系統(tǒng)分配到處理器選擇實(shí)現(xiàn)數(shù)據(jù)管理、界面支持和任務(wù)管理的設(shè)計(jì)策略為系統(tǒng)設(shè)計(jì)合適的控制機(jī)制復(fù)審并考慮權(quán)衡(折衷)28/215對(duì)象設(shè)計(jì)在過(guò)程級(jí)別(procedurallavel)設(shè)計(jì)每個(gè)操作,即設(shè)計(jì)每個(gè)操作的實(shí)現(xiàn)細(xì)節(jié)定義內(nèi)部類為類屬性設(shè)計(jì)內(nèi)部數(shù)據(jù)結(jié)構(gòu)消息設(shè)計(jì)使用對(duì)象間的協(xié)作和對(duì)象--關(guān)系模型,設(shè)計(jì)消息模型復(fù)審復(fù)審設(shè)計(jì)模型并在需要時(shí)迭代。29/2151.系統(tǒng)設(shè)計(jì)1)

將分析模型劃分成子系統(tǒng)在OO系統(tǒng)設(shè)計(jì)中,我們把分析模型中緊密相關(guān)的類、關(guān)系等設(shè)計(jì)元素包裝成子系統(tǒng)。通常,子系統(tǒng)的所有元素共享某些公共的性質(zhì),它們可能都涉及完成相同的功能;它們可能駐留在相同的產(chǎn)品硬件中;或者它們可能管理相同的類和資源。子系統(tǒng)由它們的責(zé)任所刻畫,即,一個(gè)子系統(tǒng)可以通過(guò)它提供的服務(wù)來(lái)標(biāo)識(shí)。在OOD中,這種服務(wù)是完成特定功能的一組操作。

30/215

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

OO系統(tǒng)可利用一系列不同的資源(如磁盤驅(qū)動(dòng)器、處理器、通信線路等外部實(shí)體或數(shù)據(jù)庫(kù)、對(duì)象等抽象資源),很多情況下,子系統(tǒng)同時(shí)競(jìng)爭(zhēng)這些資源,因此要設(shè)計(jì)一套控制機(jī)制和安全機(jī)制,以控制對(duì)資源的訪問(wèn),避免對(duì)資源使用的沖突。

6)人機(jī)界面設(shè)計(jì)對(duì)大多數(shù)應(yīng)用系統(tǒng)而言,人機(jī)界面本身是一個(gè)非常重要的子系統(tǒng)。人機(jī)界面主要強(qiáng)調(diào)人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。它包括窗口、菜單、報(bào)告的設(shè)計(jì)。

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

36/2152.

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

設(shè)計(jì)模式(designpatterns)在許多面向?qū)ο笙到y(tǒng)中,存在一些類和通信對(duì)象的重復(fù)出現(xiàn)的模式。這些模式求解特定的設(shè)計(jì)問(wèn)題,使面向?qū)ο笤O(shè)計(jì)更靈活,并最終可復(fù)用。這些模式幫助設(shè)計(jì)者復(fù)用以前成功的設(shè)計(jì),設(shè)計(jì)者可以把這些模式應(yīng)用到新的設(shè)計(jì)中。38/215一個(gè)設(shè)計(jì)模式通??捎盟膫€(gè)信息來(lái)描述:1)模式名設(shè)計(jì)模式名應(yīng)具有實(shí)際的含義,它能反映模式的適用性和意圖。2)使模式可被應(yīng)用所必須存在的環(huán)境和條件。3)設(shè)計(jì)模式的特征模式特征指出一些設(shè)計(jì)的屬性,調(diào)整這些屬性使該模式能適應(yīng)各種不同的問(wèn)題。這些屬性表示設(shè)計(jì)的特征,這些特征能被用于檢索(通過(guò)數(shù)據(jù)庫(kù))以找到合適的模式。4)應(yīng)用設(shè)計(jì)模式的結(jié)果(consequences)對(duì)于一個(gè)設(shè)計(jì)模式的使用結(jié)果表明設(shè)計(jì)決策的走向。39/215CategoryClass-&-ObjectStructure1+1+AttributeMethodObjectmodel由五個(gè)層次組成,相當(dāng)于把五張透明膠片疊在一起,每一層顯示更多的細(xì)節(jié)。面向?qū)ο笤O(shè)計(jì)基本過(guò)程40/215內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過(guò)程UML概述用況建模靜態(tài)建模動(dòng)態(tài)建模物理體系結(jié)構(gòu)建模41/215統(tǒng)一建模語(yǔ)言UMLUnifiedModelingLanguage42/215UML概述為何研究UML—結(jié)束方法大戰(zhàn)發(fā)展歷史

1994年Booch和Rumbaugh在RationalSoftwareCorporation開始了UML的工作,其目標(biāo)是創(chuàng)建一個(gè)“統(tǒng)一的方法”,

1995年OOSE的創(chuàng)始人Jacobson加盟到這項(xiàng)工作中,工作重點(diǎn)轉(zhuǎn)移到創(chuàng)建一種統(tǒng)一的建模語(yǔ)言UML1996年6月、10月、1997年1月、11月分別推出了UML0.9、UML0.91、UML1.0、UML1.143/215UML概述1997年11月,OMG(ObjectManagementGroup)批準(zhǔn)把UML1.1作為基于面向?qū)ο蠹夹g(shù)的標(biāo)準(zhǔn)建模語(yǔ)言之后,UML進(jìn)行了持續(xù)的修訂和改進(jìn),先后產(chǎn)生了UML1.2、1.3、1.4、1.5版本2004年推出了UML2.0,UML2.0對(duì)UML1.x作了重大的修改44/215UML模型元素(V1.3)

模型中的實(shí)體以及實(shí)體間相互連接的關(guān)系泛化

對(duì)象屬性操作狀態(tài)用例

結(jié)點(diǎn)接口包依賴關(guān)聯(lián)聚集模型元素類屬性操作構(gòu)件注解45/215UML模型元素(V2.0)

模型中的實(shí)體以及實(shí)體間相互連接的關(guān)系部分模型元素注解類屬性操作對(duì)象:類屬性操作狀態(tài)用況

結(jié)點(diǎn)供應(yīng)接口包依賴關(guān)聯(lián)泛化主動(dòng)類屬性操作請(qǐng)求接口構(gòu)件實(shí)現(xiàn)46/215UML2.0的13種圖-1用況圖(usecasediagram)類圖(classdiagram)對(duì)象圖(objectdiagram)構(gòu)件圖(componentdiagram)組合結(jié)構(gòu)圖(compositestructurediagram)順序圖(sequencediagram)通信圖(communicationdiagram)交互圖(interactiondiagram)47/215UML2.0的13種圖-2狀態(tài)機(jī)圖(statemachinediagram)活動(dòng)圖(activitydiagram)部署圖(deploymentdiagram)

制品圖(artifactdiagram)包圖(packagediagram)時(shí)間圖(timingdiagram)交互概覽圖(interactionoverviewdiagram)48/215UML圖1-用況圖描述參與者與用況(參與者使用系統(tǒng)以實(shí)現(xiàn)某一特定目標(biāo)的情形)之間的關(guān)聯(lián)關(guān)系,以及用況之間的擴(kuò)展、繼承等關(guān)系銀行儲(chǔ)蓄帳戶管理系統(tǒng)《包含》《包含》《包含》銀行職員(用戶代理)帳戶管理銀行間轉(zhuǎn)帳開戶取款銀行內(nèi)轉(zhuǎn)帳注銷存款校驗(yàn)密碼轉(zhuǎn)帳報(bào)表生成其它銀行帳戶管理系統(tǒng)客戶系統(tǒng)管理員銀行職員(管理人員)49/215UML圖2-類圖展現(xiàn)一組類、接口以及它們相互之間的關(guān)系2條或2條以上的線交于0個(gè)或1個(gè)點(diǎn)lineX1:realY1:realX2:realY2:realpointX:realY:real相交2..*0..150/215UML圖3-對(duì)象圖展現(xiàn)一組對(duì)象以及相互之間的關(guān)系,是依照類圖所建立的一組事物(實(shí)例)的靜態(tài)快照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-構(gòu)件圖描述構(gòu)件、接口以及構(gòu)件間的組裝關(guān)系的靜態(tài)視圖,復(fù)合構(gòu)件本身可以由內(nèi)部的子構(gòu)件圖描述應(yīng)用收費(fèi)管理信用卡代理構(gòu)件的內(nèi)部結(jié)構(gòu)圖信用卡代理狀況購(gòu)買預(yù)購(gòu)銷售團(tuán)體銷售:售票員:營(yíng)業(yè)員界面:銷售亭界面:管理員界面:票:信用卡收費(fèi)個(gè)體銷售收費(fèi)顧客訪問(wèn)營(yíng)業(yè)員訪問(wèn)52/215UML圖5-組合結(jié)構(gòu)圖UML2.0新增的圖,展示了類或協(xié)作的內(nèi)部結(jié)構(gòu),與構(gòu)件差別不大,經(jīng)常認(rèn)為與構(gòu)件圖等同53/215UML圖6-順序圖描述特定場(chǎng)景下交互各方消息發(fā)送和接收的順序呼叫方電話線應(yīng)叫方54/215UML圖7-通信圖另一種交互圖,強(qiáng)調(diào)交互上下文:參與交互的對(duì)象或角色的結(jié)構(gòu)組織控制電梯運(yùn)行的通信圖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-狀態(tài)機(jī)圖以狀態(tài)機(jī)的形式描述目標(biāo)對(duì)象在各種事件作用下的行為電梯升降的狀態(tài)機(jī)圖Movingupdo/movingtofloorMovingdowndo/movingtofloorIdletimer=0do/increasetimerarrivedarrivedgodown(floor)MovingtoFirstfloorgoup(floor)[timer=time-out]arrivedgoup(floor)Onfirstfloor56/215UML圖9-活動(dòng)圖描述一系列活動(dòng)之間的控制流和數(shù)據(jù)流[未付款][已付款]*[對(duì)每一訂單項(xiàng)][有貨][缺貨]取消并退回訂單收到訂單付款認(rèn)可檢查訂單項(xiàng)制作并發(fā)放提貨單更新庫(kù)存制作并發(fā)放缺貨單制作并發(fā)放采購(gòu)單57/215UML圖10-部署圖描述系統(tǒng)運(yùn)行時(shí)各相關(guān)處理單元結(jié)點(diǎn)、各結(jié)點(diǎn)上部署的構(gòu)件、以及相互間的通信協(xié)議《DecNet》《TCP/IP》《TCP/IP》ClientA:CompaqProPCApplicationServer;SiliconGraphicsO2DatabaseServer:VAXClientB:CompaqProPC58/215UML圖10-部署圖變體:制品圖部署圖的變體:描述系統(tǒng)實(shí)現(xiàn)制品的物理結(jié)構(gòu),制品包括文件、數(shù)據(jù)庫(kù)等這兩個(gè)物理文件“承載了”邏輯類HelloWorld的實(shí)現(xiàn)59/215UML圖11-包圖描述包(一種模型分解單位)以及包之間的關(guān)系售票處計(jì)劃廣告進(jìn)度表客戶記錄票記錄運(yùn)作售票工資單計(jì)算購(gòu)買60/215UML圖12-時(shí)間圖UML2.0新增的圖,描述對(duì)象間的交互,但關(guān)注于關(guān)于時(shí)間的推理,而不僅僅是相對(duì)順序添水加熱61/215UML圖13-交互概覽圖UML2.0新增的圖可認(rèn)為是:活動(dòng)圖+順序圖的混合體使用活動(dòng)圖的表示法,其中的節(jié)點(diǎn)或者是一個(gè)交互或者是一個(gè)交互引用62/215UML2.0的視圖和圖視圖(view)UML圖(靜態(tài)方面)UML圖(動(dòng)態(tài)方面)用況視圖用況圖交互圖狀態(tài)機(jī)圖活動(dòng)圖設(shè)計(jì)視圖類圖對(duì)象圖同上交互視圖與設(shè)計(jì)視圖相同,更強(qiáng)調(diào)消息交互方面實(shí)現(xiàn)視圖構(gòu)件圖同上部署視圖部署圖同上需求設(shè)計(jì)實(shí)現(xiàn)部署63/215UML視圖1-用況視圖描述可被最終用戶、分析人員和測(cè)試人員看到的系統(tǒng)(外部)行為不涉及系統(tǒng)的內(nèi)部結(jié)構(gòu),但卻是系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)的驅(qū)動(dòng)力靜態(tài)方面:用況圖動(dòng)態(tài)方面:交互圖、狀態(tài)機(jī)圖、活動(dòng)圖64/215UML視圖2-設(shè)計(jì)視圖描述系統(tǒng)設(shè)計(jì)方案,主要包括類、接口以及相互之間的協(xié)作關(guān)系靜態(tài)方面:類圖、對(duì)象圖動(dòng)態(tài)方面:交互圖、狀態(tài)機(jī)圖、活動(dòng)圖65/215UML視圖3-交互視圖展示系統(tǒng)不同部分之間的控制流,包括并發(fā)和同步機(jī)制主要針對(duì)系統(tǒng)的非功能性方面,例如性能、可伸縮性、吞吐量等靜態(tài)方面:類圖、對(duì)象圖動(dòng)態(tài)方面:交互圖、狀態(tài)機(jī)圖、活動(dòng)圖與設(shè)計(jì)視圖的區(qū)別:突出控制系統(tǒng)的主動(dòng)類以及各部分間消息的流動(dòng)66/215UML視圖4-實(shí)現(xiàn)視圖描述組成最終產(chǎn)品發(fā)布的相關(guān)制品及其關(guān)系,實(shí)現(xiàn)單元體現(xiàn)為可裝配、打包并發(fā)布的文件體現(xiàn)了邏輯單元(類和構(gòu)件)到物理制品(物理構(gòu)件、文件等)的映射靜態(tài)方面:構(gòu)件圖動(dòng)態(tài)方面:交互圖、狀態(tài)機(jī)圖、活動(dòng)圖67/215UML視圖5-部署視圖描述最終產(chǎn)品物理部署的拓?fù)浣Y(jié)構(gòu)包括組成整個(gè)系統(tǒng)的各種分布式硬件設(shè)備,以及各個(gè)軟件模塊在這些設(shè)備上的部署和運(yùn)行關(guān)系靜態(tài)方面:部署圖動(dòng)態(tài)方面:交互圖、狀態(tài)機(jī)圖、活動(dòng)圖68/215內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過(guò)程UML概述用況建模靜態(tài)建模動(dòng)態(tài)建模物理體系結(jié)構(gòu)建模69/215用況建模用況:文本形式的情節(jié)描述,用以說(shuō)明某參與者使用系統(tǒng)以實(shí)現(xiàn)某一特定目標(biāo)的情形用況建模用于描述一個(gè)系統(tǒng)應(yīng)該做什么,用用況圖來(lái)描述(可能有多幅)用況圖給出了用戶所感受到的系統(tǒng)行為,但不描述系統(tǒng)如何實(shí)現(xiàn)該功能70/215用況圖用框圖展示各類外部執(zhí)行者(actor)與系統(tǒng)所提供的用況之間的參與關(guān)系,包括:系統(tǒng)邊界、用況執(zhí)行者(參與者):可能使用這些用況的人或外部系統(tǒng),參與者與用況連接表示參與者使用了該用況模型元素間關(guān)系:關(guān)聯(lián)、擴(kuò)展、包含、泛化等每個(gè)用況的細(xì)節(jié)通常用文字描述,也可以用活動(dòng)圖來(lái)描述71/215用況之間的關(guān)系-1關(guān)系說(shuō)明記號(hào)關(guān)聯(lián)參與者與所參與的一個(gè)用況之間的通信路徑擴(kuò)展擴(kuò)展的用況到基本用況的一種關(guān)系:擴(kuò)展用況可以訪問(wèn)基本用況的所有屬性,并在基本用況基礎(chǔ)上增加新的行為《extend》72/215用況之間的關(guān)系-2關(guān)系說(shuō)明記號(hào)包含被包含用況是基本用況的一部分,基本用況能看到被包含用況并依賴于它的的執(zhí)行結(jié)果,但二者不能相互訪問(wèn)其它屬性泛化一個(gè)一般用況與一個(gè)更特殊的用況之間的關(guān)系,特殊用況可繼承一般用況的特征《include》73/215電話訂購(gòu)系統(tǒng)用況圖客戶售票員送貨員主管建立信用供應(yīng)訂單訂單支付提供客戶數(shù)據(jù)產(chǎn)生訂單信用卡支付現(xiàn)金支付設(shè)置訂單請(qǐng)求目錄電話訂購(gòu)《include》《include》《include》《extend》核對(duì)身份關(guān)聯(lián)擴(kuò)展包含泛化74/215銀行儲(chǔ)蓄帳戶管理系統(tǒng)《include》《include》《include》銀行職員(用戶代理)帳戶管理銀行間轉(zhuǎn)帳開戶取款銀行內(nèi)轉(zhuǎn)帳注銷存款校驗(yàn)密碼轉(zhuǎn)帳報(bào)表生成其它銀行帳戶管理系統(tǒng)客戶系統(tǒng)管理員銀行職員(管理人員)包含泛化75/215參與者之間的泛化關(guān)系76/215用況圖對(duì)于各方的作用客戶:用況模型指明了系統(tǒng)的功能,描述了系統(tǒng)能如何使用開發(fā)者:用況模型幫助他們理解系統(tǒng)要做什么,同時(shí)為以后的其它模型建模、結(jié)構(gòu)設(shè)計(jì)、實(shí)現(xiàn)等提供依據(jù)集成測(cè)試和系統(tǒng)測(cè)試人員:根據(jù)用況來(lái)測(cè)試系統(tǒng),以驗(yàn)證系統(tǒng)是否完成了用況指定的功能77/215用況建模步驟定義系統(tǒng)(總體范圍)確定參與者確定用況描述用況定義用況間的關(guān)系確認(rèn)模型78/215用況建?!x系統(tǒng)范圍/邊界根據(jù)項(xiàng)目的總體目標(biāo)/任務(wù)以及基本的開發(fā)決策決定做什么不做什么總體目標(biāo)/任務(wù):實(shí)現(xiàn)出版社書籍的網(wǎng)上銷售開發(fā)決策:網(wǎng)上支付采用銀聯(lián)支付系統(tǒng)、書籍的基本信息來(lái)自于出版社已有的編輯和發(fā)行管理系統(tǒng)(遺產(chǎn)系統(tǒng))邊界外的人或系統(tǒng)(第三方系統(tǒng)、遺留系統(tǒng)等)成為候選的參與者79/215用況建?!_定參與者參與者是指與系統(tǒng)交互的人、組織或其它系統(tǒng)參與者代表一種角色,而不是具體的人可分成主參與者和輔助參與者主參與者是用況的直接執(zhí)行者,例如保險(xiǎn)系統(tǒng)中業(yè)務(wù)員處理保險(xiǎn)的注冊(cè)和管理輔助參與者對(duì)于用況的執(zhí)行起輔助作用,例如保險(xiǎn)系統(tǒng)中管理員負(fù)責(zé)分配業(yè)務(wù)員權(quán)限80/215確定參與者的啟發(fā)式問(wèn)題誰(shuí)使用系統(tǒng)的主要功能(主執(zhí)行者)誰(shuí)需要從系統(tǒng)中得到對(duì)他們?nèi)粘9ぷ鞯闹С终l(shuí)需要維護(hù)、管理和維持系統(tǒng)的日常運(yùn)行系統(tǒng)需要控制哪些硬件設(shè)備系統(tǒng)需要與哪些其它系統(tǒng)交互哪些人或哪些系統(tǒng)對(duì)系統(tǒng)產(chǎn)生的結(jié)果(值)感興趣81/215用況建?!_定用況用況的特征用況總是由參與者啟動(dòng)的執(zhí)行者必須直接或間接地指示系統(tǒng)去執(zhí)行用況用況向參與者提供服務(wù)或返回結(jié)果,這些結(jié)果必須是可識(shí)別的用況是完整的,一個(gè)用況必須是一個(gè)完整的描述

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

顧客:快速完成付款并獲得購(gòu)物憑證以方便退貨………前置條件:收銀員經(jīng)過(guò)認(rèn)證、顧客是超市會(huì)員后置條件:正確更新庫(kù)存、正確計(jì)算稅金……90/215POS系統(tǒng)收銀用況詳細(xì)說(shuō)明-2主成功場(chǎng)景:

1.顧客攜帶商品到收銀臺(tái)付款

2.收銀員啟動(dòng)一次銷售過(guò)程……

n.顧客付款系統(tǒng)打印票據(jù)完成整個(gè)銷售過(guò)程替換場(chǎng)景:a.……顧客信用卡額度不足要求退貨……b.……顧客信用卡額度不足要求退貨…………特殊需求:

1.90%情況下信用卡刷卡響應(yīng)時(shí)間小于30秒2.顧客能在1米范圍內(nèi)清楚看到單價(jià)和累計(jì)金額顯示……91/215POS系統(tǒng)收銀用況詳細(xì)說(shuō)明-3技術(shù)與數(shù)據(jù)變?cè)?/p>

1.商品ID獲取可以通過(guò)掃描和鍵盤輸入兩種方式2.商品ID支持中國(guó)、歐洲及日本三種編碼標(biāo)準(zhǔn)

……發(fā)生頻率:可能在16小時(shí)內(nèi)不間斷發(fā)生其它問(wèn)題:

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

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

b)如果該賬戶被凍結(jié)(如因掛失而凍結(jié)),顯示凍結(jié)信息并結(jié)束用況3.輸入并校驗(yàn)密碼99/2154.輸入取款金額,如果該賬戶的余款小于取款金額,顯示錯(cuò)誤信息,要求重新輸入5.打印取款單,交客戶簽字6.建立取款事件記錄,更新賬戶信息7.打印存折,用況結(jié)束可選路徑:1.在第5步客戶簽字之前的任何時(shí)刻,客戶可以取消本次取款,用況結(jié)束2.第3步校驗(yàn)密碼時(shí),如發(fā)現(xiàn)密碼不一致,則重新輸入密碼,或用況結(jié)束后置條件:如果取款成功,客戶賬戶中的余額被更新(減少),否則余額不變。100/215取款用況的活動(dòng)圖描述[客戶不確認(rèn)][客戶確認(rèn)][余額≥取款額][未凍結(jié)][不一致][一致][選擇重新輸入][選擇結(jié)束][凍結(jié)][余額<取款額]●··●··打印取款單輸入客戶信息顯示錯(cuò)誤信息建立取款記錄更新賬戶信息打印存折顯示錯(cuò)誤信息輸入取款金額輸入并校驗(yàn)密碼顯示凍結(jié)信息●··101/215內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過(guò)程UML概述用況建模靜態(tài)建模動(dòng)態(tài)建模物理體系結(jié)構(gòu)建模102/215類圖和對(duì)象圖類和對(duì)象模型的基本模型元素有類、對(duì)象以及它們之間的關(guān)系對(duì)象圖是類圖的實(shí)例,描述某一時(shí)刻類圖中類的特定實(shí)例以及這些實(shí)例之間的特定鏈接對(duì)象圖使用了與類圖相同的符號(hào),只是在對(duì)象名下附加下劃線,對(duì)象名后可接以冒號(hào)和類名,即

object-name:class-name系統(tǒng)中的類和對(duì)象模型描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)103/215類圖和對(duì)象圖的基本元素

對(duì)象名:類名屬性名=值操作類名屬性名:類型操作聚集組合關(guān)聯(lián)泛化依賴實(shí)現(xiàn)104/215類圖和對(duì)象圖(例)實(shí)例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類圖對(duì)象圖105/215類圖中類之間的關(guān)系關(guān)系含義符號(hào)關(guān)聯(lián)兩個(gè)元素之間的關(guān)聯(lián)關(guān)系依賴兩個(gè)元素之間的依賴關(guān)系泛化一般與特殊關(guān)系聚集整體與部分之間的關(guān)聯(lián)關(guān)系組合更強(qiáng)的一種整體與部分間的擁有關(guān)系,整體負(fù)責(zé)部分的創(chuàng)建和刪除實(shí)現(xiàn)規(guī)約(specification)與它的實(shí)現(xiàn)之間的關(guān)系106/215關(guān)聯(lián)關(guān)系從參與方數(shù)量分:二元關(guān)聯(lián)、多元關(guān)聯(lián)從參與限制:受限關(guān)聯(lián)整體和部分的關(guān)聯(lián):聚集和組合107/215二元關(guān)聯(lián)二元關(guān)聯(lián)表示為在兩個(gè)類之間用一條直線連接,直線上可寫上關(guān)聯(lián)名有首都國(guó)家城市工作于公司員工雇傭關(guān)聯(lián)通常是雙向的108/215關(guān)聯(lián)的重?cái)?shù)限制和角色駕駛?cè)宿I車駕駛員公車工作于公司員工雇傭*1工作于公司員工雇傭**關(guān)聯(lián)的兩端還可加上角色名(role)109/215與自身的關(guān)聯(lián)*雇傭*工作于工人1..*老板0..1管理公司員工雇傭關(guān)聯(lián)的鏈公司A張三公司B李四公司A王五公司C張三鏈?zhǔn)顷P(guān)聯(lián)的實(shí)例110/215自身關(guān)聯(lián)中的角色一個(gè)類的對(duì)象在不同的關(guān)聯(lián)中扮演不同的角色保險(xiǎn)公司人保險(xiǎn)合同保險(xiǎn)單0..11表示為表達(dá)0..*1有涉及婚姻丈夫妻子0..*1..*涉及有保險(xiǎn)客戶111/215多元關(guān)聯(lián)(例)項(xiàng)目程序語(yǔ)言程序員112/215多元關(guān)聯(lián)的對(duì)象圖(例)CAD程序:項(xiàng)目C:語(yǔ)言記賬系統(tǒng):項(xiàng)目COBOL:語(yǔ)言張三:

開發(fā)人員三重關(guān)聯(lián)對(duì)象圖113/215受限關(guān)聯(lián)受限關(guān)聯(lián)用于一對(duì)多或多對(duì)多的關(guān)聯(lián)限定符用來(lái)區(qū)分關(guān)聯(lián)“多”端的對(duì)象集合,它指明了在關(guān)聯(lián)“多”端的某個(gè)特殊對(duì)象

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

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

優(yōu)先級(jí)特權(quán)開始一個(gè)時(shí)間片*

授權(quán)

*117/215關(guān)聯(lián)類間的導(dǎo)航符號(hào)明確的含義隱含的含義未指明雙向可導(dǎo)航右邊可導(dǎo)航左邊未指明只有右邊可導(dǎo)航只有右邊可導(dǎo)航只有右邊可導(dǎo)航右邊未指明左邊不可導(dǎo)航只有右邊可導(dǎo)航雙向可導(dǎo)航雙向可導(dǎo)航雙向不可導(dǎo)航雙向不可導(dǎo)航導(dǎo)航可理解為從一個(gè)類的對(duì)象訪問(wèn)到另一個(gè)類的對(duì)象118/215關(guān)聯(lián)類間的導(dǎo)航(例)導(dǎo)航*選課*學(xué)生課程(a)

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

顯示計(jì)算面積四邊形

顯示六邊形

顯示三角形

多邊形顯示邊數(shù)頂角座標(biāo)

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

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

0..*{ordered}約束例-1130/215約束例-21..*成員11黨派領(lǐng)袖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關(guān)聯(lián)關(guān)系也可以被派生或約束1*{person.employer=person.department.employer}*1employeremployerdepartmentworksForDepartment/worksForCompany1*公司部門人約束例-4133/215134/215確定需要建模的類(分析階段)CRC(類—責(zé)任—協(xié)作者)方法:使用一組表示類的索引卡片類名(Class)類的責(zé)任(Responsibility)類的協(xié)作者(Collaborator)類名:

協(xié)作者:

責(zé)任:

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

multiplicity=initial-value{property-string}Visibility(可見性):該屬性在哪個(gè)范圍內(nèi)可見attribute-name:屬性名type(類型):屬性的類型。multiplicity(重?cái)?shù)):該屬性可能的值的個(gè)數(shù)以及它們的排列次序和唯一性initial-value(初值):創(chuàng)建對(duì)象時(shí)的初值/默認(rèn)值property-string(特征字符串):用來(lái)明確地指明該屬性可能的候選值144/215UML中可見性符號(hào)種類語(yǔ)義+Public(公共的)任何能看到當(dāng)前類對(duì)象的對(duì)象都能看到該屬性#Protected(受保護(hù)的)這個(gè)類或者它的任何子孫類的對(duì)象都能看到該屬性Private(私有的)只有這個(gè)類對(duì)象自身能看到該屬性Package(包的)在同一個(gè)包中的任何類對(duì)象能看到該屬性145/215屬性的重?cái)?shù)形式:[minimum..maximum]maximum可以是“*”,表示無(wú)限當(dāng)一個(gè)屬性有多個(gè)值時(shí),可在值的個(gè)數(shù)后面用{}指明值元素的順序和唯一性關(guān)鍵字排列次序和唯一性set無(wú)序,值元素唯一bag無(wú)序,值元素不唯一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類屬性類屬性表示被這個(gè)類所有實(shí)例對(duì)象共享該屬性的值,類屬性是這個(gè)類的名字空間中的全局變量類屬性用下劃線來(lái)表示maxCount:Integer=0jobID:Integercreate(){jobID=maxCount++}schedule()Job類屬性實(shí)例屬性類操作實(shí)例操作148/215UML中操作的描述visibilityoperating-name(parameter-list):return-type{property-string}參數(shù)的描述:directionparameter-name:typemultiplicity=default-value關(guān)鍵字語(yǔ)義in傳遞值的輸入?yún)?shù),該參數(shù)的改變對(duì)調(diào)用者是無(wú)效的out輸出參數(shù),沒有輸入值,其最終值對(duì)調(diào)用者是有效的inout一個(gè)可以修改的輸入?yún)?shù),其最終值對(duì)調(diào)用者是有效的return調(diào)用的返回值,該值對(duì)調(diào)用者是有效的,語(yǔ)義上與out參數(shù)沒有不同,但在一串表達(dá)式中使用時(shí)return是有效的149/215FigureSize:SizePos:Position+draw()+resize(percentX:Integer=25,percentY:Integer=25)+returnPos():Position150/215內(nèi)容摘要面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮姆治龊驮O(shè)計(jì)過(guò)程UML概述用況建模靜態(tài)建模動(dòng)態(tài)建模物理體系結(jié)構(gòu)建模151/215UML中的動(dòng)態(tài)建模動(dòng)態(tài)建模用來(lái)描述系統(tǒng)的動(dòng)態(tài)行為,顯示對(duì)象在系統(tǒng)運(yùn)行期間不同時(shí)刻的動(dòng)態(tài)交互UML中用狀態(tài)機(jī)圖、活動(dòng)圖和交互圖(順序圖、通信圖)來(lái)建立動(dòng)態(tài)模型152/215狀態(tài)機(jī)圖狀態(tài)機(jī)圖描述對(duì)象所有可能的狀態(tài),以及哪些事件將導(dǎo)致狀態(tài)的改變狀態(tài)機(jī)圖描述了對(duì)象的動(dòng)態(tài)行為,是一種對(duì)象生存周期的模型狀態(tài)機(jī)圖建模的步驟列出對(duì)象具有的所有狀態(tài):狀態(tài)分為起始狀態(tài)(1個(gè))、結(jié)束狀態(tài)(0個(gè)或多個(gè))和中間狀態(tài)標(biāo)識(shí)導(dǎo)致狀態(tài)轉(zhuǎn)換的事件為狀態(tài)和遷移定義狀態(tài)變量和動(dòng)作153/215狀態(tài)機(jī)圖的基本符號(hào)狀態(tài)變量:是狀態(tài)機(jī)圖所顯示的類的屬性,也可以是臨時(shí)變量活動(dòng):列出了處于該狀態(tài)時(shí)要執(zhí)行的事件和動(dòng)作狀態(tài)名狀態(tài)變量活動(dòng)狀態(tài)遷移起始狀態(tài)結(jié)束狀態(tài)狀態(tài)機(jī)圖的基本符號(hào)一個(gè)初始狀態(tài)0個(gè)或多個(gè)結(jié)束狀態(tài)(由事件導(dǎo)致的)狀態(tài)轉(zhuǎn)換與狀態(tài)轉(zhuǎn)換相關(guān)的內(nèi)部變量進(jìn)入/退出、或在該狀態(tài)持續(xù)期間的行為154/215Movingupdo/movingtofloorMovingdowndo/movingtofloorIdletimer=0do/increasetimerarrivedarrivedgodown(floor)MovingtoFirstfloorgoup(floor)[timer=time-out]arrivedgoup(floor)Onfirstfloor電梯升降的狀態(tài)機(jī)圖155/215狀態(tài)活動(dòng)中的標(biāo)準(zhǔn)事件entry事件:進(jìn)入該狀態(tài)時(shí)的特定動(dòng)作exit事件:退出該狀態(tài)時(shí)的特定動(dòng)作do事件:處于該狀態(tài)中時(shí)執(zhí)行的動(dòng)作活動(dòng)區(qū)中事件的語(yǔ)法:

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

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論