版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章類圖和對(duì)象圖1了解類之間關(guān)系設(shè)計(jì)類圖對(duì)象圖課程目標(biāo)25.1類的定義面向?qū)ο蠓治雠c設(shè)計(jì)&UML3類名屬性操作5.1.1類的屬性面向?qū)ο蠓治雠c設(shè)計(jì)&UML4[可見性]屬性名[:類型][‘[‘多重性[次序]’]’][=初值][{特性}]+public#protected-privateRoseUML可見性+size:Area=(100,100)#visibility:Boolean=falsecolors:Color[3]points:Point[2..*ordered]name:String[0..1]5.1.2類的操作面向?qū)ο蠓治雠c設(shè)計(jì)&UML5[可見性]操作名[(參數(shù)列表)][:返回值類型][{特性}]+public#protected-privateRoseUML可見性+display():Location+hide()#create()-attachXWindow(xwing:XwindowPtr)5.2類之間的關(guān)系面向?qū)ο蠓治雠c設(shè)計(jì)&UML6常見的類之間的關(guān)系包括:關(guān)聯(lián)、聚集、組合、泛化、依賴等.5.2.1關(guān)聯(lián)面向?qū)ο蠓治雠c設(shè)計(jì)&UML7關(guān)聯(lián)(association)是模型元素間的一種語義聯(lián)系,它是對(duì)具有共同的結(jié)構(gòu)特性、行為特性、關(guān)系和語義的鏈(Link)的描述.//類A的源碼publicclassA{publicBtheB;publicA(){}}//類B的源碼publicclassB{publicB(){}}//類A的源碼publicclassA{publicBtheB;publicA(){}}//類B的源碼publicclassB{publicAtheA;publicB(){}}5.2.1關(guān)聯(lián)面向?qū)ο蠓治雠c設(shè)計(jì)&UML81.關(guān)聯(lián)名用來描述關(guān)聯(lián)的作用.面向?qū)ο蠓治雠c設(shè)計(jì)&UML92.關(guān)聯(lián)的角色關(guān)聯(lián)的兩端可以以某種角色參與關(guān)聯(lián),如果不標(biāo)注角色那么隱含用類名作為角色名.角色的多重性,表示可以有多少個(gè)對(duì)象參與該關(guān)聯(lián).面向?qū)ο蠓治雠c設(shè)計(jì)&UML103.關(guān)聯(lián)類//Company.javapublicclassCompany{privateStringcompanyName;publicPersonemployee[];}//Person.javapublicclassPerson{privateintpersonName;publicCompanyemployer;}//Contract.javapublicclassContract{privateDoublesalary;}面向?qū)ο蠓治雠c設(shè)計(jì)&UML114.關(guān)聯(lián)的約束面向?qū)ο蠓治雠c設(shè)計(jì)&UML125.限定關(guān)聯(lián)限定符,關(guān)聯(lián)的屬性面向?qū)ο蠓治雠c設(shè)計(jì)&UML136.關(guān)聯(lián)的種類(1)自反關(guān)聯(lián)publicclassEnginePart{publicEngineParttheEnginePart[];}(2)二元關(guān)聯(lián)(3)N元關(guān)聯(lián)5.2.2聚集與組合面向?qū)ο蠓治雠c設(shè)計(jì)&UML14聚集(aggregation)是一種特殊的關(guān)聯(lián),表示類之間的整體與局部關(guān)系.publicclassCircle{publicintradius;Stylestyle;}publicclassStyle{Colorcolor;booleanisFilled;}5.2.2聚集與組合面向?qū)ο蠓治雠c設(shè)計(jì)&UML15組合(composition)是一種特殊的聚集,強(qiáng)調(diào)整體和局部具有相同的生命期.publicclassCircle{publicintradius;Pointcenter;}publicclassStyle{intx,y;}5.2.3泛化關(guān)系面向?qū)ο蠓治雠c設(shè)計(jì)&UML16泛化關(guān)系指一般元素和特殊元素之間的分類關(guān)系.在OOPL中稱為繼承.5.2.3泛化關(guān)系面向?qū)ο蠓治雠c設(shè)計(jì)&UML17操作類的包繼承抽象類packageMyPackage;abstractclassMyAbstractClass....packageMyPackage;classMyDerivedClassextendsMyAbstractClass{intatt;.....
voidmyFunction(ReferencedClassr){...}}MyDerivedClassatt:intmyFunction()MyPackageMyAbstractClass屬性5.2.4依賴關(guān)系18依賴關(guān)系也稱使用關(guān)系.調(diào)用,一個(gè)類調(diào)用另一個(gè)類的方法參數(shù),一個(gè)類的方法使用另一個(gè)類作為形式參數(shù)發(fā)送,消息的發(fā)送者與接收者之間的關(guān)系實(shí)例化,一個(gè)類的方法創(chuàng)立了另一個(gè)的實(shí)例5.2.4依賴關(guān)系19classMyDependentClass{.....
voidmyFunction1(MyReferencedClassr){...}MyReferencedClassmyFunction2(…){...}
voidmyFunction3(…){ MyReferencedClassm…}}MyDependentClassatt:intmyFunction()MyReferencedClass依賴(引用一個(gè)類)參數(shù)or返回類型or局部變量5.3派生屬性和派生關(guān)聯(lián)20派生屬性(關(guān)聯(lián))指可以由其他屬性()關(guān)聯(lián)計(jì)算得到的屬性,名字前加”/”.5.4抽象類和接口面向?qū)ο蠓治雠c設(shè)計(jì)&UML21抽象類接口5.4抽象類和接口22interfaceMyAbstractClass....
classMyClassimplementsMyInterface{.....}UML符號(hào)----接口的實(shí)現(xiàn)描述5.5版型面向?qū)ο蠓治雠c設(shè)計(jì)&UML23版型(stereotype)是UML的3種擴(kuò)展機(jī)制之一.版型是建模人員在已有的構(gòu)造塊上派生出新的構(gòu)造塊,這些新的構(gòu)造塊與特定問題相關(guān).版型可以應(yīng)用于所有類型的模型元素.系統(tǒng)預(yù)定義的版型用戶自義的版型5.6邊界類、控制類和實(shí)體類面向?qū)ο蠓治雠c設(shè)計(jì)&UML24UML中三種主要的類版型邊界類,boundaryclass控制類,controlclass實(shí)體類,entityclass引入多種類版型幫助分析和設(shè)計(jì)人員確定系統(tǒng)中的類.5.6.1邊界類面向?qū)ο蠓治雠c設(shè)計(jì)&UML25邊界類位于系統(tǒng)與外界的交界處,包括:用戶界面類,如:窗口、對(duì)話框、報(bào)表類等通訊協(xié)議類,如:TCP/IP的類直接與外部設(shè)備交互的類直接與外部系統(tǒng)交互的類邊界類的UML表示方法:5.6.1邊界類面向?qū)ο蠓治雠c設(shè)計(jì)&UML26通過用例圖可以確定需要的邊界類,每個(gè)Actor/Usercase對(duì)至少需要一個(gè)邊界類.但并不是每個(gè)Actor/Usecase都需要生成惟一邊界類,多個(gè)actor啟動(dòng)同一usecase可以使用同一邊界類.5.6.2實(shí)體類面向?qū)ο蠓治雠c設(shè)計(jì)&UML27實(shí)體類保存要放進(jìn)持久存儲(chǔ)體(數(shù)據(jù)庫/文件等)的信息.實(shí)體類通過事件流和交互圖發(fā)現(xiàn),采用目標(biāo)領(lǐng)域術(shù)語命名.通常實(shí)體類對(duì)應(yīng)數(shù)據(jù)庫中的表,其屬性對(duì)應(yīng)表的字段,但實(shí)體類與數(shù)據(jù)庫中的表不一定是一一對(duì)應(yīng)關(guān)系.5.6.3控制類面向?qū)ο蠓治雠c設(shè)計(jì)&UML28控制類是負(fù)責(zé)管理或控制其他類工作的類.每個(gè)用例通常有一個(gè)控制類,控制用例中的事件順序,控制類也可以在多個(gè)用例間共用.控制較少接收消息,發(fā)出較多消息.5.7類圖面向?qū)ο蠓治雠c設(shè)計(jì)&UML29類加上它們之間的關(guān)系就構(gòu)成類圖,其中包含接口、包、關(guān)系等元素,同時(shí)也可以包含對(duì)象、鏈等實(shí)例.類圖描述類和類之間的靜態(tài)關(guān)系.5.7.1類圖的抽象層次30概念層類圖,描述應(yīng)用領(lǐng)域的概念.說明層類圖,描述軟件的接口局部,不是實(shí)現(xiàn)局部.實(shí)現(xiàn)層類圖考慮實(shí)現(xiàn)問題,提供類的細(xì)節(jié).5.7.2構(gòu)造類圖31根據(jù)用例描述中的名詞確定候選類.使用CRC分析法尋找類,CRC指:類(class)、職責(zé)(responsibility)、協(xié)作(collaboration).根據(jù)邊界類、控制類和實(shí)體類的劃分來幫助發(fā)現(xiàn)類.參考設(shè)計(jì)模式來確定類.根據(jù)軟件開發(fā)過程的指導(dǎo)尋找類,如:UP,XP等.尋找類的方法構(gòu)造類圖時(shí)注意不要試圖使用所有的符號(hào).不要過早陷入細(xì)節(jié),根據(jù)階段、層次逐步細(xì)化.構(gòu)造完成要將模型與目標(biāo)問題對(duì)照驗(yàn)證其是否合理.5.7.2構(gòu)造類圖面向?qū)ο蠓治雠c設(shè)計(jì)&UML32研究分析問題領(lǐng)域,確定系統(tǒng)需求.確定類,明確類的含義和職責(zé),確定屬性和操作.確定類之間的關(guān)系.調(diào)整和細(xì)化類及類之間的關(guān)系.繪制類圖并增加相應(yīng)的說明.建立類圖的步驟小王是一個(gè)愛書之人,家里各類書籍已過千冊(cè),而平時(shí)又時(shí)常有朋友外借,因此需要一個(gè)個(gè)人圖書管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)母拘畔从?jì)算機(jī)類、非計(jì)算機(jī)類分別建檔,實(shí)現(xiàn)按書名、作者、類別、出版社等關(guān)鍵字的組合查詢功能。在使用該系統(tǒng)錄入新書籍時(shí)系統(tǒng)會(huì)自動(dòng)按規(guī)那么生成書號(hào),可以修改信息,但一經(jīng)創(chuàng)立就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)耐饨枨闆r進(jìn)行記錄,可對(duì)外借情況列表打印。另外,還希望能夠?qū)馁徶媒痤~、冊(cè)數(shù)按特定時(shí)間周期進(jìn)行統(tǒng)計(jì)需求描述小王是一個(gè)愛書之人,家里各類書籍已過千冊(cè),而平時(shí)又時(shí)常有朋友外借,因此需要一個(gè)個(gè)人圖書管理系統(tǒng)。該系統(tǒng)應(yīng)該能夠?qū)母拘畔从?jì)算機(jī)類、非計(jì)算機(jī)類分別建檔,實(shí)現(xiàn)按書名、作者、類別、出版社等關(guān)鍵字的組合查詢功能。在使用該系統(tǒng)錄入新書籍時(shí)系統(tǒng)會(huì)自動(dòng)按規(guī)那么生成書號(hào),可以修改信息,但一經(jīng)創(chuàng)立就不允許刪除。該系統(tǒng)還應(yīng)該能夠?qū)耐饨枨闆r進(jìn)行記錄,可對(duì)外借情況列表打印。另外,還希望能夠?qū)馁徶媒痤~、冊(cè)數(shù)按特定時(shí)間周期進(jìn)行統(tǒng)計(jì)發(fā)現(xiàn)類“小王”、“人”、“家里”很明顯是系統(tǒng)外的概念,無須對(duì)其建模;而“個(gè)人圖書管理系統(tǒng)”、“系統(tǒng)”指的就是將要開發(fā)的系統(tǒng),即系統(tǒng)本身,也無須對(duì)其進(jìn)行建模;很明顯“書籍”是一個(gè)很重要的類,而“書名”、“作者”、“類別”、“出版社”、“書號(hào)”那么都是用來描述書籍的根本信息的,因此應(yīng)該作為“書籍”類的屬性處理,而“規(guī)那么”是指書號(hào)的生成規(guī)那么,而書號(hào)那么是書籍的一個(gè)屬性,因此“規(guī)那么”可以作為編寫“書籍”類構(gòu)造函數(shù)的指南?!案拘畔ⅰ蹦敲词菚?、作者、類別等描述書籍的根本信息統(tǒng)稱,“關(guān)鍵字”那么是代表其中之一,因此無需對(duì)其建模;“功能”、“新書籍”、“信息”、“記錄”都是在描述需求時(shí)使用到的一些相關(guān)詞語,并不是問題域的本質(zhì),因此先可以將其淘汰掉;篩選備選類“計(jì)算機(jī)類”、“非計(jì)算機(jī)類”是該系統(tǒng)中圖書的兩大分類,因此應(yīng)該對(duì)其建模,并改名為“計(jì)算機(jī)類書籍”和“非計(jì)算機(jī)類書籍”,以減少歧義;“外借情況”那么是用來表示一次借閱行為,應(yīng)該成為一個(gè)候選類,多個(gè)外借情況將組成“外借情況列表”,而外借情況中一個(gè)很重要的角色是“朋友”—借閱主體。雖然到本系統(tǒng)中并不需要建立“朋友”的資料庫,但考慮到可能會(huì)需要列出某個(gè)朋友的借閱情況,因此還是將其列為候選類。為了能夠更好地表述,將“外借情況”改名為“借閱記錄”,而將“外借情況列表”改名為“借閱記錄列表”;“購置金額”、“冊(cè)數(shù)”都是統(tǒng)計(jì)的結(jié)果,都是一個(gè)數(shù)字,因此不用將其建模,而“特定時(shí)限”那么是統(tǒng)計(jì)的范圍,也無需將其建模;不過從這里的分析中,我們可以發(fā)現(xiàn),在該需求描述中隱藏著一個(gè)關(guān)鍵類—書籍列表,也就是執(zhí)行統(tǒng)計(jì)的主體。篩選修選類在使用“名詞動(dòng)詞法”尋找類的時(shí)候,很多團(tuán)隊(duì)會(huì)在此消耗大量的時(shí)間,特別是對(duì)于中大型工程,這樣很容易迷失方向。其實(shí)在此主要的目的是對(duì)問題領(lǐng)域建立概要的了解,無需太過咬文嚼字得到候選類書籍計(jì)算機(jī)類書籍非計(jì)算機(jī)類書籍借閱記錄借閱記錄列表書籍列表關(guān)聯(lián)分析,多重性分析,建模書籍類:從需求描述中,可找到書名、類別、作者、出版社;同時(shí)從統(tǒng)計(jì)的需要中,可得知“定價(jià)”也是一個(gè)關(guān)鍵的成員變量。書籍列表類:書籍列表就是全部
的藏書列表,其主要的成員方法
是新增、修改、查詢〔按關(guān)鍵字
查詢〕、統(tǒng)計(jì)〔按特定時(shí)限統(tǒng)計(jì)
冊(cè)數(shù)與金額〕。借閱記錄類:借閱人〔朋友〕、
借閱時(shí)間。借閱記錄列表類:主要職責(zé)就是
添加記錄〔借出〕、刪除記錄
〔歸還〕以及打印借閱記錄職責(zé)分析導(dǎo)航性分析:Book與BookList之間、BorrowRecord和BorrowList之間是組合關(guān)系均無需添加方向描述,而Book與BorrowRecord之間那么是雙方關(guān)聯(lián),也無需添加約束:Book對(duì)象創(chuàng)立后就不能夠
被刪除只能被修改,因此在Book
類邊上加上用自由文本寫的約束;
一本書要么屬于計(jì)算機(jī)類,要么
屬于非計(jì)算機(jī)類,因此在ItBook
和OtherBook間加了“{Xor}”約束限定符:一本書只有一冊(cè),因此只
能夠被借一次,因此對(duì)于一本Book
而言只能有一個(gè)RecordId與其對(duì)應(yīng)限定與修改5.8領(lǐng)域分析面向?qū)ο蠓治雠c設(shè)計(jì)&UML41建立類圖的過程就是對(duì)領(lǐng)域及其解決方案的分析與設(shè)計(jì)過程.領(lǐng)域分析包括:通過對(duì)某一領(lǐng)域中的已有應(yīng)用系統(tǒng)、理論、技術(shù)、開發(fā)歷史等的研究,來標(biāo)識(shí)、收集、組織、分析和表示領(lǐng)域模型及軟件體系結(jié)構(gòu)的過程;根據(jù)這一過程得到的結(jié)果.425.9OO設(shè)計(jì)的原那么面向?qū)ο蠓治雠c設(shè)計(jì)&UML43開閉原那么(Open/ClosedPrinciple,OCP)Liskov替換原那么(LiskovSubstitutionPrinciple,LSP)依賴倒置原那么(DependencyInversionPrinciple,DSP)接口別離原那么(InterfaceSegregationPrinciple,ISP)5.9.1開閉原那么面向?qū)ο蠓治雠c設(shè)計(jì)&UML44開閉原那么指的是一個(gè)模塊在擴(kuò)展性方面應(yīng)該是開放的,而在更改性方面應(yīng)該是封閉的.其目的是在寫模塊時(shí),應(yīng)該盡量使得模塊可以擴(kuò)展,并且在擴(kuò)展時(shí)不需要對(duì)模塊的源代碼進(jìn)行修改.為到達(dá)開閉原那么,設(shè)計(jì)時(shí)就盡量使用接口進(jìn)行封閉,采用抽象機(jī)制,并利用OO中的多態(tài)性技術(shù).5.9.1開閉原那么45例:某輸出類Output中包含一個(gè)output方法,該方法可能使用多種不同的打印機(jī),如:HP、EPSON、Canon,每種打印機(jī)都有不同的print方法。設(shè)計(jì)方案1voidoutput(intprintType){if(printType==1){Hpprt=newHp();prt.print(args);}elseif(printType==2){Epsonprt=newEpson();prt.print(args);}else{……}……}5.9.1開閉原那么面向?qū)ο蠓治雠c設(shè)計(jì)&UML46設(shè)計(jì)方案2voidoutput(Printerprinter){……printer.print(args);……}如何增加打印機(jī)類型?5.9.2Liskov替換原那么475.9.2Liskov替換原那么面向?qū)ο蠓治雠c設(shè)計(jì)&UML48定義:如果對(duì)每一個(gè)類型為T1的對(duì)象o1,都有類型為T2的對(duì)象o2,使得以T1定義的所有程序P,在所有對(duì)象o1被代換成o2時(shí),程序P的行為沒有變化,那么類型T2是類型T1的子
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國(guó)高端女裝行業(yè)市場(chǎng)營(yíng)銷模式及投資策略分析報(bào)告
- 2024-2030年中國(guó)非處方藥(OTC)行業(yè)競(jìng)爭(zhēng)趨勢(shì)及投資戰(zhàn)略研究報(bào)告
- 2024-2030年中國(guó)陶瓷茶具行業(yè)市場(chǎng)營(yíng)銷模式及發(fā)展競(jìng)爭(zhēng)力分析報(bào)告版
- 2024-2030年中國(guó)防火復(fù)合板產(chǎn)業(yè)未來發(fā)展趨勢(shì)及投資策略分析報(bào)告
- 2024-2030年中國(guó)銀行保險(xiǎn)行業(yè)改革創(chuàng)新模式及投資戰(zhàn)略研究報(bào)告
- 農(nóng)業(yè)現(xiàn)代化智能種植智能化服務(wù)平臺(tái)建設(shè)
- 農(nóng)業(yè)現(xiàn)代化農(nóng)業(yè)科技創(chuàng)新與推廣方案
- 農(nóng)業(yè)大數(shù)據(jù)精準(zhǔn)管理平臺(tái)建設(shè)方案
- 2024年房屋按揭貸款合同:購房借款協(xié)議書
- 2024年手機(jī)銀行安全協(xié)議
- 2024年安全生產(chǎn)知識(shí)競(jìng)賽考試題庫及答案(共五套)
- 22《鳥的天堂》課件
- 農(nóng)業(yè)灌溉裝置市場(chǎng)環(huán)境與對(duì)策分析
- 新疆烏魯木齊市第十一中學(xué)2024-2025學(xué)年八年級(jí)上學(xué)期期中道德與法治試卷
- 2024年江西省高考地理真題(原卷版)
- 部編版小學(xué)五年級(jí)上冊(cè)道法課程綱要(知識(shí)清單)
- 經(jīng)濟(jì)法學(xué)-計(jì)分作業(yè)一(第1-4章權(quán)重25%)-國(guó)開-參考資料
- 山東省臨沂市(2024年-2025年小學(xué)四年級(jí)語文)人教版期中考試(上學(xué)期)試卷及答案
- 護(hù)士2024思想?yún)R報(bào)5篇
- 2024年新版全員消防安全知識(shí)培訓(xùn)
- Unit+10+Lesson+1+How+Closely+Connected+Are+We 高中英語北師大版(2019)選擇性必修第四冊(cè)
評(píng)論
0/150
提交評(píng)論