Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第2版)第17章課件_第1頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第2版)第17章課件_第2頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第2版)第17章課件_第3頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第2版)第17章課件_第4頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第2版)第17章課件_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、統(tǒng)一建模語(yǔ)言UML統(tǒng)一建模語(yǔ)言UMLUML模型系統(tǒng)體系結(jié)構(gòu) UML: Unified Modeling LanguageUnified:UML模型系統(tǒng)體系結(jié)構(gòu) UML: Unified MoBoochRumbaughJacobson UML由世界著名的面向?qū)ο蠹夹g(shù)專(zhuān)家G. Booch、J. Rumbaugh、I. Jacobson發(fā)起,在Booch方法,OMT方法和OOSE方法基礎(chǔ)上,廣泛征求意見(jiàn),汲眾家之長(zhǎng),幾經(jīng)修改而完成的。1997年被OMG(Object Management Group)采納為業(yè)界標(biāo)準(zhǔn)。BoochRumbaughJacobson UML由世Modeling: 建模UML

2、用于建模,即表達(dá)模型設(shè)計(jì),而且自身?yè)碛兴膶芋w系結(jié)構(gòu)。 模型是系統(tǒng)一個(gè)抽象的概括,強(qiáng)調(diào)系統(tǒng)設(shè)計(jì)特定的重要方面,同時(shí)忽略大量底層的編程細(xì)節(jié)。而建模就是為了捕捉、描述系統(tǒng)的核心。同一研究對(duì)象不同人建立的模型可能同樣好或同樣差。 建模的益處:理解和認(rèn)識(shí)系統(tǒng)的結(jié)構(gòu)和行為,掌握系統(tǒng)的本質(zhì)特征。在創(chuàng)建系統(tǒng)之間,了解系統(tǒng)的風(fēng)險(xiǎn)并進(jìn)行化解。是開(kāi)發(fā)團(tuán)隊(duì)溝通的重要形式,為使用系統(tǒng)的人提供幫助。Modeling: 建模UML用于建模,即表達(dá)模型設(shè)計(jì),而且Language: 是一種可視化建模語(yǔ)言,有語(yǔ)法和語(yǔ)義,消除了自然語(yǔ)言的歧義。雖然與具體面向?qū)ο笳Z(yǔ)言無(wú)關(guān),但學(xué)會(huì)UML的關(guān)鍵之處是將UML模型與具體代碼實(shí)現(xiàn)相互結(jié)合;

3、UML modelSource codeObject structuresExecuting programUMLProgramming languageAbstract view ofAbstract view ofSpecifiesSpecifies模型與代碼之間的關(guān)系Language: 是一種可視化建模語(yǔ)言,有語(yǔ)法和語(yǔ)義,消除四層元模型體系結(jié)構(gòu)Run-time Instance運(yùn)行實(shí)例層Model模型層Metamodel元模型層Metametamodel元元模型層Classperson1:PersonPersonToolAssociationInfrastructure Library:

4、Core:Constructs:ClassInfrastructure Library:Core:Abstraction:Relationships規(guī)定元模型的語(yǔ)言規(guī)定模型的語(yǔ)言定義描述語(yǔ)義域的語(yǔ)言四層元模型體系結(jié)構(gòu)Run-time Instance運(yùn)行實(shí)例 UML的主要特點(diǎn): 建模設(shè)計(jì)上的標(biāo)準(zhǔn)化與可視化的結(jié)合 建模設(shè)計(jì)上的語(yǔ)言無(wú)關(guān)性。建模設(shè)計(jì)上標(biāo)準(zhǔn)性與擴(kuò)展性的統(tǒng)一。 使用UML的CASE(Computer-Assisted Software Engineering)工具 Rational Rose PowerDesigner CASE工具的功能構(gòu)造模型并進(jìn)行詳細(xì)說(shuō)明,可以檢查模型語(yǔ)法正確與否

5、。正向工程(生成數(shù)據(jù)結(jié)構(gòu)、代碼、文檔)和逆向工程(代碼生成模型)便于團(tuán)隊(duì)對(duì)模型的共享訪問(wèn)、安全管理、交流(共享相同概念) 對(duì)模型文檔的版本進(jìn)行識(shí)別、存儲(chǔ)和管理 UML的主要特點(diǎn): 建模設(shè)計(jì)上的標(biāo)準(zhǔn)化與可視化的結(jié)合 UML視圖(View):描述軟件系統(tǒng)的不同方面所關(guān)心視圖客戶(hù)用例視圖分析者用例視圖、邏輯視圖設(shè)計(jì)者用例視圖、邏輯視圖、構(gòu)件視圖開(kāi)發(fā)者用例視圖、邏輯視圖、構(gòu)件視圖、進(jìn)程視圖、部署視圖測(cè)試者用例視圖、部署視圖系統(tǒng)集成者進(jìn)程視圖、部署視圖邏輯視圖構(gòu)件視圖進(jìn)程視圖部署視圖用例視圖結(jié)構(gòu)視域?qū)崿F(xiàn)視域行為視域環(huán)境視域用戶(hù)視域4+1視圖模型不同開(kāi)發(fā)者對(duì)視圖的關(guān)心角度 UML視圖(View):描述軟件

