RationalRose培訓(xùn)_第1頁(yè)
RationalRose培訓(xùn)_第2頁(yè)
RationalRose培訓(xùn)_第3頁(yè)
RationalRose培訓(xùn)_第4頁(yè)
RationalRose培訓(xùn)_第5頁(yè)
已閱讀5頁(yè),還剩109頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、rational rose & oo建模臧立威課程目標(biāo)n了解可視化建模的相關(guān)知識(shí)n能夠使用rational rosen能夠看懂別人用uml表示的設(shè)計(jì)n具備oo建模的基本技能課程內(nèi)容n1. 可視化建?;A(chǔ)n2. oo基礎(chǔ)n3. 需求建模n4. 基于團(tuán)隊(duì)的建模n5. 分析n6. 設(shè)計(jì)n7. 正向工程和逆向工程1. 可視化建?;A(chǔ)什么是可視化建模業(yè)務(wù)流程計(jì)算機(jī)系統(tǒng)可視化建模可視化建模就是用標(biāo)準(zhǔn)的圖形表示法來(lái)建?!敖+@取系統(tǒng)的關(guān)鍵部分”uml可視化建模的作用(1)n可視化建模獲取業(yè)務(wù)流程n用例(use case)分析是一種從用戶的角度獲取業(yè)務(wù)流程的技術(shù)n使用相同的語(yǔ)言,不至于產(chǎn)生歧義n用例分

2、析能讓分析師在構(gòu)建系統(tǒng)之前理解要構(gòu)建什么可視化建模的作用(2)n可視化建模是一個(gè)交流工具業(yè)務(wù)領(lǐng)域計(jì)算機(jī)領(lǐng)域業(yè)務(wù)對(duì)象和邏輯業(yè)務(wù)對(duì)象和邏輯可視化建模的作用(3)n管理復(fù)雜性n把3000多個(gè)類放在一張圖中不好n可視化建模的“包”(package)n把元素模型化成有意義的組合n為不同的人提供不同級(jí)別的抽象n軟件構(gòu)架(architecture)logical viewphysical viewuser interfacebusiness logicdatabasevb javac+ javac+&sql可視化建模的作用(4)n促進(jìn)復(fù)用(reuse)n復(fù)用是軟件的“圣杯”n不止是復(fù)用代碼,而是復(fù)用

3、建立原始工件時(shí)需要的所有分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、文檔化n可以有一個(gè)類復(fù)用、多個(gè)類(或一個(gè)組件)的復(fù)用、應(yīng)用模式等復(fù)用方式n可視化建模讓你從復(fù)用的角度看,如果想復(fù)用工件,什么是可用的什么是umlnuml(unified modeling language)是可視化、說明、構(gòu)建和文檔化軟件系統(tǒng)工件的標(biāo)準(zhǔn)語(yǔ)言numl可以做下面的建模n數(shù)據(jù)建模n業(yè)務(wù)建模n對(duì)象建模n組件建模numl可以用于可視化建模n系統(tǒng)與外界的交互n系統(tǒng)的行為n系統(tǒng)的結(jié)構(gòu)n系統(tǒng)的構(gòu)架n系統(tǒng)的組件視圖(views)n模型由不同的view和diagram構(gòu)建而成,描述了不同的視點(diǎn)和系統(tǒng)的構(gòu)建塊nview是一個(gè)對(duì)特定涉眾有意義的模型的視點(diǎn)

4、nview是模型的“碎片”nrose中的“4+1view”logical view分析師設(shè)計(jì)師structureprocess view系統(tǒng)集成員performancescalabilitythroughputimplementation view編程人員software managementuse-case view最終用戶functionalitydeployment view系統(tǒng)工程system topologydelivery installationcommunication圖(diagrams)n用例圖(use case diagram):模型化系統(tǒng)與外界的交互n類圖(class

5、diagram):模型化系統(tǒng)的結(jié)構(gòu)n時(shí)序圖(sequence diagram):模型化系統(tǒng)的行為n協(xié)作圖(collaboration diagram):模型化系統(tǒng)的行為n組件圖(component diagram):模型化組件的組織和依賴n部署圖(deployment diagram):模型化系統(tǒng)的硬件分布n活動(dòng)圖(activity diagram):模型化系統(tǒng)內(nèi)的事件流n狀態(tài)圖(statechart diagram):模型化狀態(tài)相關(guān)的方面模型結(jié)構(gòu)view作用作用模型模型圖圖use case view是其他view的“心臟”,說明系統(tǒng)做什什么么use case modeluse case di

6、agramactivity diagram(可選)statechart diagram(可選)logical view支持系統(tǒng)的功能性需求analysis model(可選)design modelclass diagramsequence diagramcollaboration diagramactivity diagram(可選)statechart diagram(可選)process view闡述系統(tǒng)的性能、伸縮性和吞吐量process modelclass diagramimplementation view以分包、分層和配置管理的形式描述了靜態(tài)軟件模型的組織implementat

7、ion modelcomponent diagramdeployment view如何把執(zhí)行體和其他運(yùn)行時(shí)組件映射到下層平臺(tái)或計(jì)算節(jié)點(diǎn)deployment modeldeployment diagramrational rose的界面nbrowser讓你可以文本化的查看和導(dǎo)航views和diagramsn不在browser中的元素就不是模型化系統(tǒng)的一部分ndiagram window讓你可以創(chuàng)建、修改和模型化當(dāng)前模型的圖形化視圖ndiagram toolbarn包括構(gòu)建diagram的元素n每個(gè)diagram都有自己獨(dú)特的toolbarn只有顯示diagram時(shí)才是活動(dòng)的ndocumentat

8、ion window用于創(chuàng)建、查看或修改解釋diagram中被選項(xiàng)目的文本nlog window報(bào)告進(jìn)度、結(jié)果和錯(cuò)誤ntitle組成nrational rose-模型名-xx diagram:diagram所在的package名/diagram名rational rose2. oo基礎(chǔ)對(duì)象n對(duì)象是一個(gè)有定義良好的邊界和標(biāo)識(shí),并封裝了狀態(tài)(state)和行為(behavior)的實(shí)體??梢允俏锢淼模ㄈ缫粋€(gè)卡車)、概念的(如一個(gè)化學(xué)過程)或軟件的(如一個(gè)鏈表)n狀態(tài)n是對(duì)象可以處于的狀況n對(duì)象的狀態(tài)隨時(shí)間變化n用屬性(attribute)和關(guān)系(relation)表示n行為n行為決定對(duì)象如何動(dòng)作和

9、做反應(yīng)n對(duì)象的可見行為用一系列它響應(yīng)的消息來(lái)模型化n用操作(operation)、方法(method)和狀態(tài)機(jī)(state machine)表示n標(biāo)識(shí)(identity)n每個(gè)對(duì)象有唯一的標(biāo)識(shí)n例如,一個(gè)名叫j clark的教授對(duì)象的信息如下(她的狀態(tài)是tenured):nname: j clarknemployee id:567138(標(biāo)識(shí))nstatus: tenuredndiscipline: finance 類n類是對(duì)一系列具有相同屬性、操作、關(guān)系和語(yǔ)義的對(duì)象的描述n對(duì)象是類的實(shí)例n類定義了它的所有對(duì)象的結(jié)構(gòu)和行為的模板面向?qū)ο蟮幕疽?guī)則n抽象(abstraction)n對(duì)象區(qū)別于其他

