面向?qū)ο笤O(shè)計(jì)-類(lèi)圖設(shè)計(jì)_第1頁(yè)
面向?qū)ο笤O(shè)計(jì)-類(lèi)圖設(shè)計(jì)_第2頁(yè)
面向?qū)ο笤O(shè)計(jì)-類(lèi)圖設(shè)計(jì)_第3頁(yè)
面向?qū)ο笤O(shè)計(jì)-類(lèi)圖設(shè)計(jì)_第4頁(yè)
面向?qū)ο笤O(shè)計(jì)-類(lèi)圖設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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)介

1、系統(tǒng)規(guī)劃部面向?qū)ο笤O(shè)計(jì)_類(lèi)圖設(shè)計(jì)2022/9/111主要內(nèi)容類(lèi)相關(guān)的基本概念使用UML的類(lèi)圖設(shè)計(jì)類(lèi)圖設(shè)計(jì)的一些問(wèn)題分析繼承關(guān)系的分析對(duì)象持久化與E-R模型的映射類(lèi)設(shè)計(jì)相關(guān)的一些設(shè)計(jì)模式類(lèi)圖設(shè)計(jì)應(yīng)用信息模型建模過(guò)程及方法2022/9/112類(lèi)相關(guān)的基本概念迎接挑戰(zhàn),共創(chuàng)成功!2022/9/113對(duì)象和類(lèi)對(duì)象(Object):對(duì)象是指某個(gè)事物,大多對(duì)應(yīng)于真實(shí)世界中的某個(gè)客觀實(shí)體;但有些對(duì)象在真實(shí)世界中沒(méi)有直接的對(duì)應(yīng)物,是人們對(duì)某個(gè)事物的一種抽象描述。對(duì)象的基本特征可以歸納為對(duì)象的屬性和行為兩類(lèi)。 類(lèi)(Class):類(lèi)是指對(duì)一組具有相同特征的對(duì)象的抽象描述;任何對(duì)象都是某個(gè)類(lèi)的實(shí)例。2022/9/1

2、14例:客戶類(lèi)的表示客戶姓名單位電話Email客戶姓名單位電話Email客戶付款(金額)客戶付款(金額)2022/9/115類(lèi)圖和對(duì)象圖類(lèi)圖描述系統(tǒng)中的類(lèi)及其相互之間的各種關(guān)系,反映了系統(tǒng)中包含的各種對(duì)象的類(lèi)型以及對(duì)象間的各種靜態(tài)關(guān)系,主要是:關(guān)聯(lián)和子類(lèi)型。類(lèi)圖也可描述類(lèi)的屬性和行為以及對(duì)模型中各種成分的約束。對(duì)象圖是類(lèi)圖的實(shí)例,描述系統(tǒng)中各種對(duì)象(類(lèi)的實(shí)例)以及對(duì)象之間的各種靜態(tài)關(guān)系。2022/9/116使用UML的類(lèi)圖設(shè)計(jì)迎接挑戰(zhàn),共創(chuàng)成功!2022/9/117使用UML的類(lèi)圖設(shè)計(jì)類(lèi)設(shè)計(jì)的相關(guān)UML元素類(lèi)屬性操作接口關(guān)聯(lián)聚合繼承(泛化)包的使用2022/9/118類(lèi)實(shí)體名稱(chēng)實(shí)體方法可見(jiàn)性實(shí)