6、系統(tǒng)的不同方面所關(guān)心視圖 UML圖(Diagram):用于描述模型,是模型元素的一個(gè)集合單元。用例圖:需求捕獲類(lèi) 圖:類(lèi)及類(lèi)之間的相互關(guān)系對(duì)象圖:對(duì)象以及對(duì)象之間的相互關(guān)系構(gòu)件圖:構(gòu)件及其相互依賴(lài)關(guān)系部署圖:構(gòu)件在各節(jié)點(diǎn)上的部署順序圖:強(qiáng)調(diào)對(duì)象時(shí)間順序的交互協(xié)作圖:強(qiáng)調(diào)對(duì)象協(xié)作的交互狀態(tài)圖:類(lèi)所經(jīng)歷的各種狀態(tài)活動(dòng)圖:對(duì)工作流程建模 結(jié) 構(gòu) 行 為敏捷軟件原則:需要時(shí)再添加UML的主要圖類(lèi)型 UML圖(Diagram):用于描述模型,是模型元素的一活動(dòng)圖用例圖協(xié)作圖對(duì)象圖類(lèi)圖狀態(tài)圖序列圖WorkflowScenariosInter-class behaviorInter-class behavi

7、orStructureStructureInteraction equence between objectsUML圖在設(shè)計(jì)過(guò)程中的演化關(guān)系發(fā)現(xiàn)類(lèi)方法:名詞短語(yǔ);公共類(lèi);用例導(dǎo)出;CRC(類(lèi)、職責(zé)、協(xié)作)提煉類(lèi)方法:系統(tǒng)范圍內(nèi);清晰目的;不能孤立;有屬性;類(lèi)功能單一;Association&GeneralizationStructure活動(dòng)圖用例圖協(xié)作圖對(duì)象圖類(lèi)圖狀態(tài)圖序列圖WorkflowScTypeDiagram用例模型圖用例圖靜態(tài)模型圖(狀態(tài)模型)類(lèi)圖、對(duì)象圖、構(gòu)件圖、配置圖、包圖動(dòng)態(tài)模型圖行為模型交互圖順序圖協(xié)作圖(通信圖)活動(dòng)圖狀態(tài)變化模型狀態(tài)圖UML圖的類(lèi)型劃分TypeDiagra

8、m用例模型圖用例圖靜態(tài)模型圖(狀態(tài)模型) UML視圖與圖對(duì)應(yīng)關(guān)系圖視圖主要概念Use case diagramUse case view用例、參與者、關(guān)聯(lián)關(guān)系、擴(kuò)展關(guān)系、包含關(guān)系、泛化關(guān)系Object diagramUse case and logic view對(duì)象、鏈接關(guān)系Sequence diagramUse case and logic view對(duì)象、消息Collaboration diagramUse case and logic view類(lèi)元、鏈接關(guān)系、消息Activity diagramUse case and logicview活動(dòng)、遷移、起始活動(dòng)、終止活動(dòng)、分支與合并、分叉與匯

9、合Class diagramlogic view類(lèi)、關(guān)聯(lián)關(guān)系、聚合關(guān)系、組合關(guān)系、泛化關(guān)系、依賴(lài)關(guān)系、接口、包Package diagramlogic view包、依賴(lài)關(guān)系、泛化關(guān)系State diagramlogic view狀態(tài)、遷移、起始狀態(tài)、終止?fàn)顟B(tài)、判定Component diagramComponent view構(gòu)件、接口、依賴(lài)關(guān)系Deployment diagramDeployment view節(jié)點(diǎn)、構(gòu)件、依賴(lài)關(guān)系、關(guān)聯(lián)關(guān)系 UML視圖與圖對(duì)應(yīng)關(guān)系圖視圖主要概念Use case dBABAUse caseBA用例圖主要模型元素及其含義參與者(角色)用例包含關(guān)系擴(kuò)展關(guān)系關(guān)聯(lián)關(guān)系泛化

10、關(guān)系參與者是針對(duì)用例所扮演的角色,可以人也可以是事物。用例是功能,功能是完整的、外部可見(jiàn)的、相互獨(dú)立的。完整含義:用例的執(zhí)行邏輯必須完整,即有主要執(zhí)行的流程,也有各種次要流程和意外處理流程。外部可見(jiàn)的:不是內(nèi)部功能,是參與者可以感知的。相互獨(dú)立的:用例開(kāi)始執(zhí)行到最終結(jié)束不依賴(lài)于其他用例是參與者和用例之間的通信渠道,如果沒(méi)有箭頭,則代表通信是雙向的。是用例與用例的一種依賴(lài)關(guān)系:它允許被包含用例中的公共行為從包含用例中分解出來(lái)。如B用例包含A用例,則意味著B(niǎo)用例要執(zhí)行,必須先執(zhí)行A用例。是用例與用例的關(guān)系:B用例擴(kuò)展A用例,表示A用例在某種條件滿(mǎn)足下,可以執(zhí)行B用例。因而B(niǎo)用例是A用例的額外功能;