10、對(duì)象的本質(zhì)特征n定義與使用者視點(diǎn)相關(guān)的邊界n不是具體的表現(xiàn),而是理想化的本質(zhì)n封裝(encapsulation)n對(duì)用戶隱藏了實(shí)現(xiàn),用戶只能通過接口與對(duì)象通信n封裝通常叫“信息隱藏”n封裝使對(duì)象的狀態(tài)不受用戶的影響,使用戶不受對(duì)象實(shí)現(xiàn)變化的影響n模塊化(modularity)n把復(fù)雜的東西分成可管理的小塊n幫助人們理解復(fù)雜的系統(tǒng)3. 需求建模需求流程用例模型n為什么要?jiǎng)?chuàng)建用例模型n用例模型允許顧客和系統(tǒng)開發(fā)者之間用一種用戶可以理解的語(yǔ)言交流系統(tǒng)要做什么n你可以認(rèn)為用例模型是顧客和開發(fā)者之間的可視化契約n什么是用例模型n在use-case view中創(chuàng)建n用例模型代表了從最終用戶角度看的系統(tǒng)的功

11、能和環(huán)境n是顧客和開發(fā)者之間的契約n對(duì)于分析、設(shè)計(jì)和測(cè)試活動(dòng)都是至關(guān)重要的n包括用例圖、用例規(guī)約和補(bǔ)充規(guī)約,也可以包括活動(dòng)圖用例圖(use case diagram)n用例圖表示了用例和主角以及用例和用例之間的關(guān)系n可視化的表示出了客戶希望系統(tǒng)做什么n代表一些大的完整的功能n表示系統(tǒng)完成的有明確結(jié)果的對(duì)主角有價(jià)值的一系列動(dòng)作n可以模型化n所有的主角和用例(global view)n某個(gè)選定主角的所有用例n一個(gè)用例以及它所有的關(guān)系n一個(gè)迭代的所有的用例用例圖的元素n主角n用例n關(guān)系registrationstudent主角(actor)n定義:系統(tǒng)外的與系統(tǒng)進(jìn)行交互的人或事物n種類n人n外部系統(tǒng)

12、n外部設(shè)備或timern識(shí)別actor要依據(jù)actor的定義,可以這樣查找:n有哪些用戶使用系統(tǒng)?n系統(tǒng)會(huì)用到哪些外部的系統(tǒng)或設(shè)備?n有什么外部系統(tǒng)或設(shè)備會(huì)用到要開發(fā)的系統(tǒng)?n有沒有定時(shí)觸發(fā)的行為?主角(actor)n如何判斷一個(gè)事物是不是actorn首先它必須與系統(tǒng)有交互,如果與系統(tǒng)沒有交互則不是主角n其次它必須是系統(tǒng)外的,如果它是我們將要開發(fā)的系統(tǒng)或是系統(tǒng)的一部分則不是主角n其它n用戶如果通過標(biāo)準(zhǔn)的輸入和輸出設(shè)備與系統(tǒng)交互則用戶是actorn用戶如果通過特殊的設(shè)備與系統(tǒng)交互,則設(shè)備是actor用例(use case)n定義:是actor與系統(tǒng)的一系列交互n特點(diǎn):n完成actor的某個(gè)目的(

13、不是功能),一般會(huì)給actor一個(gè)有價(jià)值的結(jié)果 n起始于actor的輸入 n其中,系統(tǒng)是一個(gè)黑盒n用于描述系統(tǒng)行為,但不描述如何實(shí)現(xiàn)n識(shí)別用例的依據(jù)就是用例的定義和特點(diǎn) n識(shí)別用例時(shí)需要注意 n用例的粒度不要太大也不要太小n用例描述的是系統(tǒng)做什么,初始識(shí)別用例的時(shí)候不要過多考慮系統(tǒng)的實(shí)現(xiàn),即把系統(tǒng)作為黑盒n外部系統(tǒng)或設(shè)備的行為不是要開發(fā)的系統(tǒng)行為,不要識(shí)別出來(lái)用例用例( use case)n有些用例不代表系統(tǒng)的主要功能,因而通常會(huì)被大家忽視,這些用例可能屬于以下類型:n系統(tǒng)啟動(dòng)和停止n系統(tǒng)的維護(hù)。例如,添加新用戶和建立用戶簡(jiǎn)檔n維護(hù)在系統(tǒng)中存儲(chǔ)的數(shù)據(jù)。例如,所構(gòu)建的系統(tǒng)和遺留系統(tǒng)平行工作,所以

14、數(shù)據(jù)需要在兩個(gè)系統(tǒng)之間達(dá)到同步n修改系統(tǒng)行為所需的功能。例如創(chuàng)建新報(bào)告的功能,它不僅可以創(chuàng)建硬代碼,還可以對(duì)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)創(chuàng)建一組特定報(bào)告actor和use case的關(guān)系nactor與use case之間的關(guān)系是association關(guān)系,含義是“觸發(fā)”,千萬(wàn)不要理解成數(shù)據(jù)流 systemstartup(from system)driver(from actors)rose操作加入模型元素n從browser窗口中加入n選擇要加入模型元素所在的package,單擊鼠標(biāo)右鍵,從彈出菜單中選擇new-模型元素種類(如class,package,use case diagram等),此時(shí)相應(yīng)的包下

15、面就會(huì)加入一個(gè)新的元素,你可以為它命名n從diagram的toolbar中直接加入n從toolbar中選擇要加入的元素類型,單擊diagram窗口的某個(gè)位置,新的元素就會(huì)顯示到diagram窗口中,此時(shí)你可以為新元素命名。同時(shí)browser中也出現(xiàn)新的元素(新的模型元素會(huì)加入到相應(yīng)的diagram所在的包中)。rational roserose操作更改模型元素n雙擊browser或diagram中的元素(或者單擊鼠標(biāo)右鍵,從彈出菜單中選擇open specification)就會(huì)打開新建元素的specification,在specification對(duì)話框中,你可以更改名字以及做其他的設(shè)置n注意

16、:diagram沒有specificationn注意:雙擊diagram中的package,不會(huì)打開它的specification,而是進(jìn)入package下的某個(gè)類圖rational roserose操作刪除模型元素ndelete from model:模型元素從模型中刪除(也從它參與的所有圖中刪除)n從browser中選擇要?jiǎng)h除模型元素,單擊鼠標(biāo)右鍵,從彈出菜單中選擇delete,或者n從diagram中選擇要?jiǎng)h除模型元素,從菜單中選擇edit-delete from model(快捷鍵ctrl+d)ndelete from diagramn從diagram中中選擇要?jiǎng)h除模型元素,從菜單中選