3、體屬性類(lèi)是對(duì)同一種類(lèi)型的對(duì)象的抽象表示2022/9/119屬性UML規(guī)定其語(yǔ)法為:可見(jiàn)性 名稱(chēng):類(lèi)型 = 缺省值 約束特性描述屬性的元素可見(jiàn)性:表示該屬性對(duì)類(lèi)外的元素是否可見(jiàn)。常用的有公有、受保護(hù)和私有三種。名稱(chēng):屬性的名稱(chēng), 是一個(gè)字符串。類(lèi)型:定義屬性的種類(lèi)(基本數(shù)據(jù)類(lèi)型或用戶自定義的類(lèi)型)。缺省值:屬性的初始值。約束特性:描述對(duì)屬性的約束。2022/9/1110操作UML規(guī)定其語(yǔ)法為可見(jiàn)性 名稱(chēng)(參數(shù)表):返回類(lèi)型表達(dá)式約束特性描述操作的元素可見(jiàn)性:“+”表示公有操作,“#”表示受保護(hù)的操作,“-”表示私有操作。名稱(chēng):操作的名稱(chēng),是一個(gè)字符串。參數(shù)表:其語(yǔ)法與屬性的參數(shù)相同,參數(shù)個(gè)數(shù)是任

4、意的。返回類(lèi)型表達(dá)式(可選項(xiàng)):依賴(lài)于語(yǔ)言的描述。約束特性:用以描述對(duì)此操作的約束。2022/9/1111可見(jiàn)性對(duì)“Public”、Private”和“Protected”等三個(gè)可見(jiàn)性標(biāo)識(shí)符的含義,各種語(yǔ)言都有它自己的規(guī)定。UML的定義是:+(Public):公有成員在程序的任何位置都是可見(jiàn)的,系統(tǒng)中的任何對(duì)象都可以使用它。-(Private):私有成員僅可以由定義它的類(lèi)使用。#(Protected):受保護(hù)的成員僅可以由定義它的類(lèi)和該類(lèi)的子類(lèi)中的對(duì)象使用。2022/9/1112接口接口和類(lèi)不同:一個(gè)類(lèi)可以有它形態(tài)的真實(shí)實(shí)例,然而一個(gè)接口必須至少有一個(gè)類(lèi)來(lái)實(shí)現(xiàn)它。2022/9/1113關(guān)聯(lián)關(guān)聯(lián)

5、用于描述類(lèi)之間的關(guān)系每個(gè)關(guān)聯(lián)有兩個(gè)角色。例如,對(duì)于客戶和訂單之間的關(guān)聯(lián)是:客戶和訂單。關(guān)聯(lián)名稱(chēng)關(guān)聯(lián)基數(shù)(Cardinality)關(guān)聯(lián)基數(shù)(Cardinality)關(guān)聯(lián)實(shí)體,描述關(guān)聯(lián)的屬性、方法2022/9/1114關(guān)聯(lián)的分類(lèi)雙向關(guān)聯(lián)單向關(guān)聯(lián)關(guān)聯(lián)類(lèi)聚合基本聚合組合聚合自關(guān)聯(lián)(反射關(guān)聯(lián))2022/9/1115雙向關(guān)聯(lián)關(guān)聯(lián)是兩個(gè)類(lèi)間的聯(lián)接。在Rose中關(guān)聯(lián)總是被假定是雙向的;這意味著,兩個(gè)類(lèi)彼此知道它們間的聯(lián)系,除非你限定一些其它類(lèi)型的關(guān)聯(lián)。2022/9/1116單向關(guān)聯(lián)在一個(gè)單向關(guān)聯(lián)中,兩個(gè)類(lèi)是相關(guān)的,但是只有一個(gè)類(lèi)知道這種聯(lián)系的存在。下圖顯示單向關(guān)聯(lián)的透支財(cái)務(wù)報(bào)告的一個(gè)實(shí)例。2022/9/111