11、另外當(dāng)B用例的執(zhí)行可以由A用例而來(lái),也可以由其他途徑而來(lái)時(shí)(沒(méi)有包含那種強(qiáng)制含義),B用例和A用例也是一種擴(kuò)展關(guān)系。是用例與用例、參與者與參與者之間的一種繼承關(guān)系,表示一個(gè)用例(角色)將繼承另一用例(角色)的所有功能(語(yǔ)義含義)。BABAUse c用例圖是對(duì)需求中系統(tǒng)功能的規(guī)格說(shuō)明(不對(duì)系統(tǒng)約束進(jìn)行說(shuō)明),并被作為驗(yàn)收測(cè)試的依據(jù)。用例圖模型的建立過(guò)程:確定參與者和用例;確定參與者與用例之間的關(guān)系,確定參與者之間的關(guān)系,確定用例之間的關(guān)系;確定需求邊界,在用例圖中用矩形框表示;對(duì)用例功能進(jìn)行描述,形成文檔?!纠堪€(gè)角色,四個(gè)用例。其中B用例和A用例之間的關(guān)系為包含,即B用例執(zhí)行前必須先執(zhí)行

12、A用例;C和A的關(guān)系為擴(kuò)展,即A用例在某種條件滿(mǎn)足下,可以擴(kuò)展出C用例;D用例和A用例的關(guān)系為繼承,表明D將擁有A用例的所有功能。參與者1和參與者2之間的關(guān)系為繼承,表示參與者2除了可以驅(qū)動(dòng)A、B用例外,還可以驅(qū)動(dòng)參與者1的所有用例,即圖中的D用例。用例圖是對(duì)需求中系統(tǒng)功能的規(guī)格說(shuō)明(不對(duì)系統(tǒng)約束進(jìn)行說(shuō)明),用例規(guī)格說(shuō)明格式用例說(shuō)明要素說(shuō)明簡(jiǎn)要描述概述參與者涉及的參與者前置條件用例開(kāi)始所需的條件主事件流對(duì)正常事件的流程進(jìn)行描述備選流定義異常事件后置條件用例結(jié)束后的系統(tǒng)狀態(tài)用例規(guī)格說(shuō)明格式用例說(shuō)明要素說(shuō)明簡(jiǎn)要描述概述參與者涉及的參與表示類(lèi)及其關(guān)聯(lián)關(guān)系的圖+ display()- getNumOp

13、enSlots()+ setStatus()+ numCanisters: int - numWafers: int- size: floatCanister類(lèi)名屬性操作+:可見(jiàn) -:不可見(jiàn)類(lèi)圖長(zhǎng)短式;抽象類(lèi)和具體類(lèi)表示;類(lèi)多重性表示;封裝表示操作屬性:類(lèi)型類(lèi)名*University1 Component主要的模型元素:類(lèi)、關(guān)聯(lián)、泛化、依賴(lài)關(guān)系、接口、包。表示類(lèi)及其關(guān)聯(lián)關(guān)系的圖+ display()+ numCan類(lèi)中屬性和操作的類(lèi)范圍和對(duì)象范圍+ Canister()+ display()- getNumOpenSlots()+ setStatus()+ numCanisters: int

14、- numWafers: int- size: floatCanister靜態(tài)屬性構(gòu)造方法靜態(tài)方法此三者專(zhuān)屬于類(lèi),其他屬性和方法雖然在類(lèi)中定義,實(shí)際為對(duì)象而服務(wù)。類(lèi)中屬性和操作的類(lèi)范圍和對(duì)象范圍+ Canister()+ 對(duì)象圖為類(lèi)圖實(shí)例,是類(lèi)圖的一個(gè)快照對(duì)象圖長(zhǎng)式屬性=值對(duì)象名:類(lèi)名對(duì)象名:類(lèi)名短式類(lèi)圖對(duì)象圖類(lèi)具有3個(gè)分欄:名稱(chēng)、屬性和操作對(duì)象只有兩個(gè)分欄:名稱(chēng)和屬性類(lèi)的名稱(chēng)欄只有類(lèi)名對(duì)象名稱(chēng)欄為:“對(duì)項(xiàng)目:類(lèi)名”或“:類(lèi)名”類(lèi)的屬性分欄定義了所有屬性的特征定義了屬性的當(dāng)前值類(lèi)中列出了操作不包含操作,因?yàn)閷?duì)象所有操作相同類(lèi)圖是對(duì)象圖的抽象,類(lèi)有關(guān)聯(lián),關(guān)聯(lián)是對(duì)象圖中鏈接的抽象,類(lèi)圖中的關(guān)聯(lián)有名

15、稱(chēng)、角色、多重性以及約束等。對(duì)象圖是類(lèi)圖的一個(gè)實(shí)例,對(duì)象有鏈接,鏈接是關(guān)聯(lián)的實(shí)例,鏈接有名稱(chēng)、角色,但沒(méi)有多重性。類(lèi)圖和對(duì)象圖的比較對(duì)象圖為類(lèi)圖實(shí)例,是類(lèi)圖的一個(gè)快照對(duì)象圖長(zhǎng)式屬性=值對(duì)象名:類(lèi)是數(shù)據(jù)類(lèi)型,UML在表示所有語(yǔ)言數(shù)據(jù)類(lèi)型上不夠;用構(gòu)造型(stereotype)進(jìn)行數(shù)據(jù)類(lèi)型(模型元素)的擴(kuò)展。Integer基本int數(shù)據(jù)類(lèi)型MyInterfaceJava語(yǔ)言的接口Colorredgreenblue用戶(hù)自定義枚舉類(lèi)型類(lèi)是數(shù)據(jù)類(lèi)型,UML在表示所有語(yǔ)言數(shù)據(jù)類(lèi)型上不夠;typ泛化:抽象類(lèi)與繼承關(guān)系的UML表示 泛化構(gòu)造型:、 抽象類(lèi)在編程上的可替換(Interchageable)與多態(tài)性