17、擇edit-delete (快捷鍵del)rational rose實(shí)踐ndemon識(shí)別atm系統(tǒng)的主角和用例,并在rose中畫出用例圖詳細(xì)用例模型nactor之間的關(guān)系泛化(generalization)nuse case之間的關(guān)系n泛化(generalization):不常用n擴(kuò)展(extend)n包含(include)super actorsub actor用例之間的擴(kuò)展關(guān)系n擴(kuò)展關(guān)系的雙方分別叫做基本用例(base use case)和擴(kuò)展用例(extension use case)n擴(kuò)展用例用來(lái)模型化基本用例中n有條件的部分,只在某些環(huán)境下執(zhí)行n復(fù)雜的或可選的路徑。n擴(kuò)展關(guān)系用ste

18、reotype是“extend” 的association關(guān)系來(lái)表示extensivebasic用例之間的擴(kuò)展關(guān)系n擴(kuò)展用例和基本用例的關(guān)系n基本用例自身應(yīng)是完整的,即基本用例在不必引用任何擴(kuò)展用例的情況下,應(yīng)該是可理解且有意義的 n基本用例可以不依賴于擴(kuò)展用例而單獨(dú)的運(yùn)行n擴(kuò)展用例只有在基本用例中的某種條件滿足時(shí)才能執(zhí)行,如果沒有基本用例,擴(kuò)展用例不能運(yùn)行n擴(kuò)展用例可以擴(kuò)展多個(gè)基本用例n擴(kuò)展點(diǎn)n定義在基本用例的哪些位置插入擴(kuò)展用例 n包括一個(gè)名稱和對(duì)用例事件流中一個(gè)或多個(gè)位置的引用n一個(gè)擴(kuò)展點(diǎn)可以引用基本用例內(nèi)的兩個(gè)行為步驟之間的單個(gè)位置,也可以引用一組不連續(xù)的位置 擴(kuò)展關(guān)系的實(shí)例 n在電話

19、系統(tǒng)中,為用戶提供的主要服務(wù)通過用例“打電話”來(lái)表示??蛇x服務(wù)的示例包括n能讓第三方加入通話(召開電話會(huì)議)n允許接收方看到呼叫方的身份(顯示呼叫方身份)n我們可以將這些可選服務(wù)所需的行為表示為基本用例“打電話”的擴(kuò)展用例,由于“打電話”本身就具有意義,您無(wú)需閱讀擴(kuò)展用例的說明就可理解基本用例的主要目的 callercalleeplae conference callshow caller identifyplace call用例之間的包含關(guān)系 n包含關(guān)系的雙方分別叫做基本用例(basic use case)(或具體用例, concrete use case)和包含用例(included us

20、e case)(或抽象用例, abstract use case) n包含用例用來(lái)模型化基本用例中n多個(gè)用例都包含的路徑n復(fù)雜的路徑n包含用例要能生成一個(gè)有意義的結(jié)果n擴(kuò)展關(guān)系用stereotype是“include” 的association關(guān)系來(lái)表示basic use caseincluded use case用例之間的包含關(guān)系n抽象用例和具體用例n抽象用例不能單獨(dú)執(zhí)行,必須與包括(也就是執(zhí)行)它的具體用例一起執(zhí)行 n抽象用例沒有特定的actor,它的actor實(shí)際上包括它的具體用例的actorn抽象用例可以被幾個(gè)其他的用例復(fù)用 n具體用例的基本流執(zhí)行時(shí),抽象用例一定執(zhí)行擴(kuò)展關(guān)系和包含關(guān)系

21、n共同點(diǎn)n擴(kuò)展用例和包含用例都是基本用例的一部分n基本用例不執(zhí)行,擴(kuò)展用例和包含用例都不會(huì)執(zhí)行n擴(kuò)展用例可以擴(kuò)展多個(gè)基本用例;包含用例可以被多個(gè)基本用例包含n區(qū)別n擴(kuò)展關(guān)系中基本用例的基本流執(zhí)行時(shí),擴(kuò)展用例不一定執(zhí)行,即擴(kuò)展用例只有在基本用例滿足某種條件的時(shí)候才會(huì)執(zhí)行n包含關(guān)系中基本用例的基本流執(zhí)行時(shí),包含用例一定會(huì)執(zhí)行 包含關(guān)系的實(shí)例 n在 atm 系統(tǒng)中,用例 withdraw cash、deposit cash和 transfer funds都需要包含系統(tǒng)識(shí)別客戶的過程??梢詫⒋诵袨槌槿〉揭粋€(gè)名為 identify customer的新包含用例中n從基本用例的角度來(lái)看,識(shí)別客戶方法是讀取

22、銀行磁卡還是執(zhí)行視網(wǎng)膜掃描并不重要。它們僅依賴于 identify customer 的結(jié)果,即客戶的身份。n從 identify customer 用例的角度來(lái)看,基本用例如何使用客戶身份或者在執(zhí)行包含用例之前基本用例中發(fā)生了什么并不重要:識(shí)別方法都會(huì)完全相同 withdraw cashtransfer fundsdoposit cashidentify customerstereotype的作用n擴(kuò)展模型元素n例如rose中沒有extend和include關(guān)系,于是用stereotype是“extend”和“include”的association關(guān)系來(lái)表示n給模型元素分類n例如將來(lái)把分析

23、類分成“boundary”、”entity”和“control”三種rational rose用例規(guī)約(use case specification)n用例名字(name)n簡(jiǎn)要說明(brief description)n事件流(flows of events)n特殊需求(special requirements)n前置條件(pre-conditions)n開始用例前所必需的系統(tǒng)及其環(huán)境的狀態(tài)n后置條件(post-conditions)n用例結(jié)束后系統(tǒng)可能具備的狀態(tài)n擴(kuò)展點(diǎn)(extension points)事件流n事件流用文本形式描述了用戶和系統(tǒng)之間如何進(jìn)行交互n用例的執(zhí)行有很多種情況,每一

24、種情況就是一個(gè)場(chǎng)場(chǎng)景景 (scenario),用例的事件流應(yīng)該描述出所有的場(chǎng)景 n事件流分成基本流(基本流(basic flowbasic flow)和備選流備選流(alternative flowalternative flow)兩種n基本事件流應(yīng)包括在執(zhí)行用例時(shí)“通?!睍?huì)發(fā)生的事件,也叫happy flown備選事件流包括與正常行為相關(guān)的可選或異常特征的行為,同時(shí)也包括正常行為的各種變形n可以將備選事件流看作是基本事件流的“繞行道”,有些備選事件流將返回到基本事件流,而有些將結(jié)束此用例的執(zhí)行前置條件和后置條件n前置條件或后置條件所說明的狀態(tài)應(yīng)該是用戶可以觀察到的狀態(tài) n前置條件是對(duì)用例何時(shí)