6、7關(guān)聯(lián)類(lèi)在關(guān)聯(lián)建模中,在一些情況下,需要包括其它類(lèi),因?yàn)樗岁P(guān)于關(guān)聯(lián)的有價(jià)值的信息。對(duì)于這種情況,需要使用 關(guān)聯(lián)類(lèi) 來(lái)綁定你的基本關(guān)聯(lián)。關(guān)聯(lián)類(lèi)和一般類(lèi)一樣表示。不同的是,主類(lèi)和關(guān)聯(lián)類(lèi)之間用一條相交的點(diǎn)線連接。2022/9/1118自關(guān)聯(lián)類(lèi)自身的關(guān)聯(lián),當(dāng)一個(gè)類(lèi)關(guān)聯(lián)到它本身時(shí),這并不意味著類(lèi)的實(shí)例與它本身相關(guān),而是類(lèi)的一個(gè)實(shí)例與類(lèi)的另一個(gè)實(shí)例相關(guān)。2022/9/1119聚合聚合是一種特別類(lèi)型的關(guān)聯(lián),用于描述“總體到局部”的關(guān)系。聚合分為兩種類(lèi)型:基本聚合、組合聚合基本聚合在基本聚合關(guān)系中,部分類(lèi) 的生命周期獨(dú)立于整體類(lèi) 的生命周期。組合聚合在組合聚合關(guān)系中,部分類(lèi)的生命周期依賴(lài)于整體類(lèi)的生命周

7、期。2022/9/1120繼承在面向?qū)ο蟮脑O(shè)計(jì)中一個(gè)非常重要的概念,繼承,指的是一個(gè)類(lèi)(子類(lèi))繼承另外的一個(gè)類(lèi)(超類(lèi))的屬性和方法,并增加它自己的屬性和方法,或者覆蓋父類(lèi)的屬性和方法類(lèi)名BankAccount和withdrawal操作使用斜體。這表示,BankAccount 類(lèi)是一個(gè)抽象類(lèi),而withdrawal方法是抽象的操作。換句話說(shuō),BankAccount 類(lèi)使用withdrawal規(guī)定抽象操作,并且CheckingAccount 和 SavingsAccount 兩個(gè)子類(lèi)都分別地執(zhí)行它們各自版本的操作。然而,超類(lèi)(父類(lèi))不一定要是抽象類(lèi)。標(biāo)準(zhǔn)類(lèi)作為超類(lèi)是正常的。2022/9/1121泛

8、化(Generalization)泛化(Generalization): 抽象化特化(Specialization): 實(shí)例化繼承(Inheritance): 泛化關(guān)系的一種實(shí)現(xiàn)機(jī)制2022/9/1122繼承與泛化繼承是實(shí)現(xiàn)泛化的一種機(jī)制。在這種機(jī)制中,超類(lèi)的任何一個(gè)子類(lèi)都須具有其超類(lèi)的所有行為:不僅要求其操作界面在文法上一致,而且要求其行為在語(yǔ)義上一致。當(dāng)子類(lèi)中的一個(gè)操作重載其超類(lèi)中相應(yīng)的操作時(shí),必須確保它提供與超類(lèi)中的操作相同的服務(wù)(內(nèi)容可以更多或更具體)。如沒(méi)有證明子類(lèi)的行為是否與父類(lèi)相同,就試圖用繼承來(lái)實(shí)現(xiàn)新類(lèi)中的行為,當(dāng)兩者不一致時(shí),會(huì)導(dǎo)致難以預(yù)測(cè)的錯(cuò)誤。2022/9/1123包的引

9、入大系統(tǒng)將問(wèn)題復(fù)雜化?!肮タ恕睆?fù)雜問(wèn)題的經(jīng)典方法是“分而治之”。結(jié)構(gòu)化方法采用功能分解來(lái)解決這個(gè)問(wèn)題,但傳統(tǒng)的結(jié)構(gòu)化方法將過(guò)程與數(shù)據(jù)分離。面向?qū)ο蠹夹g(shù)解決這個(gè)問(wèn)題的基本思路是將許多類(lèi)集合成一個(gè)高內(nèi)聚、低耦合的類(lèi)的集合。UML把這種分組機(jī)制稱(chēng)為包。不僅類(lèi)可以運(yùn)用包的機(jī)制,任何模型元素都可運(yùn)用包的機(jī)制。2022/9/1124類(lèi)關(guān)系中的依賴(lài)性UML指導(dǎo)將類(lèi)組成包的原則是依賴(lài)性:設(shè)有兩個(gè)元素X、Y,如果修改(語(yǔ)法的或語(yǔ)義的)元素X的定義引起對(duì)元素Y的定義的修改,則稱(chēng)元素Y依賴(lài)于元素X。類(lèi)之間的依賴(lài)關(guān)系:C inherits from RA variable in C is of class RA me