16、CurrentAccountDepositAccountOnlineAccountAccountgetBalance()Account ac;ac = new CurrentAccount();System.out.println(ac.getBalance();ac = new DepositAccount();System.out.println(ac.getBalance();可替換性多態(tài)性泛化:抽象類(lèi)與繼承關(guān)系的UML表示CurrentAccoun關(guān)聯(lián)(一): 關(guān)聯(lián)名、關(guān)聯(lián)方向、關(guān)聯(lián)角色、關(guān)聯(lián)多重性class Person Compony employer; . . . . . cla

17、ss Company Person employee; . . . . . 類(lèi)A類(lèi)B角色a 角色b 關(guān)聯(lián)名 關(guān)聯(lián)多重性 關(guān)聯(lián)多重性 PersonCompanyemployee employer WorksFor 0.* 0.1 關(guān)聯(lián)(一): 關(guān)聯(lián)名、關(guān)聯(lián)方向、關(guān)聯(lián)角色、關(guān)聯(lián)多重性類(lèi)A類(lèi)關(guān)聯(lián)(二)實(shí)現(xiàn):類(lèi)圖為關(guān)聯(lián),對(duì)象圖為鏈接,代碼實(shí)現(xiàn)為引用;類(lèi)圖中的關(guān)聯(lián)關(guān)系將決定對(duì)象圖、序列圖中對(duì)象的交互關(guān)系PersonCompanyemployee employer WorksFor 0.* 1 john:PersonICI:CompanyWorksFor tom:PersonWorksFor 關(guān)聯(lián)(二)實(shí)

18、現(xiàn):類(lèi)圖為關(guān)聯(lián),對(duì)象圖為鏈接,代碼實(shí)現(xiàn)為引用;類(lèi)用代碼表示類(lèi)圖多重性含義 (一) class A B b; . . . . . class B A a; . . . . . A、B兩個(gè)類(lèi)對(duì)象可以引用對(duì)方也可以不引用,總之可自由選擇;用代碼表示類(lèi)圖多重性含義 (一) 用代碼表示類(lèi)圖多重性含義 (二) A類(lèi)對(duì)象必須引用B類(lèi)對(duì)象,B類(lèi)對(duì)象則可以引用也可以不引用A對(duì)象class A B b; A(B _b) if(_b=null)/throw NullLinkError b=_b; class B A a; . . . . . 用代碼表示類(lèi)圖多重性含義 (二) 用代碼表示類(lèi)圖多重性含義 (三) cla

19、ss A B b; A(B _b) if(_b=null)/throw NullLinkError b=_b;b.setA(this); class B A a; void setA(A _a) if(_a=null)/throw NullLinkError a=_a; 先產(chǎn)生B類(lèi)對(duì)象,再產(chǎn)生A類(lèi)對(duì)象,只要A類(lèi)對(duì)象產(chǎn)生時(shí),二者就構(gòu)成了相互引用;如果產(chǎn)生對(duì)象的方式反過(guò)來(lái),如法炮制。用代碼表示類(lèi)圖多重性含義 (三) 關(guān)聯(lián)(三):關(guān)聯(lián)的元數(shù)(一元關(guān)聯(lián)或自關(guān)聯(lián)或遞歸關(guān)聯(lián)、二元關(guān)聯(lián)、三元關(guān)聯(lián))?對(duì)象存在一元鏈接和三元鏈接嗎Servantheader clerk Manage 0.* 1 header:S

20、ervantClerk_n:ServantClerk_1:Servant關(guān)聯(lián)(三):關(guān)聯(lián)的元數(shù)?對(duì)象存在一元鏈接和三元鏈接嗎ServMailMessageAttachment*composition*ComputerProcessor*1aggregation關(guān)聯(lián)(四):聚合(部分是整體的一部分) 組合(整體擁有部分)主要概念聚和傳遞性、非對(duì)稱(chēng)性組合傳遞性、非對(duì)稱(chēng)性、依賴(lài)性、固定性特征一般關(guān)聯(lián)聚合組合標(biāo)記實(shí)線空心菱形實(shí)心菱形擁有無(wú)弱強(qiáng)多重性任意任意整體為1傳遞性無(wú)有傳方向無(wú)整體與部分MailMessageAttachment*composit關(guān)聯(lián)(五):關(guān)聯(lián)約束約束關(guān)鍵詞含義subset一個(gè)關(guān)

21、聯(lián)是另一個(gè)關(guān)聯(lián)的子集ordered表示有序?qū)ο骳hangeable關(guān)聯(lián)可變addonly關(guān)聯(lián)可以動(dòng)態(tài)添加,但不能修改frozen關(guān)聯(lián)不能修改xor兩個(gè)關(guān)聯(lián)之間是互斥關(guān)系委員會(huì)人subset*1成員主席主席是成員中的一員:委員會(huì)有一個(gè)成員的引用集合,有一個(gè)“主席引用”,主席對(duì)象被“主席引用”引用外,在成員引用集合中也存在一個(gè)引用指向主席對(duì)象。多邊形線段*ordered多邊形中存在一個(gè)線段的引用集合,多個(gè)線段對(duì)象的引用是以有序的方式加入集合當(dāng)中。購(gòu)房合同人公司xor購(gòu)房合同的主體只能有一個(gè),要么是人,要么是公司。關(guān)聯(lián)(五):關(guān)聯(lián)約束約束關(guān)鍵詞含義subset一個(gè)關(guān)聯(lián)是人公司雇主0.1*工人*0.1

22、老板人.雇主=人.老板.雇主用標(biāo)記值來(lái)表示約束老板:人工人1:人工人2:人A:公司老板:人工人1:人工人2:人A:公司B:公司約束條件下的對(duì)象鏈接圖沒(méi)有約束條件下的可能存在的對(duì)象鏈接關(guān)系圖人公司雇主0.1*工人*0.1老板人.雇主=人.老板.雇關(guān)聯(lián)(六):關(guān)聯(lián)類(lèi);產(chǎn)生條件(多重性中的多對(duì)多;將對(duì)應(yīng)關(guān)系進(jìn)行存儲(chǔ) ) ModuleStudent* RegistrationMark:Integer1class Registration private int mark; private Student student; Registration(Student st) student = st;ma

23、rk = 0; class Module private Vector registrations=new Vector(); public void enroll(Student st) registrations.addElement(new Registration(st); 關(guān)聯(lián)(六):關(guān)聯(lián)類(lèi);產(chǎn)生條件(多重性中的多對(duì)多;將對(duì)應(yīng)關(guān)系進(jìn)CustomerAccountCurrentAccountDepositAccountOnlineAccountHolds0.11關(guān)聯(lián)(七):關(guān)聯(lián)與類(lèi)的泛化CustomerCurrentAccountDepositAccountOnlineAccountC

24、ustomerAccountCurrentAccountD Directory Filename0.1class Directory private Hashtable theFiles; . . . . . 關(guān)聯(lián)(八):受限(qualified)關(guān)聯(lián)的表示及實(shí)現(xiàn);name是theFiles中的Key DirectoryFile* Directory Filename0.1關(guān)聯(lián)(八):受interfaceMyClassMyInterfaceinterface MyInterface . . . . class MyClass implements MyInterface . . . . . M

25、yClassMyInterface接口表示及實(shí)現(xiàn)interfaceMyClassimplementaticlass MyDependentClass . . . . . void myFunction1( MyReferencedClass r ) . . MyReferencedClass myFunction2( ) . . void myFunction3( ) MyReferencedClass m dependence(reference to a class)parameteror return typeor local variable typeMyDependentClassM

26、yReferencedClass依賴(lài)的表示和實(shí)現(xiàn)class MyDependentClassdependen依賴(lài)的表示和實(shí)現(xiàn)MyClassMyInterfaceUseClass class UseClass void myFunction(MyInterface mi) Studentjack:Student依賴(lài)的表示和實(shí)現(xiàn)MyClassMyInterfaceUseC包及包圖包是UML的模型元素之一,是一種分組機(jī)制,把一些模型元素組織成語(yǔ)義上相關(guān)的組。包可以包含類(lèi)、接口、組件、結(jié)點(diǎn)和其他包,包之間有引入、依賴(lài)、繼承的關(guān)系。包圖用來(lái)描述系統(tǒng)模型的體系結(jié)構(gòu)層次, 一個(gè)包就是一個(gè)子系統(tǒng),包圖是設(shè)計(jì)中

27、的概念,在建模時(shí)起到歸類(lèi)的作用,對(duì)于實(shí)際系統(tǒng)沒(méi)有意義,不需要轉(zhuǎn)化成可執(zhí)行的系統(tǒng)。包圖中涉及到的注解到包名邊的構(gòu)造型主要有: 系統(tǒng)模型 子系統(tǒng)模型是其他包的一個(gè)訪問(wèn)接口視圖包另一個(gè)包的代理由模式組成的包Package包名,可含有包路徑包層次ABDC A包在類(lèi)定義層次使用了B包繼承了D包,在對(duì)象層次調(diào)用了C包中的對(duì)象。包及包圖包是UML的模型元素之一,是一種分組機(jī)制,把一些模型順序圖(序列)圖順序圖又稱(chēng)為序列圖,描述對(duì)象之間動(dòng)態(tài)的消息交互關(guān)系,體現(xiàn)對(duì)象間消息傳遞的時(shí)間順序。圖頂層的水平軸為交互的對(duì)象,對(duì)象下的虛線代表對(duì)象生命線,虛線上的矩形框表示對(duì)象接受消息后被激活期,代表方法的執(zhí)行,對(duì)象間消息交

28、互從圖的最頂端開(kāi)始,自上向下體現(xiàn)的是消息交互的時(shí)間順序。myObject:MyClassmyObject1:MyClass11.1Operation1()Client1Operation()Client端是消息的發(fā)送端,擁有myObject的引用Operation()是MyClass的方法,該方法中有myClass1對(duì)象的引用Operation1()是MyClass1的方法a是MyClass的聲明 a.Operation()b是MyClass1聲明 b.Operation1()順序圖(序列)圖順序圖又稱(chēng)為序列圖,描述對(duì)象之間動(dòng)態(tài)的消息交交互圖中的消息1)消息格式:序號(hào)條件重復(fù)次數(shù)回送值:=操作

29、名(參數(shù)表)2)消息四種類(lèi)型:簡(jiǎn)單消息、同步消息、異步消息和返回消息簡(jiǎn)單消息同步消息異步消息返回消息消息的類(lèi)型內(nèi)部消息的表示方法:A:B消息中的構(gòu)造型3)內(nèi)部消息和循環(huán)消息表示方法4)消息中的構(gòu)造型:創(chuàng)建消亡用同步消息,、交互圖中的消息1)消息格式:序號(hào)條件重復(fù)次數(shù)回建立順序圖步驟1.確定交互的類(lèi)對(duì)象2.在序列圖左上角畫(huà)一個(gè)矩形框代表該對(duì)象,使用 UML標(biāo)記方法: object:Class3. 畫(huà)一個(gè)延長(zhǎng)矩形框在該對(duì)象下面表示一個(gè)操作的執(zhí)行。4. 畫(huà)一個(gè)箭頭指向右邊。myObject:MyClassmyObject1:MyClass1operation1()5.確定那個(gè)對(duì)象處理該消息。6. 用