25、開始的約束,它并不是使用例開始的事件n雖然可以在分支流級(jí)別定義前置條件和后置條件,但是一個(gè)用例的前置條件并不只是一個(gè)分支流的前置條件n無(wú)論執(zhí)行了哪些備選流,用例的后置條件都應(yīng)為“真”;它不能只對(duì)主事件流為“真”。如果可能出現(xiàn)故障,則應(yīng)在后置條件內(nèi)包括“該動(dòng)作已經(jīng)完成,或者,如果可能出現(xiàn)故障,則不執(zhí)行該動(dòng)作”,而不只是“該動(dòng)作已經(jīng)完成” 實(shí)踐ndemon描述withdraw用例的用例描述4. 基于團(tuán)隊(duì)的建模基于團(tuán)隊(duì)的建模n受控的演化nrose通過使用uml包和子系統(tǒng)支持基于構(gòu)架的建模nrose幫助用戶在不影響其他人工作的情況下進(jìn)行詳細(xì)設(shè)計(jì)nrose幫助用戶避免創(chuàng)建構(gòu)架單元之間不恰當(dāng)?shù)穆?lián)系n把模型

26、劃分成在構(gòu)架上有重大意義的單元n可以分成叫做受控單元的單獨(dú)的文件n構(gòu)架上有重大意義的模型元素的復(fù)用rational rose受控單元n受控單元n是rational rose保存模型全部或一部分的文件n是能進(jìn)行版本控制的模型元素n定義了單個(gè)開發(fā)人員可以操作模型的一部分n在團(tuán)隊(duì)中共享n讓團(tuán)隊(duì)可以平行開發(fā)n一定是包n下面元素可以作為受控單元n模型文件本身(.mdl)n邏輯視圖和用例視圖包(.cat)n組件視圖包(.sub)n部署視圖的圖(.prc)n模型屬性(.prp)rational rose受控單元n受控單元可以被loaded或unloadedn可以load模型的一部分,這樣就減少了啟動(dòng)延遲、資

27、源消耗和維護(hù)對(duì)unloaded的單元的索引n可以被write enable或write protect(手動(dòng)的或自動(dòng)的)n子受控單元具有獨(dú)立于父受控單元的寫保護(hù)n即使有版本控制系統(tǒng),也可以對(duì)受控單元進(jìn)行寫保護(hù)控制nreload模型后,寫保護(hù)失效n手動(dòng)寫保護(hù)不影響文件系統(tǒng)的訪問權(quán)限nmodel workspace是當(dāng)前裝載的受控單元和打開的diagram的快照nmodel包括組成完成模型的圖、元素和受控單元nmodel workspace包括某個(gè)model在某一點(diǎn)上的打開的圖和受控單元的實(shí)際狀態(tài)rational rose虛路徑n虛路徑使模型可以在不同的目錄結(jié)構(gòu)中移動(dòng),可以從不同的workspac

28、e上修改。rational rose虛路徑使model脫離物理位置虛路徑物理路徑5. 分析分析和設(shè)計(jì)流程分析和設(shè)計(jì)分析設(shè)計(jì)側(cè)重于理解問題側(cè)重于解決問題功能需求非功能性需求系統(tǒng)結(jié)構(gòu)行為(behavior)操作和屬性對(duì)象的生命周期小模型大模型用例實(shí)現(xiàn)n用例實(shí)現(xiàn)n對(duì)用例模型中的每個(gè)用例,在設(shè)計(jì)模型中都有相應(yīng)的實(shí)現(xiàn)n提供從分析和設(shè)計(jì)到需求的可跟蹤性n用例實(shí)現(xiàn)結(jié)構(gòu)n用例實(shí)現(xiàn)包n是組織用例的類和交互圖的方式n每個(gè)用例都對(duì)應(yīng)一個(gè)用例實(shí)現(xiàn)包n可跟蹤性圖n交互圖n時(shí)序圖(sequence diagrams)(動(dòng)態(tài))n協(xié)作圖(collaboration diagrams) (動(dòng)態(tài))n類圖(class diagra

29、ms) (靜態(tài))registration(from use case view)registration分析類 n分析類代表“系統(tǒng)中具備職責(zé)和行為的事物”的初期概念模型。這些概念模型最終將演進(jìn)為設(shè)計(jì)模型中的類和子系統(tǒng)n分類n邊界類(boundary class)n接口與系統(tǒng)外部某些事物的媒介 n控制類(control class)n負(fù)責(zé)協(xié)調(diào)用例的行為 n實(shí)體類(entity class) n封裝了數(shù)據(jù)以及數(shù)據(jù)相關(guān)的操作邊界類n邊界類幫助系統(tǒng)接口與系統(tǒng)外部進(jìn)行交互。邊界對(duì)象將系統(tǒng)與其外部環(huán)境的變更(與其他系統(tǒng)的接口的變更、用戶需求的變更等)分隔開,使這些變更不會(huì)對(duì)系統(tǒng)的其他部分造成影響 n分類n

30、用戶接口類n幫助與用戶進(jìn)行通信的類,通過標(biāo)準(zhǔn)的i/o設(shè)備提供人機(jī)界面 n系統(tǒng)接口類n幫助與其他系統(tǒng)進(jìn)行通信的類,系統(tǒng)接口對(duì)象隱藏如何與外部接口通信的細(xì)節(jié) n設(shè)備接口類或timer n提供對(duì)硬件設(shè)備的軟件接口 控制類n作用n用于對(duì)一個(gè)或幾個(gè)用例所特有的控制行為進(jìn)行建模,控制類封裝了用例的特有行為n控制對(duì)象(控制類的實(shí)例)通常控制其他對(duì)象,因此它們的行為具有協(xié)調(diào)性質(zhì)n控制類有效地將邊界對(duì)象與實(shí)體對(duì)象分開,讓系統(tǒng)更能適應(yīng)其邊界內(nèi)發(fā)生的變更n控制類還將用例所特有的行為與實(shí)體對(duì)象分開,使實(shí)體對(duì)象在用例和系統(tǒng)中具有更高的復(fù)用性n控制類并不能處理用例需要執(zhí)行的一切事務(wù)。相反,它協(xié)調(diào)其他用來(lái)實(shí)施此功能的對(duì)象的

31、活動(dòng)。控制類將工作委派給已被指定負(fù)責(zé)此項(xiàng)功能的對(duì)象??刂祁愅ǔ1豢闯梢粋€(gè)樂隊(duì)的指揮,它指揮(控制)參與use case的其它對(duì)象的行為,通知對(duì)象什么時(shí)候執(zhí)行以及執(zhí)行什么。 n有的用例沒有控制類,復(fù)雜的用例可以有多個(gè)控制類n控制對(duì)象的生命周期通常和用例實(shí)例的生命周期相同實(shí)體類n作用實(shí)體類是用于對(duì)必須存儲(chǔ)的信息和相關(guān)行為建模的類。實(shí)體對(duì)象用于保存和更新一些現(xiàn)象的有關(guān)信息,例如事件、人員或者一些現(xiàn)實(shí)生活中的對(duì)象n實(shí)體類的特點(diǎn)n實(shí)體類通常都是永久性的,它們所具有的屬性和關(guān)系是長(zhǎng)期需要的,有時(shí)甚至在系統(tǒng)的整個(gè)生存期都需要n一個(gè)實(shí)體對(duì)象通常不是某個(gè)用例實(shí)現(xiàn)所特有的;有時(shí),一個(gè)實(shí)體對(duì)象甚至不專用于系統(tǒng)本身n

