




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第5章 類圖和對象圖5.1 類的定義類名屬性操作25.1.1 類的屬性可見性屬性名:類型多重性次序=初值特性+public#protected-privateRoseUML可見性+size: Area = (100,100)#visibility: Boolean = falsecolors: Color3points: Point2.* orderedname: String0.135.1.2 類的操作可見性操作名(參數(shù)列表): 返回值類型特性+public#protected-privateRoseUML可見性+display(): Location+hide()#create()-att
2、achXWindow(xwing: XwindowPtr)45.2 類之間的關(guān)系常見的類之間的關(guān)系包括: 關(guān)聯(lián)、聚集、組合、泛化、依賴等.55.2.1 關(guān)聯(lián)關(guān)聯(lián)(association)是模型元素間的一種語義聯(lián)系, 它是對具有共同的結(jié)構(gòu)特性、行為特性、關(guān)系和語義的鏈(Link)的描述./ 類A的源碼public class A public B theB; public A() / 類B的源碼public class B public B() / 類A的源碼public class A public B theB; public A() / 類B的源碼public class B public
3、 A theA; public B() 65.2.1 關(guān)聯(lián)1. 關(guān)聯(lián)名用來描述關(guān)聯(lián)的作用.75.2.1 關(guān)聯(lián)2. 關(guān)聯(lián)的角色關(guān)聯(lián)的兩端可以以某種角色參與關(guān)聯(lián), 如果不標(biāo)注角色則隱含用類名作為角色名.角色的多重性,表示可以有多少個(gè)對象參與該關(guān)聯(lián).85.2.1 關(guān)聯(lián)3. 關(guān)聯(lián)類/Company.javapublic class Company private String companyName; public Person employee;/Person.javapublic class Person private int personName; public Company employe
4、r;/Contract.javapublic class Contract private Double salary;95.2.1 關(guān)聯(lián)4. 關(guān)聯(lián)的約束105.2.1 關(guān)聯(lián)5. 限定關(guān)聯(lián)限定符, 關(guān)聯(lián)的屬性115.2.1 關(guān)聯(lián)6. 關(guān)聯(lián)的種類(1) 自反關(guān)聯(lián)public class EnginePart public EnginePart theEnginePart;(2) 二元關(guān)聯(lián)(3) N元關(guān)聯(lián)125.2.2 聚集與組合聚集(aggregation)是一種特殊的關(guān)聯(lián), 表示類之間的整體與部分關(guān)系.public class Circle public int radius; Style s
5、tyle;public class Style Color color; boolean isFilled;135.2.2 聚集與組合組合(composition)是一種特殊的聚集, 強(qiáng)調(diào)整體和部分具有相同的生命期.public class Circle public int radius; Point center;public class Style int x, y;145.2.3 泛化關(guān)系泛化關(guān)系指一般元素和特殊元素之間的分類關(guān)系.在OOPL中稱為繼承.155.2.3 泛化關(guān)系操作類的包繼承抽象類package MyPackage; abstract class MyAbstractC
6、lass . . . . package MyPackage; class MyDerivedClass extends MyAbstractClass int att; . . . . . void myFunction( ReferencedClass r ) . . MyDerivedClassatt: intmyFunction()MyPackageMyAbstractClass屬性165.2.4 依賴關(guān)系依賴關(guān)系也稱使用關(guān)系. 調(diào)用, 一個(gè)類調(diào)用另一個(gè)類的方法參數(shù), 一個(gè)類的方法使用另一個(gè)類作為形式參數(shù)發(fā)送, 消息的發(fā)送者與接收者之間的關(guān)系實(shí)例化, 一個(gè)類的方法創(chuàng)建了另一個(gè)的實(shí)例17
7、5.2.4 依賴關(guān)系class MyDependentClass . . . . . void myFunction1( MyReferencedClass r ) . . MyReferencedClass myFunction2( ) . . void myFunction3( ) MyReferencedClass m MyDependentClassatt: intmyFunction()MyReferencedClass依賴(引用一個(gè)類)參數(shù)or 返回類型or 局部變量185.3 派生屬性和派生關(guān)聯(lián)派生屬性(關(guān)聯(lián))指可以由其他屬性()關(guān)聯(lián)計(jì)算得到的屬性,名字前加”/”.195.4 抽
8、象類和接口抽象類接口205.4 抽象類和接口interface MyAbstractClass . . . . class MyClass implements MyInterface . . . . . UML 符號(hào) - 接口的實(shí)現(xiàn)描述215.5 版型版型(stereotype)是UML的3種擴(kuò)展機(jī)制之一.版型是建模人員在已有的構(gòu)造塊上派生出新的構(gòu)造塊,這些新的構(gòu)造塊與特定問題相關(guān).版型可以應(yīng)用于所有類型的模型元素. 系統(tǒng)預(yù)定義的版型用戶自義的版型225.6 邊界類、控制類和實(shí)體類UML中三種主要的類版型邊界類, boundary class控制類, control class實(shí)體類, en
9、tity class引入多種類版型幫助分析和設(shè)計(jì)人員確定系統(tǒng)中的類.235.6.1 邊界類邊界類位于系統(tǒng)與外界的交界處,包括:用戶界面類, 如: 窗口、對話框、報(bào)表類等通訊協(xié)議類, 如: TCP/IP的類直接與外部設(shè)備交互的類直接與外部系統(tǒng)交互的類邊界類的UML表示方法:245.6.1 邊界類通過用例圖可以確定需要的邊界類, 每個(gè)Actor/User case對至少需要一個(gè)邊界類.但并不是每個(gè)Actor/Use case都需要生成惟一邊界類, 多個(gè)actor啟動(dòng)同一use case可以使用同一邊界類.255.6.2 實(shí)體類實(shí)體類保存要放進(jìn)持久存儲(chǔ)體(數(shù)據(jù)庫/文件等)的信息.實(shí)體類通過事件流和交
10、互圖發(fā)現(xiàn), 采用目標(biāo)領(lǐng)域術(shù)語命名.通常實(shí)體類對應(yīng)數(shù)據(jù)庫中的表, 其屬性對應(yīng)表的字段, 但實(shí)體類與數(shù)據(jù)庫中的表不一定是一一對應(yīng)關(guān)系.265.6.3 控制類控制類是負(fù)責(zé)管理或控制其他類工作的類.每個(gè)用例通常有一個(gè)控制類, 控制用例中的事件順序, 控制類也可以在多個(gè)用例間共用. 控制較少接收消息, 發(fā)出較多消息.275.7 類圖類加上它們之間的關(guān)系就構(gòu)成類圖, 其中包含接口、包、關(guān)系等元素, 同時(shí)也可以包含對象、鏈等實(shí)例.類圖描述類和類之間的靜態(tài)關(guān)系.285.7.1 類圖的抽象層次概念層類圖, 描述應(yīng)用領(lǐng)域的概念.說明層類圖, 描述軟件的接口部分, 不是實(shí)現(xiàn)部分.實(shí)現(xiàn)層類圖考慮實(shí)現(xiàn)問題, 提供類的細(xì)
11、節(jié).295.7.2 構(gòu)造類圖根據(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)問題對照驗(yàn)證其是否合理.305.7.2 構(gòu)造類圖研究分析問題領(lǐng)域, 確定系統(tǒng)需求.確定類, 明確類的含義和職責(zé), 確定屬性和操作.確定類之間的關(guān)系.調(diào)整和細(xì)化類及類之間的關(guān)系
12、.繪制類圖并增加相應(yīng)的說明.建立類圖的步驟315.8 領(lǐng)域分析建立類圖的過程就是對領(lǐng)域及其解決方案的分析與設(shè)計(jì)過程.領(lǐng)域分析包括:通過對某一領(lǐng)域中的已有應(yīng)用系統(tǒng)、理論、技術(shù)、開發(fā)歷史等的研究, 來標(biāo)識(shí)、收集、組織、分析和表示領(lǐng)域模型及軟件體系結(jié)構(gòu)的過程;根據(jù)這一過程得到的結(jié)果.325.9 OO設(shè)計(jì)的原則開閉原則(Open/Closed Principle, OCP)Liskov替換原則(Liskov Substitution Principle, LSP)依賴倒置原則(Dependency Inversion Principle, DSP)接口分離原則(Interface Segregatio
13、n Principle, ISP)335.9.1 開閉原則開閉原則指的是一個(gè)模塊在擴(kuò)展性方面應(yīng)該是開放的, 而在更改性方面應(yīng)該是封閉的.其目的是在寫模塊時(shí),應(yīng)該盡量使得模塊可以擴(kuò)展, 并且在擴(kuò)展時(shí)不需要對模塊的源代碼進(jìn)行修改.為達(dá)到開閉原則, 設(shè)計(jì)時(shí)就盡量使用接口進(jìn)行封閉, 采用抽象機(jī)制, 并利用OO中的多態(tài)性技術(shù).345.9.1 開閉原則例: 某輸出類Output中包含一個(gè)output方法, 該方法可能使用多種不同的打印機(jī), 如: HP、EPSON、Canon,每種打印機(jī)都有不同的print方法。設(shè)計(jì)方案1void output(int printType) if(printType=1)
14、Hp prt = new Hp(); prt.print(args); else if(printType=2) Epson prt = new Epson(); prt.print(args); else 355.9.1 開閉原則設(shè)計(jì)方案2void output(Printer printer) printer.print(args); 如何增加打印機(jī)類型?365.9.2 Liskov替換原則定義: 如果對每一個(gè)類型為T1的對象o1, 都有類型為T2的對象o2, 使得以T1定義的所有程序P, 在所有對象o1被代換成o2時(shí), 程序P的行為沒有變化, 那么類型T2是類型T1的子類型.Java等語
15、言中是否允許左圖中的繼承, 即子類使用較低訪問權(quán)限覆蓋父類的方法呢?不允許, 這樣違背了Liskov替換原則.375.9.3 依賴倒置原則定義1: 抽象不應(yīng)該依賴于細(xì)節(jié), 細(xì)節(jié)應(yīng)該依賴于抽象.定義2: 要針對接口編程, 不要針對實(shí)現(xiàn)編程.設(shè)計(jì)人員希望遵守”開-閉”原則, 倒置依賴關(guān)系是達(dá)到要求的途徑.385.9.4 接口分離原則使用多個(gè)專門的接口比使用單一的總接口要好.395.9.4 接口分離原則一個(gè)真實(shí)的例子: 某全文查找引擎的系統(tǒng)設(shè)計(jì).違反接口分離原則405.9.4 接口分離原則探索器接口索引生成器接口搜索結(jié)果集接口功能接口的劃分:415.9.6 設(shè)計(jì)過程中注意的問題遵守OO設(shè)計(jì)原則.不同類中相似方法的名稱應(yīng)該相同.遵守已有的約定俗成的習(xí)慣.盡量減少消息模式的數(shù)目. 只要可能,使消息具有一致的模式, 以利于理解.設(shè)計(jì)簡單的類. 類的職責(zé)要明確, 不要在類中提供太
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題開題報(bào)告:構(gòu)建“四三”學(xué)校德育模式的實(shí)踐研究
- 肉雞料產(chǎn)品培訓(xùn)
- 2025年鮮花綠植項(xiàng)目合作計(jì)劃書
- 旅游情景英語(第二版)Unit 5-1學(xué)習(xí)資料
- 鐵路圍墻涂料施工方案
- 2025年耐輻照玻璃棉項(xiàng)目合作計(jì)劃書
- 2025年TOD自動(dòng)在線監(jiān)測儀項(xiàng)目發(fā)展計(jì)劃
- 旅游度假區(qū)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 農(nóng)林牧漁產(chǎn)品貿(mào)易代理企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 精酵型白啤企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 人教版六年級(jí)上冊道德與法治教案(5篇)
- (中職)中職生創(chuàng)新創(chuàng)業(yè)能力提升教課件完整版
- 中班健康課件《我不挑食》
- 生豬屠宰獸醫(yī)衛(wèi)生人員考試題庫答案(414道)
- 《完善中國特色社會(huì)主義法治體系》課件
- 2024至2030年中國石油瀝青市場前景及投資機(jī)會(huì)研究報(bào)告
- 2025版 高考試題分析-數(shù)學(xué)-部分4
- 武漢大學(xué)張?。?024生成式人工智能大模型及其電力系統(tǒng)數(shù)智化應(yīng)用前沿報(bào)告
- (高清版)AQ 1056-2008 煤礦通風(fēng)能力核定標(biāo)準(zhǔn)
- 2024版高一上冊語文模擬試卷
- 《內(nèi)陸干旱區(qū)季節(jié)性河流生態(tài)流量(水量)確定技術(shù)導(dǎo)則》
評(píng)論
0/150
提交評(píng)論