30、操作的名稱(chēng)給該箭頭命名。7. 系統(tǒng)使用一個(gè)拉長(zhǎng)的矩形框表示一個(gè)過(guò)程的開(kāi)始。8.如果是同步消息(方法調(diào)用),則接受消息對(duì)象被激活的矩形框不要超過(guò)發(fā)消息對(duì)象的矩形框。myObject:MyClass建立順序圖步驟1.確定交互的類(lèi)對(duì)象myObjectmyObj合作圖(協(xié)作)圖用于描述相互合作的對(duì)象間的交互關(guān)系,模型元素由類(lèi)元或?qū)ο?、鏈接、消息?gòu)成。類(lèi)元角色:描述對(duì)象在交互中扮演的角色winner:Account鏈接:用實(shí)線表示兩個(gè)類(lèi)元(對(duì)象)之間的鏈接,用構(gòu)造型表明鏈接的種類(lèi)類(lèi)型含義全局性(global)表明該鏈接是由類(lèi)中關(guān)聯(lián)的實(shí)例化局部性(local)表明該鏈接是操作中的一個(gè)局部變量。參數(shù)性(pa

31、rameter)表明該鏈接是操作中的傳入變量自我性(self)表明該鏈接是自身發(fā)送的消息合作圖(協(xié)作)圖用于描述相互合作的對(duì)象間的交互關(guān)系,模型元素消息:格式同順序圖:Component*Client:Assembly1:cost()1.1*:cost():ComponentClient:Assembly1:cost()1.1*:cost()合作圖中的循環(huán)消息表示法對(duì)象的創(chuàng)建與撤銷(xiāo)new:合作中新產(chǎn)生的對(duì)象或鏈接destroy:合作中銷(xiāo)毀的對(duì)象或鏈接transient:合作中產(chǎn)生又銷(xiāo)毀的對(duì)象或鏈接Client:Orderline:OrderLinedestroy1:remove(line)1.