32、屬性和關(guān)系的值通常由主角指定,執(zhí)行系統(tǒng)內(nèi)部任務(wù)時(shí)也可能要使用實(shí)體對(duì)象n實(shí)體對(duì)象的行為可以和其他類的對(duì)象的行為一樣復(fù)雜。但是,與其他對(duì)象不同的是,這種行為與實(shí)體對(duì)象所代表的現(xiàn)象具有很強(qiáng)的相關(guān)性n實(shí)體對(duì)象是獨(dú)立于環(huán)境(主角)的n實(shí)體對(duì)象代表了開發(fā)中的系統(tǒng)的核心概念 查找分析類n每個(gè)用例主角對(duì)都至少有一個(gè)邊界類n可以首先為每個(gè)用例實(shí)現(xiàn)確定一個(gè)控制類,接著,在確定了更多的用例實(shí)現(xiàn)并發(fā)現(xiàn)更多的共性后,再對(duì)其進(jìn)行改進(jìn)nactor的信息可以作為一個(gè)實(shí)體類n用過濾名詞方法尋找實(shí)體類n在use case flow of events中畫出名詞n去掉重復(fù)的候選n去掉含糊的候選n去掉actorn去掉實(shí)現(xiàn)結(jié)構(gòu)n去掉屬

33、性n去掉操作n此時(shí)剩下的名詞一般就是實(shí)體記錄分析類n在“design model”包中加入識(shí)別出來(lái)的分析類n分析類的類型用類的stereotype表示n如果能說明某個(gè)分析類的責(zé)任,就給該分析類加上說明 實(shí)踐ndemon識(shí)別課程注冊(cè)系統(tǒng)中register for course用例的分析類將行為分配給分析類n用時(shí)序圖和協(xié)作圖來(lái)描述用例行為n是動(dòng)態(tài)建模的一部分n每個(gè)用例的每個(gè)事件流(基本流和備選流)建一個(gè)或多個(gè)時(shí)序圖和協(xié)作圖 n具有多個(gè)復(fù)雜時(shí)間點(diǎn)或者判定點(diǎn)的分支流通常需要用不同的圖來(lái)說明,而復(fù)雜流因?yàn)樘L(zhǎng)而無(wú)法用一個(gè)圖來(lái)把握時(shí)也需要用不同的圖來(lái)說明 n一般都是從時(shí)序圖入手,生成了時(shí)序圖之后,在 ro

34、se的browser中選擇時(shí)序圖,然后按“f5”鍵,就會(huì)生成該時(shí)序圖對(duì)應(yīng)的協(xié)作圖 時(shí)序圖n時(shí)序圖表示如何一步步的完成系統(tǒng)的一個(gè)功能n時(shí)序圖是用于決定類責(zé)任和接口的主要信息來(lái)源n時(shí)序圖描述了對(duì)象間的交互模式n通過對(duì)象的“生命線”和他們相互發(fā)送的消息來(lái)顯示對(duì)象n時(shí)序圖與協(xié)作圖在語(yǔ)義上是相同的,只是時(shí)序圖中的消息是按時(shí)間順序分布的n時(shí)序圖表示的是一個(gè)場(chǎng)景(scenario)n組成n主角(actor)n對(duì)象(object)n消息(message):消息可以有sequence numbern生命線(lifeline):表示對(duì)象在特定時(shí)間的存在 nfocus of control:表示對(duì)象直接或通過子過程

35、執(zhí)行動(dòng)作的一段時(shí)間時(shí)序圖的元素協(xié)作圖n協(xié)作圖顯示對(duì)象之間的交互n協(xié)作圖強(qiáng)調(diào)參與交互的對(duì)象的組織n適合分析活動(dòng),適合表示少數(shù)對(duì)象的簡(jiǎn)單交互n協(xié)作圖很難顯示補(bǔ)充的說明性信息,例如時(shí)間、判定點(diǎn)或其他非結(jié)構(gòu)化的信息,而在序列圖中這些信息可以方便地添加到注釋中 n組成n主角(actor)n對(duì)象(object)nlinks:link是對(duì)象通信的途徑n消息(message)協(xié)作圖的元素實(shí)例ndemon課程注冊(cè)系統(tǒng)中register for course用例的用例分析類的職責(zé)n在開發(fā)初期,類的屬性和操作不一定被定義,但是我們知道了類的職責(zé)n類的責(zé)任就是類可以提供的事物的狀態(tài)或契約n類的責(zé)任用/表示類圖n類圖n

36、表示一系列類、接口和它們的關(guān)系n表示系統(tǒng)的靜態(tài)視圖,在logical view中n用例實(shí)現(xiàn)的類圖又叫vopc(view of participated classes)nvopc類圖表示用例實(shí)現(xiàn)的參與類以及這些類之間的關(guān)系n確??缭阶酉到y(tǒng)的用例實(shí)現(xiàn)的一致性n類圖的元素n類n關(guān)系類之間的關(guān)系ndependency(依賴)n體現(xiàn)“暫時(shí)使用”的含義,或者b的變更會(huì)導(dǎo)致a的變更n是一種暫時(shí)的關(guān)系n可以有以下幾種實(shí)現(xiàn)方式n對(duì)象具有“全局”范圍,系統(tǒng)中的任何對(duì)象都可以向它發(fā)送消息n一個(gè)對(duì)象可以作為一個(gè)參數(shù)傳遞給第二個(gè)對(duì)象n對(duì)象可以在操作內(nèi)創(chuàng)建和破壞(即“臨時(shí)”對(duì)象)nassociation(關(guān)聯(lián))n體現(xiàn)“

37、use ”的含義n實(shí)現(xiàn):類a的定義中有類b的指針變量abab類之間的關(guān)系naggregation(聚合)n體現(xiàn)“is a part-of”(包含、擁有)的含義ncomposition(組合)n體現(xiàn)“is a part-of”(包含、擁有)的含義n組合與聚合的區(qū)別是組合的整體和部分的object具有相同的生命周期,而聚合則不同ngeneralization(泛化) 或 inheritance(繼承)n體現(xiàn)“is a kind of”的含義n子類不僅繼承了超類的attribute和operation,同時(shí)還繼承了超類的relationship n類之間關(guān)系的強(qiáng)弱順序n依賴 關(guān)聯(lián) 聚合 組合 繼承

38、ababsuperclasssubclass類之間關(guān)系相關(guān)的其它概念 nrole(角色)表示參與關(guān)聯(lián)關(guān)系的對(duì)象在關(guān)聯(lián)關(guān)系中承擔(dān)的角色 nmultiplicity(多重性)表示類a的一個(gè)object對(duì)應(yīng)類b的幾個(gè)object,代表的是business rulennavigability(導(dǎo)向性 )表示對(duì)象訪問的方向n右圖中n0.1表示一個(gè)類b的對(duì)象可以對(duì)應(yīng)0個(gè)或1個(gè)類a的對(duì)象n0.n表示一個(gè)類a的對(duì)象可以對(duì)應(yīng)類b的0個(gè)或多個(gè)對(duì)象n關(guān)系上的箭頭就是navigability,表示類a的對(duì)象可以訪問類b的對(duì)象,但是類b的對(duì)象不能訪問類a的對(duì)象,如果關(guān)系上沒有箭頭,表示navigability是雙向的識(shí)