10、thod of C receives an argument of class RA method of C sends a message that returns an argument of class RA method of C has a local variable of class RC is a “friend” of R2022/9/1125包圖關(guān)系中的依賴(lài)性包圖顯示類(lèi)的包以及這些包之間的依賴(lài)關(guān)系。它們都是類(lèi)圖中的元素,因此包圖是另一種類(lèi)圖。如果兩個(gè)包中的任意兩個(gè)類(lèi)之間存在依賴(lài)關(guān)系,則這兩個(gè)包之間存在依賴(lài)關(guān)系。但包的依賴(lài)是不傳遞的。如圖示,訂單獲取應(yīng)用包屏蔽了訂單包的變化對(duì)

11、訂單獲取界面包的影響。2022/9/1126類(lèi)圖設(shè)計(jì)的幾點(diǎn)建議在項(xiàng)目初始階段,不要使用所有的符號(hào),應(yīng)從簡(jiǎn)單的概念開(kāi)始。不同的開(kāi)發(fā)階段應(yīng)用不同的觀點(diǎn)畫(huà)類(lèi)圖:分析階段用概念層類(lèi)圖;設(shè)計(jì)階段用設(shè)計(jì)層類(lèi)圖。不要為每個(gè)事物都畫(huà)一個(gè)模型,應(yīng)把精力放在關(guān)鍵的領(lǐng)域,畫(huà)幾張較為關(guān)鍵的圖,經(jīng)常使用,不斷更新。使用類(lèi)圖的最大危險(xiǎn)是過(guò)早地陷入實(shí)現(xiàn)的細(xì)節(jié),應(yīng)將重點(diǎn)放在概念層。2022/9/1127類(lèi)圖設(shè)計(jì)的一些問(wèn)題分析迎接挑戰(zhàn),共創(chuàng)成功!2022/9/1128內(nèi)容提要使用繼承的一些問(wèn)題分析對(duì)象的持久化,向E-R模型的映射2022/9/1129使用繼承的一些問(wèn)題分析許多人將繼承視為面向?qū)ο笤O(shè)計(jì)中最好的或最有力的方法因此在

12、面向?qū)ο笤O(shè)計(jì)中,會(huì)盡量多的使用繼承來(lái)解決問(wèn)題這會(huì)導(dǎo)致:繼承關(guān)系的不恰當(dāng)使用子類(lèi)不恰當(dāng)?shù)墨@取父類(lèi)的行為類(lèi)的層次結(jié)構(gòu)不靈活(Awkward or rigid)難于維護(hù)下面列舉一些沒(méi)有正確使用繼承關(guān)系的例子2022/9/1130繼承的問(wèn)題分析1不正確的繼承關(guān)系將繼承改為關(guān)聯(lián)2022/9/1131繼承的問(wèn)題分析22022/9/1132一個(gè)相似的例子2022/9/1133問(wèn)題在我們的應(yīng)用中,房間是一個(gè)立方體我們需要記錄每個(gè)房間的長(zhǎng)、寬、高在我們的類(lèi)庫(kù)中已經(jīng)有CUBOID類(lèi)設(shè)計(jì)為:CUBOID繼承的問(wèn)題分析32022/9/1134一種可行的設(shè)計(jì)一種更為通用的設(shè)計(jì)繼承的問(wèn)題分析3續(xù)2022/9/1135繼承