32、1:destroy消息構(gòu)造型鏈接撤銷(xiāo)對(duì)象撤銷(xiāo)消息:格式同順序圖:Component*Client:Ass順序圖和合作圖的相互轉(zhuǎn)化順序圖和合作圖的相互轉(zhuǎn)化活動(dòng)圖活動(dòng)圖用于描述系統(tǒng)需求各用例內(nèi)活動(dòng)的執(zhí)行順序或類(lèi)方法中主要活動(dòng)的執(zhí)行流程?;顒?dòng):活動(dòng)由子活動(dòng)或動(dòng)作構(gòu)成,動(dòng)作是不可再分的活動(dòng),其執(zhí)行不能被打斷,動(dòng)作不能象活動(dòng)那樣擁有入口動(dòng)作、出口動(dòng)作和內(nèi)部遷移,活動(dòng)和動(dòng)作都擁有相同的UML表示符號(hào)。模型元素活動(dòng)遷移分支與合并開(kāi)始活動(dòng)結(jié)束活動(dòng)分叉匯合遷移:由帶箭頭的實(shí)線表示,表示動(dòng)作狀態(tài)的轉(zhuǎn)移,當(dāng)遷移上無(wú)條件時(shí),稱(chēng)為無(wú)條件動(dòng)作流,當(dāng)有條件時(shí),條件滿(mǎn)足遷移發(fā)生。分支與合并:一個(gè)入遷移,多個(gè)具有互斥條件的出遷