39、別分析類之間的關(guān)系n識(shí)別分析類之間的關(guān)聯(lián)關(guān)系有兩個(gè)來(lái)源n協(xié)作圖:協(xié)作圖中對(duì)象之間有聯(lián)系,就意味著相應(yīng)的類之間存在關(guān)聯(lián)關(guān)系n領(lǐng)域知識(shí):從中得到實(shí)體類之間的聚合關(guān)系n注意:n不要添加您認(rèn)為“或許”存在的關(guān)聯(lián)關(guān)系,除非協(xié)作圖要求添加這些關(guān)聯(lián)關(guān)系n在分析時(shí)不用識(shí)別出類之間的關(guān)系是關(guān)聯(lián)還是依賴,是聚合還是組合,因?yàn)槲覀冞€沒有作出明智決策所需要的足夠信息,我們將在類設(shè)計(jì)活動(dòng)中改進(jìn)n對(duì)于繼承關(guān)系,在分析時(shí)可以識(shí)別出來(lái),但是不要求 n是關(guān)聯(lián)還是聚合 n選擇聚合只是為了闡明一種整體/部分的關(guān)系 n如果拿不準(zhǔn)是什么關(guān)系,通常關(guān)聯(lián)關(guān)系更合適。聚合關(guān)系通常是很明顯的,聚合的語(yǔ)義應(yīng)該很容易的從上下文中理解出來(lái) n是聚合

40、關(guān)系還是關(guān)聯(lián)關(guān)系與開發(fā)的具體應(yīng)用有關(guān)記錄類之間的關(guān)系n用類圖來(lái)表示類之間的關(guān)系 n用例實(shí)現(xiàn)的類圖又叫vopc(view of participated classes)實(shí)踐n方法n在用例實(shí)現(xiàn)包中建一個(gè)類圖,取名叫vopcn在類圖中表示參與用例的所有類及其關(guān)系ndemonatm系統(tǒng)的類圖6. 設(shè)計(jì)process modelndemon用類圖描述課程注冊(cè)系統(tǒng)的運(yùn)行時(shí)結(jié)構(gòu)deployment modelndeployment model的模型元素nnodenphysical run-time computational resourcenprocessor noden運(yùn)行系統(tǒng)軟件ndevice no

41、densupport devicentypically controlled by a processornconnectionn通信機(jī)制n物理媒介n軟件協(xié)議ndemo:課程注冊(cè)系統(tǒng)設(shè)計(jì)元素接口和包n接口n接口是定義行為集(即操作集)的模型元素n該行為集由classifier模型元素(即類、子系統(tǒng)或component)提供nclassifier可以實(shí)現(xiàn)實(shí)現(xiàn)一個(gè)或多個(gè)接口;一個(gè)接口可由一個(gè)或多個(gè)classifier實(shí)現(xiàn)n實(shí)現(xiàn)相同接口的那些classifier在系統(tǒng)中可以互換n每個(gè)接口應(yīng)該是唯一且明確定義的操作集n設(shè)計(jì)包 n一個(gè)包中可以包含公有類,也可以包含私有類n公有類可以與任何其他類相關(guān)聯(lián)n私

42、有類只能與其所在包中包含的類相關(guān)聯(lián)n包接口由包的公有類組成,包接口隔離并實(shí)施對(duì)其他包的依賴關(guān)系 n包耦合的原則n不應(yīng)對(duì)包進(jìn)行交叉耦合(即互相依賴),例如兩個(gè)包不應(yīng)互相依賴。n較低層中的包不應(yīng)依賴于較高層中的包,包只應(yīng)依賴于同一層及下一層中的包n通常,依賴關(guān)系不應(yīng)跳層,除非依賴行為在所有層之間都是共同的設(shè)計(jì)元素設(shè)計(jì)子系統(tǒng)n設(shè)計(jì)子系統(tǒng)n設(shè)計(jì)子系統(tǒng)是一種模型元素,它具有包(其中可包含其他模型元素)和類(其具有行為)的語(yǔ)義n子系統(tǒng)的行為由它實(shí)現(xiàn)的一個(gè)或多個(gè)接口來(lái)定義 n子系統(tǒng)的行為由它所包含的類或其他子系統(tǒng)提供n子系統(tǒng)內(nèi)部的元素對(duì)外不可見n子系統(tǒng)的特點(diǎn)n可以獨(dú)立預(yù)定、配置或交付n可以獨(dú)立開發(fā)(只要接口

43、保持不變)n可以在一組分布式計(jì)算節(jié)點(diǎn)上獨(dú)立部署n可以在不破壞系統(tǒng)其他部分的情況下獨(dú)立地進(jìn)行更改n可以將系統(tǒng)分為若干單元,以提供對(duì)關(guān)鍵資源的有限安全保護(hù) n可以在設(shè)計(jì)中代表現(xiàn)有產(chǎn)品或外部系統(tǒng) 設(shè)計(jì)元素n子系統(tǒng)和包的區(qū)別n子系統(tǒng)比包封裝性好n子系統(tǒng)有接口,外部只能通過子系統(tǒng)接口訪問子系統(tǒng)內(nèi)部n包沒有接口,外部可以直接訪問包中公共的類n子系統(tǒng)具有行為,而包沒有n子系統(tǒng)是一種通過一個(gè)或多個(gè)它所實(shí)現(xiàn)的接口來(lái)提供行為的包n而包并不提供行為它們只是用來(lái)容納對(duì)象的容器n子系統(tǒng)依賴關(guān)系n子系統(tǒng)不應(yīng)暴露自己的任何內(nèi)容;子系統(tǒng)外部的元素都不應(yīng)依賴于子系統(tǒng)內(nèi)部特定元素的存在 n子系統(tǒng)只應(yīng)依賴于其他模型元素的接口,因此

44、它不直接依賴于子系統(tǒng)外部的任何特定模型元素 。n例外情況n許多子系統(tǒng)共享一組類定義,因此這些子系統(tǒng)將“導(dǎo)入”包含公共類的包中的內(nèi)容。這只能用于位于構(gòu)架低層的包,并且原因只能是為了確保在子系統(tǒng)之間傳遞的公共類定義保持一致 創(chuàng)建初始的設(shè)計(jì)類n做設(shè)計(jì)類的設(shè)計(jì)時(shí),將沒有分析類的類型,但是可以根據(jù)將要設(shè)計(jì)的分析類類型,采用不同的特定策略來(lái)創(chuàng)建初始設(shè)計(jì)類n需要多少類n大量的簡(jiǎn)單的類意味著每個(gè)類:n封裝了整個(gè)系統(tǒng)邏輯的很小的一部分n更容易復(fù)用n容易實(shí)現(xiàn)n少量的復(fù)雜的類意味著每個(gè)類:n封裝了整個(gè)系統(tǒng)邏輯的很大一部分n不容易復(fù)用n實(shí)現(xiàn)困難n注意na class should have a single well