13、的問(wèn)題分析42022/9/1136對(duì)象模型向ER模型的映射對(duì)于實(shí)體類(lèi),一般會(huì)選擇關(guān)系數(shù)據(jù)庫(kù)做數(shù)據(jù)的存儲(chǔ),因此會(huì)涉及對(duì)象模型如何向E-R模型轉(zhuǎn)換的問(wèn)題:簡(jiǎn)單關(guān)聯(lián)關(guān)系的映射繼承關(guān)系的映射聚合關(guān)系的映射2022/9/1137簡(jiǎn)單關(guān)聯(lián)關(guān)系的映射2022/9/1138繼承關(guān)系的映射2022/9/1139三種方案的進(jìn)一步分析三種方案優(yōu)缺點(diǎn)的進(jìn)一步分析:如果行數(shù)有限,那么優(yōu)先考慮將應(yīng)用程序與將來(lái)可能的改變隔離開(kāi)來(lái),提供一個(gè)更為健壯的數(shù)據(jù)庫(kù)設(shè)計(jì)。因此方案1可能是最靈活的,但這個(gè)方案的性能是最差的(它涉及到許多連接)。如果超類(lèi)中屬性數(shù)目與子類(lèi)的數(shù)目相比較小,那么方案3可能是最謹(jǐn)慎的選擇。它可以提供比方案1更好的

14、性能,以后擴(kuò)展模型時(shí)添加更多的類(lèi)也較為容易。如果子類(lèi)中的數(shù)據(jù)量較少,那么方案2是最好的。該方案提供了最佳的性能,但其靈活性最差。2022/9/1140聚合關(guān)系的映射在類(lèi)圖中,聚合關(guān)系表示的是兩個(gè)類(lèi)之間的整體與部分之間的關(guān)系。從本質(zhì)上講,聚合關(guān)系是類(lèi)之間的關(guān)聯(lián)關(guān)系的一種,在向E-R模型轉(zhuǎn)換時(shí),與簡(jiǎn)單關(guān)聯(lián)關(guān)系的映射規(guī)則相同。按照一對(duì)多的關(guān)系映射為E-R模型 2022/9/1141類(lèi)設(shè)計(jì)相關(guān)的設(shè)計(jì)模式迎接挑戰(zhàn),共創(chuàng)成功!2022/9/1142類(lèi)設(shè)計(jì)相關(guān)的設(shè)計(jì)模式模式是對(duì)特定環(huán)境下經(jīng)常出現(xiàn)的有代表性的問(wèn)題的通用核心解決方案,并且該方案可以被多次使用;設(shè)計(jì)模式可以幫助復(fù)用和溝通,可以提高信息模型的質(zhì)量,

15、使模型的結(jié)構(gòu)更為合理,具有良好的適應(yīng)能力,能夠可以提供可擴(kuò)展的結(jié)構(gòu);在信息模型中使用的設(shè)計(jì)模式主要有:實(shí)體-實(shí)體規(guī)格分離模式角色對(duì)象模式模板模式合成模式實(shí)體屬性規(guī)格/實(shí)體屬性模式實(shí)體/實(shí)體狀態(tài)分離模式2022/9/1143實(shí)體實(shí)體規(guī)格分離模式將實(shí)體的不變的、相對(duì)固定的特性和行為與其可變的特性、行為分開(kāi)定義。通過(guò)規(guī)格的定義,將通用的規(guī)則、屬性分離出來(lái)單獨(dú)定義,形成實(shí)體的模板。記錄某一類(lèi)實(shí)體的通用屬性記錄某一實(shí)體的屬性2022/9/1144模板模式將具有相同分類(lèi)或特點(diǎn)的類(lèi)中通用的屬性、方法抽象出來(lái),形成抽象類(lèi)作為父類(lèi),子類(lèi)繼承和擴(kuò)展父類(lèi)的屬性、方法。在面向?qū)ο蟮慕V?,抽象層次是非常重要的關(guān)于繼承