33、移,遷移沿判定條件為真的分支遷移;合并:將多個(gè)具有互斥條件的入遷移合并成一個(gè)出遷移,即當(dāng)有一個(gè)入遷移發(fā)生時(shí),就會(huì)引起出遷移。遷移也可以分叉和匯合,分叉形成并發(fā)遷移,匯合則對(duì)遷移進(jìn)行同步。開(kāi)始活動(dòng)與結(jié)束活動(dòng):開(kāi)始活動(dòng)是活動(dòng)圖的開(kāi)始,只能有一個(gè),結(jié)束活動(dòng)是活動(dòng)圖的結(jié)束,一個(gè)活動(dòng)圖可以存在多個(gè)結(jié)束活動(dòng)?;顒?dòng)圖活動(dòng)圖用于描述系統(tǒng)需求各用例內(nèi)活動(dòng)的執(zhí)行順序或類(lèi)方法中狀態(tài)圖描述系統(tǒng)或類(lèi)可能有的不同狀態(tài)及其引起狀態(tài)遷移的事件,對(duì)象的狀態(tài)決定了對(duì)象的行為。模型元素遷移開(kāi)始狀態(tài)結(jié)束狀態(tài)狀態(tài)狀態(tài):由狀態(tài)名和活動(dòng)組成。在狀態(tài)圖中,狀態(tài)名唯一;活動(dòng)是在該狀態(tài)下執(zhí)行的事件和動(dòng)作,是可選項(xiàng)。每個(gè)狀態(tài)有有入口、執(zhí)行和出口三

34、個(gè)標(biāo)準(zhǔn)事件,每個(gè)事件對(duì)應(yīng)一個(gè)動(dòng)作。如果在狀態(tài)的活動(dòng)區(qū)還畫(huà)有一個(gè)或多個(gè)狀態(tài)圖,則稱(chēng)為嵌套狀態(tài)。遷移:由帶箭頭的實(shí)線表示,表示狀態(tài)的轉(zhuǎn)移,遷移的完整描述為“事件(參數(shù))條件/動(dòng)作” ,遷移可以接判斷,判斷一入多出,且出遷條件互斥。條件判斷開(kāi)始狀態(tài)與結(jié)束狀態(tài):開(kāi)始狀態(tài)是狀態(tài)圖的開(kāi)始,對(duì)于同一層次狀態(tài)圖而言只能有一個(gè)(嵌套的狀態(tài)圖可以有自己的開(kāi)始狀態(tài)和結(jié)束狀態(tài)),結(jié)束狀態(tài)是狀態(tài)圖的結(jié)束,一個(gè)狀態(tài)圖可以有多個(gè)結(jié)束狀態(tài)。狀態(tài)圖描述系統(tǒng)或類(lèi)可能有的不同狀態(tài)及其引起狀態(tài)遷移的事件,模狀態(tài)圖與活動(dòng)圖的相同點(diǎn)和不同點(diǎn)相同點(diǎn): 1)圖中的建模元素有相似之處。 2)對(duì)系統(tǒng)或?qū)ο笤谏嬷芷诘臓顟B(tài)和行為進(jìn)行描述。 不同點(diǎn)

35、: 1)狀態(tài)圖中遷移發(fā)生時(shí),必須有事件發(fā)生或條件滿(mǎn)足,而活動(dòng)圖的遷移可以無(wú)條件或沒(méi)有事件發(fā)生。 2)狀態(tài)圖對(duì)于系統(tǒng)狀態(tài)的描述可以橫跨多個(gè)用例,而活動(dòng)圖則是針對(duì)同一用例內(nèi)部的動(dòng)作執(zhí)行給出描述。 狀態(tài)圖與活動(dòng)圖的相同點(diǎn)和不同點(diǎn)相同點(diǎn):不同點(diǎn):構(gòu)件圖構(gòu)件圖描述構(gòu)件及其相互依賴(lài)關(guān)系,用于將系統(tǒng)邏輯設(shè)計(jì)與物理模塊進(jìn)行對(duì)應(yīng)。模型元素構(gòu)件接口依賴(lài)構(gòu)件:相對(duì)邏輯設(shè)計(jì)上的類(lèi)和對(duì)象,構(gòu)件是和物理系統(tǒng)相關(guān)的一個(gè)概念,不同的語(yǔ)言對(duì)構(gòu)件的定義有所不同,UML中的構(gòu)件含義包括代碼文件,也指數(shù)據(jù)庫(kù)、動(dòng)態(tài)鏈接庫(kù)、web頁(yè)面等。依賴(lài):構(gòu)件中的關(guān)系以依賴(lài)的形式表達(dá),可分為編譯依賴(lài)和調(diào)用依賴(lài)兩類(lèi)。接口:構(gòu)件和接口存在實(shí)現(xiàn)和調(diào)用兩種

36、關(guān)系。ComponentA.javaB.java 構(gòu)件構(gòu)造型:、 、構(gòu)件依賴(lài)中使用的含義構(gòu)件圖構(gòu)件圖描述構(gòu)件及其相互依賴(lài)關(guān)系,用于將系統(tǒng)邏輯設(shè)計(jì)與物部署圖部署圖描述了構(gòu)件在物理硬件上的分布情況。模型元素構(gòu)件Component結(jié)點(diǎn)關(guān)聯(lián)結(jié)點(diǎn):表示某種計(jì)算資源的物理對(duì)象,包括計(jì)算機(jī)、外部設(shè)備(打印機(jī)、讀卡器、通信設(shè)備等),結(jié)點(diǎn)內(nèi)部放置構(gòu)件,表示構(gòu)件部署在該結(jié)點(diǎn)上,同一個(gè)結(jié)點(diǎn)內(nèi)部的構(gòu)件關(guān)系用依賴(lài)表達(dá)。關(guān)聯(lián):結(jié)點(diǎn)之間的關(guān)聯(lián)表示結(jié)點(diǎn)之間物理連接以及其上用的通信協(xié)議。依賴(lài) 部署圖中的構(gòu)造型:用來(lái)表達(dá)結(jié)點(diǎn)通訊使用的協(xié)議等。部署圖部署圖描述了構(gòu)件在物理硬件上的分布情況。模型元素構(gòu)件C經(jīng)典案例經(jīng)典案例案例1 工廠