45、 focused purpose.a class should do one thing and do it well邊界類的設(shè)計(jì)策略nui邊界類n分析時(shí)識(shí)別出來(lái)了高層次的邊界類,設(shè)計(jì)時(shí)需要?jiǎng)?chuàng)建更多的類來(lái)支持實(shí)際的guii和外部系統(tǒng)交互n用戶接口邊界類的設(shè)計(jì)依賴與用什么ui開發(fā)工具,你只需要設(shè)計(jì)開發(fā)環(huán)境不能自己你創(chuàng)建的部分。n用戶界面的原型開發(fā)會(huì)使設(shè)計(jì)有一個(gè)良好的起點(diǎn)n系統(tǒng)邊界類n外部系統(tǒng)的接口通常有復(fù)雜的行為,所以通常模型化成子系統(tǒng)n如果接口不復(fù)雜,你可以用一個(gè)或多個(gè)設(shè)計(jì)類來(lái)表示,以后對(duì)于每個(gè)協(xié)議、接口或api使用一個(gè)單獨(dú)的設(shè)計(jì)類實(shí)體類的設(shè)計(jì)策略n實(shí)體對(duì)象經(jīng)常是被動(dòng)的和持久化的n性能要求可能

46、會(huì)導(dǎo)致返工n例如,如果我們有一個(gè)包括5個(gè)屬性的類,一個(gè)屬性實(shí)際上不是持久化的,只是運(yùn)行時(shí)的記錄,另外兩個(gè)屬性不常用,設(shè)計(jì)時(shí),我們決定應(yīng)該能立即查詢常用的屬性,而對(duì)于不常用的屬性只有當(dāng)有人請(qǐng)求時(shí)才去查詢。我們不想為用戶做一個(gè)復(fù)雜的設(shè)計(jì),因此,從數(shù)據(jù)的角度看,我們把fatclass作為兩個(gè)持久化數(shù)據(jù)類的代理,它被查詢時(shí)它就會(huì)從數(shù)據(jù)庫(kù)中查詢fatclassdatahelper,而只有用戶請(qǐng)求時(shí)才從數(shù)據(jù)庫(kù)中查詢fatclasslazydatahelper實(shí)體類的設(shè)計(jì)策略確定永久類n必需在永久媒介上保存狀態(tài)的類被稱為“永久類” n在分析的設(shè)計(jì)后,已經(jīng)為永久類標(biāo)記了“永久性”的分析機(jī)制n設(shè)計(jì)之前構(gòu)架設(shè)計(jì)師

47、應(yīng)該已經(jīng)選擇了設(shè)計(jì)機(jī)制和實(shí)現(xiàn)機(jī)制n提醒了數(shù)據(jù)庫(kù)設(shè)計(jì)員要特別注意類的物理存儲(chǔ)特征n告訴負(fù)責(zé)永久性機(jī)制的設(shè)計(jì)員,類的實(shí)例必需是永久性的n設(shè)計(jì)永久類是要應(yīng)用構(gòu)架設(shè)計(jì)師選擇的實(shí)現(xiàn)機(jī)制控制類的設(shè)計(jì)策略n如果控制類只是邊界類和實(shí)體類的通路,就可以去掉n以下的控制類是必要的:n封裝了復(fù)雜的控制行為n封裝的行為可能會(huì)變化n性能必須分布在多個(gè)進(jìn)程或處理器中n需要事務(wù)管理定義類的可見性n“公有”類可由它所在的包之外的類引用n“私有”類(或類的可見性是“實(shí)施”)只能由同一包內(nèi)的類引用。 定義操作n操作來(lái)源n交互圖中的messagen為與設(shè)計(jì)類相對(duì)應(yīng)的分析類的每個(gè)責(zé)任定義一個(gè)操作n研究設(shè)計(jì)類參與的用例實(shí)現(xiàn),看操作是如

48、何被使用的細(xì)化操作、描述、返回值和參數(shù)n研究use-case特定的需求,確保沒有遺漏操作的隱含需求n其它n是否存在一種生成類實(shí)例的方式n是否有判斷兩個(gè)類實(shí)例是否相等的需求n是否有創(chuàng)建類實(shí)例拷貝的需求n為了應(yīng)用機(jī)制是否需要新的操作定義操作n命名和說明操作 n在命名操作、返回類型和參數(shù)及其類型時(shí),應(yīng)該使用實(shí)現(xiàn)語(yǔ)言的命名約定 n操作名應(yīng)該簡(jiǎn)短,并可說明進(jìn)行操作所得到的結(jié)果 n從操作用戶用戶的角度為操作編寫說明n定義操作可見性 (屬性和操作都有)npublic: +nprotected: #nprivate: -nscope(屬性和操作都有)ninstance:一個(gè)類實(shí)例對(duì)應(yīng)一個(gè)屬性或操作實(shí)例ncla

49、ssifier:所有的類實(shí)例對(duì)應(yīng)一個(gè)屬性或操作實(shí)例定義方法n方法說明了操作的實(shí)現(xiàn) n大多數(shù)情況下,方法是直接由編程語(yǔ)言實(shí)施的。如果實(shí)現(xiàn)操作需要采用特定算法,或需要操作說明之外的更多信息,則要采用單獨(dú)的方法說明 n需要考慮n特殊的算法n使用的其他對(duì)象和操作n屬性和參數(shù)如何被實(shí)現(xiàn)和使用n關(guān)系(relations)如何被實(shí)現(xiàn)和使用定義狀態(tài)n對(duì)于狀態(tài)相關(guān)的設(shè)計(jì)類,可以畫狀態(tài)圖來(lái)增加對(duì)類的理解n狀態(tài)圖中每一狀態(tài)轉(zhuǎn)移事件都與一個(gè)操作關(guān)聯(lián)關(guān)系n對(duì)象的操作根據(jù)狀態(tài)可以具有不同的行為,所以定義方法的時(shí)候應(yīng)該參照狀態(tài)圖 n在處理一些異常事件時(shí),狀態(tài)圖尤其有用n狀態(tài)通常采用屬性表示 狀態(tài)圖(statechart d

50、iagram)的組成狀態(tài)圖狀態(tài)(state)n狀態(tài)是對(duì)象生命中的一個(gè)情形,對(duì)象的狀態(tài)決定它能響應(yīng)的事件n狀態(tài)具有以下特征 n初始狀態(tài)(start state)n狀態(tài)機(jī)或子狀態(tài)的默認(rèn)起始位置 n有且只能有一個(gè)初始狀態(tài)n最終狀態(tài)(end state)n表示對(duì)象生命的結(jié)束n可以有一個(gè)以上的最終狀態(tài),也可以沒有最終狀態(tài)n初始狀態(tài)和終止?fàn)顟B(tài)實(shí)際上是偽狀態(tài)n除了名稱外,它們都沒有常規(guī)狀態(tài)通常所具有的部分名稱名稱狀態(tài)的名字活動(dòng)活動(dòng)(activity)(activity)在進(jìn)入或退出狀態(tài)時(shí),或狀態(tài)持續(xù)過程中所執(zhí)行的操作。非原子的,可中斷的執(zhí)行體內(nèi)部遷移內(nèi)部遷移狀態(tài)不發(fā)生變更的情況下對(duì)事件的響應(yīng)子狀態(tài)子狀態(tài)狀態(tài)