16、模板模式是基于繼承的復(fù)用技術(shù)采用繼承的復(fù)用技術(shù)要比采用委托的復(fù)用技術(shù)耦合程度要高,使用繼承關(guān)系要謹(jǐn)慎2022/9/1145模板模式的應(yīng)用將子類(lèi)與其它類(lèi)的關(guān)聯(lián)關(guān)系中具有通用性的關(guān)聯(lián)抽象到父類(lèi)與其它類(lèi)的關(guān)聯(lián),使實(shí)體之間的關(guān)聯(lián)關(guān)系更具有通用型和擴(kuò)展性2022/9/1146角色對(duì)象模式問(wèn)題的引出:一些業(yè)務(wù)實(shí)體,需要扮演多個(gè)角色,如某個(gè)人可以是企業(yè)的客戶,同時(shí)又是企業(yè)的員工;某個(gè)公司可以是企業(yè)的客戶,同時(shí)也是企業(yè)的代銷(xiāo)商,也可以是企業(yè)的提供商,如何對(duì)這些關(guān)系進(jìn)行建模,在信息模型中,采用實(shí)體、實(shí)體角色(角色對(duì)象)分離的模式來(lái)解決:實(shí)體是相對(duì)固定的,實(shí)體扮演的角色是可以獨(dú)立與實(shí)體靈活的變化和擴(kuò)展2022/9

17、/1147角色對(duì)象模式的應(yīng)用將與系統(tǒng)相關(guān)的個(gè)人、組織抽象成參與者,將參與者所扮演的角色用參與者角色表示,具體類(lèi)型的角色使用子類(lèi)來(lái)表示。2022/9/1148合成模式合成模式又稱(chēng)為部分整體模式。合成模式將對(duì)象組織到樹(shù)結(jié)構(gòu)中,可以用來(lái)描述整體與部分的關(guān)系。合成模式可以使客戶端將原子元素與復(fù)合元素同等看待。合成模式有安全式和透明式兩種。透明式的合成模式將原子元素與復(fù)合元素完全同等看待,定義同樣的接口,缺點(diǎn)是不夠安全;安全式的合成模式是將原子元素與復(fù)合元素區(qū)別對(duì)待,可以有不同的接口,缺點(diǎn)是不夠透明。2022/9/1149合成模式的應(yīng)用變更服務(wù)規(guī)格是服務(wù)規(guī)格的一種,如新裝、改名、過(guò)戶等??梢允窃拥模?/p>

18、可以是組合的,但是通過(guò)服務(wù)規(guī)格將他們同等處理。2022/9/1150實(shí)體屬性規(guī)格/實(shí)體屬性模式問(wèn)題的引出:有些業(yè)務(wù)實(shí)體,如通信服務(wù),不同的通信服務(wù)可以有不同的特性,如ADSL有上行速率、下行速率;專(zhuān)線有通信規(guī)程、接入方式等,而普通電話則沒(méi)有。在支持新的通信服務(wù)時(shí),又可能增加新的特性,如何對(duì)變化的特性建模。在建模時(shí)引入屬性實(shí)體:2022/9/1151實(shí)體/實(shí)體狀態(tài)分離模式對(duì)于有狀態(tài)變化的實(shí)體,如果需要記錄實(shí)體狀態(tài)變化的過(guò)程,需要將狀態(tài)單獨(dú)分離出來(lái),形成狀態(tài)實(shí)體。從資源管理的角度看,需要采用這種模式,以記錄資源狀態(tài)變化的歷史,即所說(shuō)的資源與資源狀態(tài)分離。像申請(qǐng)單、工單都有狀態(tài)的變化,在設(shè)計(jì)時(shí)是采用了_handle表的方式來(lái)記錄變化,也是這種模式的一種實(shí)現(xiàn)方式。2022/9/1152信息模型建模過(guò)程與方法迎接挑戰(zhàn),共

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論