37、倉(cāng)庫(kù)管理信息管理需求1)對(duì)倉(cāng)庫(kù)每種零件進(jìn)行編號(hào)(數(shù)字)2)對(duì)倉(cāng)庫(kù)每種零件類(lèi)型進(jìn)行命名(字符)3)記錄每種零件的價(jià)格(浮點(diǎn))4)零件可以構(gòu)成組件,組件和零件可進(jìn)一步構(gòu)成層 次更高的組件5)需要查詢(xún)?nèi)我唤M件的價(jià)格。案例1 工廠倉(cāng)庫(kù)管理信息管理需求1)對(duì)倉(cāng)庫(kù)每種零件進(jìn)行編public class Part private String name; private long number; private Double cost; public Part(String _name,long _numbr,double _cost) name =_name; number=_number; cost=_

38、cost; public String getName() return name; public long getNumber() return number; public double getCost() return cost; 問(wèn)題潛在需求:倉(cāng)庫(kù)零件非常多,這樣設(shè)計(jì)的問(wèn)題有:1、對(duì)象屬性冗余,造成內(nèi)存浪費(fèi)以及維護(hù)上的困難。2、倉(cāng)庫(kù)中沒(méi)有零件無(wú)法記錄零件類(lèi)型。針對(duì)需求NO1-3的設(shè)計(jì)問(wèn)題潛在需求:倉(cāng)庫(kù)零件非常多,這樣設(shè)計(jì)的問(wèn)題有:針對(duì)需求NOpublic class Part private CatalogueEntry entry; public Part(CatalogueEntr

39、y e) entry = e; ScrewsBolts上述問(wèn)題的解決方案public class Part private CatalogueEntry entry; public Part(CatalogueEntry e) entry = e; public double cost() return entry.getcost(); Part成本查詢(xún)的相應(yīng)調(diào)整public class Part ScrewsBolts針對(duì)需求NO4的設(shè)計(jì):組合表示場(chǎng)景描述:p3和p2組成a2,a2和p1組成a1潛在需求:一個(gè)assembly可以對(duì)應(yīng)多個(gè)part或assembly。設(shè)計(jì)要求:引用上存在多樣性現(xiàn)

40、象。Vector鏈表中的每個(gè)單元可引用任何對(duì)象,因而Assembly或Part的引用都可以放入。但組合物中加入構(gòu)件時(shí)有兩種方案,很明顯方案2較好。public class Assembly private Vector components=new Vector(); public void addAssemble(Assembly c) components.add(c); public void addPart(Part c) components.add(c); public void add(Object c) components.add(c); 方案1方案2多樣性針對(duì)需求NO4的設(shè)

41、計(jì):組合表示場(chǎng)景描述:p3和p2組成a2,上圖中的組合關(guān)系又可以表示如下:為解決“黑洞”問(wèn)題,同時(shí)也為了Vector中組成對(duì)象能用一致的接口進(jìn)行調(diào)用,Assembly以及Part必須具有后天的“血緣”關(guān)系(而不是天然的Object的“血緣”關(guān)系)。因而Object的角色最好由自定義的抽象類(lèi)Component充當(dāng),它有一個(gè)抽象接口方法cost()。類(lèi)圖語(yǔ)義:凡是Object的子類(lèi)都可加入Assembly當(dāng)中。但這樣設(shè)計(jì)后,加入Assembly當(dāng)中的對(duì)象都失去原來(lái)的特征,只剩Object的特征,且因?yàn)榧辖Y(jié)構(gòu)Vector中對(duì)象引用多樣性,無(wú)法進(jìn)行準(zhǔn)確還原, 好似“黑洞”。針對(duì)需求NO5的設(shè)計(jì):組合

42、物成本查詢(xún)上圖中的組合關(guān)系又可以表示如下:為解決“黑洞”問(wèn)題,同時(shí)也為最終的類(lèi)圖和對(duì)應(yīng)的代碼public abstract class Component public abstract Double cost();public class Part extends Component private CatalogueEntry entry; public Part(CatalogueEntry e) entry = e; public double cost() return entry.getcost(); public class Assembly extends Component

43、private Vector components=new Vector(); public void add(Component c) components.add(c); public Double cost() double total = 0.0; Enumeration enum = components.elements(); while(enum.hasMoreElements() total += (Component)enum.nextElement().cost(); return total; 遍歷動(dòng)態(tài)綁定,發(fā)統(tǒng)一消息抽象類(lèi)的定義保證了cost()接口在子類(lèi)定義和對(duì)象調(diào)用中的一致性強(qiáng)制類(lèi)型轉(zhuǎn)化用統(tǒng)一的Component的視角看待所有子類(lèi)對(duì)象最終的類(lèi)圖和對(duì)應(yīng)的代碼public abstract cla案例1 總結(jié)1)當(dāng)對(duì)象數(shù)量

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論