51、的嵌套結(jié)構(gòu),superstate時(shí)包括了嵌套的狀態(tài)(substate)的狀態(tài),substate的公共的遷移可以在superstate級(jí)表示,對(duì)嵌套的層數(shù)沒有限制延遲的事件延遲的事件 未在該狀態(tài)中處理但被延遲處理(即列隊(duì)等待由另一個(gè)狀態(tài)中的對(duì)象來(lái)處理)的一系列事件。狀態(tài)圖轉(zhuǎn)移(transition)n轉(zhuǎn)移:當(dāng)發(fā)生指定事件并且滿足指定條件時(shí),第一個(gè)狀態(tài)中的對(duì)象將執(zhí)行某些操作并進(jìn)入第二個(gè)狀態(tài)n轉(zhuǎn)移具有以下幾項(xiàng)特征 n一個(gè)轉(zhuǎn)移可能有多個(gè)源狀態(tài),一個(gè)轉(zhuǎn)移也可能有多個(gè)目標(biāo)狀態(tài)源狀態(tài)源狀態(tài)轉(zhuǎn)移前的狀態(tài)事件觸發(fā)器事件觸發(fā)器(event)使轉(zhuǎn)移滿足觸發(fā)條件的事件可能包括信號(hào)、調(diào)用、時(shí)間推移或狀態(tài)變更 警 戒 條

52、 件警 戒 條 件 ( g u a r d condition)一種布爾表達(dá)式。在接收到事件觸發(fā)器只有表達(dá)式求值結(jié)果為 true才發(fā)生轉(zhuǎn)移動(dòng)作(動(dòng)作(action)可執(zhí)行的、不可分割的計(jì)算過程目標(biāo)狀態(tài)目標(biāo)狀態(tài)在完成轉(zhuǎn)移后被激活的狀態(tài)。狀態(tài)圖歷史狀態(tài)n當(dāng)轉(zhuǎn)移進(jìn)入復(fù)合狀態(tài)時(shí),嵌套狀態(tài)機(jī)的操作將從初始狀態(tài)開始重新執(zhí)行(除非轉(zhuǎn)移直接以子狀態(tài)為目標(biāo))。歷史狀態(tài)使?fàn)顟B(tài)機(jī)可以重新進(jìn)入在它退出復(fù)合狀態(tài)之前的最后一個(gè)活動(dòng)子狀態(tài)狀態(tài)圖實(shí)例atm controlidleentry/ display welcomeejectingconfiscatingwaiting for passwordvalidating p

53、asswordwaiting for choicewaiting for passwordcard insertedvalidating passwordwaiting for choicecancelfirst invalid password,secondthird invalid password, stolen or expired cardvalid passwordpassword inputedstart up狀態(tài)圖練習(xí)openassignedunassignedassignedunassignedclosedcancelledfullcommiteddo/ generate c

54、lass rostercancelledfullcommiteddo/ generate class rostercancelcolseregistration has profesosr assigned close / numstudents = 0removeprofessorclosecloseregistrationcancle numstudents = 10 addprofessorclose numstudent = 3 close numstudents = 3 活動(dòng)圖n活動(dòng)圖可以表示系統(tǒng)內(nèi)的事件流ndemo:atm的控制過程create curriculumselect c

55、ourses to teachcreate catalogplace catalog in bookstoremail catalog to studentsopen registrationclose registration registratin time period expired 確定屬性n屬性來(lái)源n檢查方法描述n檢查狀態(tài)n類本身需要保存的任何信息n分析時(shí)可以只定義出屬性名就可以,設(shè)計(jì)時(shí),對(duì)于每個(gè)屬性需要定義:n名字:要同時(shí)符合項(xiàng)目和編程語(yǔ)言的命名風(fēng)格n類型n缺省或初始值n可見性n注意:類是持久化的,但不一定所有的屬性都是持久化的定義依賴關(guān)系nassociations和aggreg

56、ation是結(jié)構(gòu)的關(guān)系ndependencies是非結(jié)構(gòu)的關(guān)系n分析時(shí),我們假設(shè)所有的關(guān)系都是結(jié)構(gòu)關(guān)系;設(shè)計(jì)時(shí),我們必須決定需要哪種通信渠道n區(qū)分是關(guān)聯(lián)還是依賴n如果你總是需要一個(gè)關(guān)系,如果一個(gè)事物跨一個(gè)或多個(gè)操作的與另一個(gè)事物由關(guān)系,那么這個(gè)關(guān)系就是association;否則就是暫時(shí)的,就是local,parameter或全局的n如果許多運(yùn)行時(shí)對(duì)象總是共享一個(gè)實(shí)例,也許這個(gè)實(shí)例應(yīng)該作為參數(shù)來(lái)傳遞,如果這個(gè)實(shí)例自始至終只有一個(gè),那么就可以作為全局變量n如果不需要共享一個(gè)實(shí)例,就作為local變量就可以了n如果每次需要時(shí)都要?jiǎng)?chuàng)建和銷毀對(duì)象,就可以定義成field,參數(shù)或全局定義關(guān)聯(lián)關(guān)系n需要n

57、區(qū)分組合(composition) vs. 聚合(aggregation)n區(qū)分attribute vs. associationn確定navigabilitynassociation class designnmultiplicity design區(qū)分組合和聚合n聚合nshared aggregation:一個(gè)part可以屬于多個(gè)wholennon-shared aggregation:一個(gè)part只能屬于一個(gè)wholen是組合還是聚合?n組合的whole和part具有相同的生命周期n所以只要看對(duì)象如何被創(chuàng)建和銷毀就行了區(qū)分組合和屬性nattributes vs. compositionn如

58、下情況用compositionnproperties需要獨(dú)立的身份,可以被多個(gè)對(duì)象引用n多個(gè)類具有相同的propertiesnproperties具有自己復(fù)雜的結(jié)構(gòu)以及propertiesnproperties具有自己復(fù)雜的行為nproperties具有自己的關(guān)系n其它情況用attributes 確定navigabilitynnavigability可以用以下方式來(lái)實(shí)現(xiàn)n直接的對(duì)象引用n樹組n哈希表n其它的允許一個(gè)對(duì)象引用其它對(duì)象的技術(shù)n分析時(shí)的association缺省的都是雙方向的,設(shè)計(jì)時(shí)必須定義navigability,以便只實(shí)現(xiàn)需要的通信n雙方向的比單方向更難實(shí)現(xiàn)n哪個(gè)方向是真正需要的n研究交互圖n即使兩個(gè)方向似乎都需要,也會(huì)有n一個(gè)方向上的navigability不頻繁n一個(gè)類的實(shí)例數(shù)目比較少association classnassociation class是與一個(gè)association相關(guān)聯(lián)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論