




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 類 具有相似結(jié)構(gòu)、行為和關(guān)系的一組對象 的描述符。 類的名字 simple name 例如:shape path name 例如:banking:checkingaccount 屬性在類圖標(biāo)的屬性分隔框中用文字串說 明,uml規(guī)范說明1.5版本中定義屬性的格 式為: 可見性屬性名:類型多重性 次序 =初始值特性 【例5.1】 屬性聲明的一些例子。 +size: area=(100,100) #visibility: boolean=false +default-size: rectangle #maximum-size: rectangle -xptr: xwindowptr colors:
2、 color3 points: point2.* ordered name: string0.1 操作(operation)用于修改、檢索類的屬性或 執(zhí)行某些動(dòng)作,操作通常也稱為功能。 uml規(guī)范說明1.5中規(guī)定操作的格式為: 可見性操作名(參數(shù)列表):返回類 型特性 操作的特征標(biāo)記:只包括操作名和參數(shù)列表 操作接口:包括操作名、參數(shù)列表和返回類型 【例5.2】 操作聲明的一些例子。 +display():location +hide() #create() -attachxwindow(xwin:xwindowptr) 類之間的關(guān)系 關(guān)聯(lián) 聚集 組合 泛化 依賴 關(guān)聯(lián)(association
3、)是模型元素間的一種語 義聯(lián)系,它是對具有共同的結(jié)構(gòu)特性、行為 特性、關(guān)系和語義的鏈(link)的描述。 abab 圖5.2 類之間的關(guān)聯(lián)關(guān)系 圖5.3 類之間的單向關(guān)聯(lián)關(guān)系 類a的代碼: public class a public b theb; /* * roseuid 3dafbf0f01fc */ public a() 類b的代碼: public class b /* * roseuid 3dafbf0f01a2 */ public b() 關(guān)聯(lián)名 描述關(guān)聯(lián)的作用。 通常是動(dòng)詞或動(dòng)詞短語。 companyperson employs 圖5.4 使用關(guān)聯(lián)名的關(guān)聯(lián) 關(guān)聯(lián)的兩端可以某種角色參
4、與關(guān)聯(lián)。 companyperson 0.n1 +employee 0.n +employer 1 圖5.5 關(guān)聯(lián)的角色 在uml中,多重性可以用下面的格式表示: 0.1 0.*(也可以表示為0.n) 1(1.1的簡寫) 1.*(也可以表示為1.n) *(即0.n) 7 3,6.9 0(0.0的簡寫)(表示沒有實(shí)例參與關(guān)聯(lián),一般不用) 可以看到,多重性是用非負(fù)整數(shù)的一個(gè)子集來表示的。 進(jìn)一步描述關(guān)聯(lián)的屬性、操作以及其他信 息。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。 圖5.6 使用關(guān)聯(lián)類的關(guān)聯(lián) 為了有助于理解關(guān)聯(lián)類,這里也用rose生 成相應(yīng)的java代碼,共3個(gè)類,如下所示。 類company的代碼:
5、 public class company private string companyname; public person employee; 類person的代碼: public class person private string personname; protected company employer; 類contract的代碼: public class contract private double salary; 對于關(guān)聯(lián)可以加上一些約束,以加強(qiáng)關(guān)聯(lián) 的含義。 person account corporation xor 圖5.7 帶約束的關(guān)聯(lián) 在關(guān)聯(lián)端緊靠類圖標(biāo)處可以有
6、限定符 (qualifier),帶有限定符的關(guān)聯(lián)稱為限定 關(guān)聯(lián)(qualified association)。限定符的作 用就是在給定關(guān)聯(lián)一端的一個(gè)對象和限定符 值以后,可確定另一端的一個(gè)對象或?qū)ο蠹?圖5.8 限定符和限定關(guān)聯(lián) 圖5.9 限定關(guān)聯(lián)和一般關(guān)聯(lián) bank person 0.1 account : int n account : int 0.1 n bank person 1 1.n 1 1.n 0.1 account : int n account : int 0.1 n 圖5.8表示的意思是,一個(gè)person可以在 bank中有多個(gè)account。但給定了一個(gè) account
7、值后,就可以對應(yīng)一個(gè)person值,或 者對應(yīng)的person值為null,因?yàn)閜erson端的多 重性為0.1。這里的多重性表示的是person 和(bank,account)之間的關(guān)系,而不是person 和bank之間的關(guān)系。即: (bank,account)0個(gè)或1個(gè)person person多個(gè)(bank,account) 需要注意的是,限定符是關(guān)聯(lián)的屬性,而 不是類的屬性。也就是說,在具體實(shí)現(xiàn)圖 5.8中的結(jié)構(gòu)時(shí),account這個(gè)屬性有可能是 person類中的一個(gè)屬性,也可能是bank類中 的一個(gè)屬性(當(dāng)然,這里在bank類中包含 account屬性并不好),也可能是在其他類 中
8、有一個(gè)account屬性。 限定符這個(gè)概念在設(shè)計(jì)軟件時(shí)非常有用,如果一 個(gè)應(yīng)用系統(tǒng)需要根據(jù)關(guān)鍵字對一個(gè)數(shù)據(jù)集做查詢 操作,則經(jīng)常會(huì)用到限定關(guān)聯(lián)。引入限定符的一 個(gè)目的就是把多重性從n將為1或0.1,這樣如果做 查詢操作,則這個(gè)查詢操作的效率會(huì)很高。所以 在使用限定符時(shí),如果限定符另一端的多重性仍 為n,則引入這個(gè)限定符的作用就不是很大。因?yàn)?查詢結(jié)果仍然還是一個(gè)結(jié)果集,所以也可以根據(jù) 多重性來判斷一個(gè)限定符的設(shè)計(jì)是否合理。 按照關(guān)聯(lián)所連接的類的數(shù)量 自返關(guān)聯(lián) 二元關(guān)聯(lián) n元關(guān)聯(lián) 自返關(guān)聯(lián)(reflexive association)又稱遞歸關(guān) 聯(lián)(recursive association),
9、是一個(gè)類與自身 的關(guān)聯(lián),即同一個(gè)類的兩個(gè)對象間的關(guān)系。 enginepart 0.n 1 0.n 1 圖5.10 自返關(guān)聯(lián) 對于圖5.10中的類,在rose中所生成的java 代碼如下所示: 類enginepart的代碼: public class enginepart public enginepart theenginepart; /* *roseuid 3e9290390281 */ public enginepart() 二元關(guān)聯(lián) 略。 n元關(guān)聯(lián)(n-ary association)是在3個(gè)或3個(gè)以 上類之間的關(guān)聯(lián)。 聚集(aggregation)是一種特殊形式的關(guān) 聯(lián)。聚集表示類之間
10、整體與部分的關(guān)系。在 對系統(tǒng)進(jìn)行分析和設(shè)計(jì)時(shí),需要描述中的 “包含”,“組成”、“分為部分”等詞 常常意味著存在聚集關(guān)系。 圖5.12 聚集關(guān)系 組合(composition)表示的也是類之間整 體與部分的關(guān)系,但組合關(guān)系中的整體與部 分具有同樣的生存期。也就是說,組合是一 種特殊形式的聚集。 圖5.13 組合關(guān)系 聚集關(guān)系的實(shí)例是傳遞的,反對稱的,也 就是說,聚集關(guān)系的實(shí)例之間存在偏序關(guān)系, 即聚集關(guān)系的實(shí)例之間不能形成環(huán)。需要注 意的是,這里說的是聚集關(guān)系的實(shí)例(即鏈) 不能形成環(huán),而不是說聚集關(guān)系不能形成環(huán)。 事實(shí)上,聚集關(guān)系可以形成環(huán)。 聚集關(guān)系也稱為“has-a”關(guān)系,組合關(guān)系也稱為
11、 “contains-a”關(guān)系。 聚集關(guān)系表示事物的整體/部分關(guān)系的較弱的情況, 組合關(guān)系表示事物的整體/部分關(guān)系的較強(qiáng)的情況。 在聚集關(guān)系中,代表部分事物的對象可以屬于多個(gè)聚 集對象,可以為多個(gè)聚集對象所共享,而且可以隨時(shí) 改變它所從屬的聚集對象。代表部分事物的對象與代 表聚集事物對象的生存期無關(guān),一旦刪除了它的一個(gè) 聚集對象,不一定也就隨即刪除代表部分事物的對象。 在組合關(guān)系中,代表整體事物的對象負(fù)責(zé)創(chuàng)建和刪除 代表部分事物的對象,代表部分事物的對象只屬于一 個(gè)組合對象。一旦刪除了組合對象,也就隨即刪除了 相應(yīng)的代表部分事物的對象。 泛化(generalization)定義了一般元素和特
12、殊元素之間的分類關(guān)系,如果從面向?qū)ο蟪?序設(shè)計(jì)語言的角度來說,類與類之間的泛化 關(guān)系就是平常所說的類之間的繼承關(guān)系。 athlete swimmer golfer 圖5.14 泛化關(guān)系 假設(shè)有兩個(gè)元素x、y,如果修改元素x的 定義可能會(huì)導(dǎo)致對另一個(gè)元素y的定義修改, 則稱元素y依賴于元素x。 圖5.15 依賴關(guān)系 派生屬性 可以從其他屬性推演得到的屬性。 圖5.16 派生屬性 派生關(guān)聯(lián) 可以從其他屬性推演得到的關(guān)聯(lián)。 圖5.17 派生關(guān)聯(lián) 抽象類(abstract class)是不能直接產(chǎn)生實(shí) 例的類,因?yàn)槌橄箢愔械姆椒ㄍ皇且恍?聲明,而沒有具體的實(shí)現(xiàn),因此不能對抽象 類實(shí)例化。 athl
13、ete swimmer golfer 接口是類的版型,對于版型 這個(gè)概念在5.5節(jié)中還會(huì)介紹。如圖5.18所示 是接口的3種表示方式。 interface interface2 interface3 icon形式label形式decoration形式 圖5.18 接口的3種表示方式 需要注意的是,uml中接口的概念和一般 的程序設(shè)計(jì)語言(如java)中接口的概念稍 有不同。例如,java中的接口可以包含屬性, 但uml中的接口不包括屬性,只包含方法 的聲明。 接口與抽象類很相似,但兩者之間存在不 同的地方:接口不能含有屬性,而抽象類可 以含有屬性;接口中聲明的所有方法都沒有 實(shí)現(xiàn)部分,而抽象類
14、中某些方法可以有具體 的實(shí)現(xiàn)。 版型是uml的3種擴(kuò)展機(jī)制之一,uml中 的另外兩種擴(kuò)展機(jī)制是標(biāo)記值和約束。 stereotype這個(gè)詞來源于印刷業(yè)中的術(shù)語, 一般在進(jìn)行正式印刷前,需要進(jìn)行制版,然 后根據(jù)做好的版型進(jìn)行批量印刷。 在2.4節(jié)介紹uml的構(gòu)成時(shí),已提到uml 中的基本構(gòu)造塊包括事物(thing)、關(guān)系 (relationship)、圖(diagram)這3種類型。 版型是建模人員在已有的構(gòu)造塊上派生出 的新構(gòu)造塊,這些新構(gòu)造塊是和特定問題相 關(guān)的。需要注意的是,版型必須定義在 uml中已經(jīng)有定義的基本構(gòu)造塊之上,是 在已有元素上增加新的語義,而不是增加新 的文法結(jié)構(gòu)。 uml中
15、預(yù)定義了一些版型,如接口是類的 版型,子系統(tǒng)是包的版型等。當(dāng)然用戶也可 以自己定義版型。 actor1 actor2 actor3 icon形式label形式decoration形式 圖5.19 actor的3種表示方式 由于actor事實(shí)上就是一個(gè)類,所以也可以 給actor添加屬性和操作,就像給類添加屬 性和操作一樣。如圖5.20所示是帶有操作的 actor的例子。 除了預(yù)定義的版型外,用戶也可以自定義 版型,如圖5.21所示是自定義版型的例子。 management window 圖5.20 actor及其操作 圖5.21 自定義版型 uml中有3種主要的類的版型,即邊界類、 控制類和實(shí)
16、體類。在進(jìn)行oo分析和設(shè)計(jì)時(shí), 如何確定系統(tǒng)中的類是一個(gè)比較困難的工作, 引入邊界類、控制類和實(shí)體類的概念有助于 分析和設(shè)計(jì)人員確定系統(tǒng)中的類。 邊界類位于系統(tǒng)與外界的交界處,窗體 (form)、對話框(dialog box)、報(bào)表 (report)以及表示通訊協(xié)議(如tcp/ip) 的類、直接與外部設(shè)備交互的類、直接與外 部系統(tǒng)交互的類等是邊界類的例子。 如圖5.22所示是uml中邊界類的3種表示方 式。 圖5.22 邊界類的3種表示方式 通過用例圖可以確定需要的邊界類。每個(gè) actor/use case對至少要有一個(gè)邊界類,但并 非每個(gè)actor/use case對都要生成唯一邊界類。 例
17、如多個(gè)actor啟動(dòng)同一use case時(shí),可以用 一個(gè)邊界類與系統(tǒng)通信。如圖5.23所示。 actor1 actor2 use case1 boundary class 圖5.23 多個(gè)參與者使用同一個(gè)邊界類 實(shí)體類保存要放進(jìn)持久存儲體的信息。所 謂持久存儲體就是數(shù)據(jù)庫、文件等可以永久 存儲數(shù)據(jù)的介質(zhì)。 圖5.24 實(shí)體類的3種表示方式 一般地,實(shí)體類可以通過事件流和交互圖 發(fā)現(xiàn),實(shí)體類通常用領(lǐng)域術(shù)語命名。 通常,每個(gè)實(shí)體類在數(shù)據(jù)庫中有相應(yīng)的表, 實(shí)體類中的屬性對應(yīng)數(shù)據(jù)庫中表的字段。但 這并不是意味著,實(shí)體類和數(shù)據(jù)庫中的表是 一一對應(yīng)的。有可能是一個(gè)實(shí)體類對應(yīng)多個(gè) 表,也可能是多個(gè)實(shí)體類對應(yīng)
18、一個(gè)表。至于 如何對應(yīng),已經(jīng)是數(shù)據(jù)庫模式設(shè)計(jì)方面的問 題了。 控制類是負(fù)責(zé)其他類工作的類。圖5.25是 uml中控制類的3種表示方式。 圖5.25 控制類的3種表示方式 類加上他們之間得關(guān)系就構(gòu)成了類圖,類 圖中可以包含接口、包、關(guān)系等建模元素, 也可以包含對象、鏈等實(shí)例。類、對象和他 們之間的關(guān)系是面向?qū)ο蠹夹g(shù)中最基本的元 素,類圖可以說是uml中的核心。 類圖描述的是類和類之間的靜態(tài)關(guān)系。與 數(shù)據(jù)模型不同,類圖不僅顯示了信息的結(jié)構(gòu), 同時(shí)還描述了系統(tǒng)的行為。 概念層(conceptual)類圖描述應(yīng)用領(lǐng)域中的概念, 一般這些概念和類又很自然的聯(lián)系,但兩者并沒 有直接的映射關(guān)系。畫概念層類圖
19、時(shí),很少考慮 或不考慮實(shí)現(xiàn)問題,因此,概念層類圖應(yīng)獨(dú)立于 具體的程序設(shè)計(jì)語言。 說明層(specification)類圖描述軟件的接口部分, 而不是軟件的實(shí)現(xiàn)部分。這個(gè)接口可能因?yàn)閷?shí)現(xiàn) 環(huán)境、運(yùn)行特性或者開發(fā)商的不同而有多種不同 的實(shí)現(xiàn)。 實(shí)現(xiàn)層(implementation)類圖才真正考慮類的實(shí) 現(xiàn)問題,提供類的實(shí)現(xiàn)細(xì)節(jié)。 如圖5.26所示是同一個(gè)circle類的3個(gè)不同 層次的情況。 circle 概念層 說明層 實(shí)現(xiàn)層 確定系統(tǒng)中的類是oo分析和設(shè)計(jì)的核心工 作。但類的確定是一個(gè)需要技巧的工作,系 統(tǒng)中的有些類可能比較容易發(fā)現(xiàn),而另外一 些類可能很難發(fā)現(xiàn),不可能存在一個(gè)簡單的 算法來找到
20、所有類。 尋找類的一些技巧包括: 根據(jù)用例描述中的名詞確定類的候選者。 使用crc分析法尋找類。crc是類(class)、 職責(zé)(responsibility)和協(xié)作(collaboration) 的簡稱,crc分析法根據(jù)類所要扮演的職責(zé) 來確定類。 根據(jù)邊界類、控制類和實(shí)體類的劃分來幫助 發(fā)現(xiàn)系統(tǒng)中的類。 對領(lǐng)域進(jìn)行分析,或利用已有的領(lǐng)域分析結(jié) 果得到類。 參考設(shè)計(jì)模式來確定類。第14章將介紹軟件 的設(shè)計(jì)模式,以及如何根據(jù)設(shè)計(jì)模式得到好 的設(shè)計(jì)。 根據(jù)某些軟件開發(fā)過程提供的指導(dǎo)原則進(jìn)行 尋找類的工作。如在rup(rational unified process)中,有對分析和設(shè)計(jì)過程如何尋
21、找類的比較詳細(xì)的步驟說明,可以以這些說 明為準(zhǔn)則尋找類。 在構(gòu)造類圖時(shí),不要試圖使用所有的符號, 這個(gè)建議對于構(gòu)造別的圖也是適用的。在 uml中,有些符號僅用于特殊的場合和方 法中,有些符號只有在需要時(shí)才去使用。 uml中大約20%的建模元素可以滿足80%的 建模要求。 構(gòu)造類圖時(shí)不要過早陷入實(shí)現(xiàn)細(xì)節(jié),應(yīng)該根據(jù)項(xiàng) 目開發(fā)的不同階段,采用不同層次的類圖。如果 處于分析階段,應(yīng)畫概念層類圖;當(dāng)開始著手軟 件設(shè)計(jì)時(shí),應(yīng)畫說明層類圖;當(dāng)考察某個(gè)特定的 實(shí)現(xiàn)技術(shù)時(shí),則應(yīng)畫實(shí)現(xiàn)層類圖。 對于構(gòu)造好的類圖,應(yīng)考慮該模型是否真實(shí)地反 映了應(yīng)用領(lǐng)域的實(shí)際情況,模型和模型中的元素 是否有清楚的目的和職責(zé),模型和模
22、型元素的大 小是否適中,對過于復(fù)雜的模型和模型元素應(yīng)將 其分解成幾個(gè)相互合作的部分。 下面給出建立類圖的步驟: (1)研究分析問題領(lǐng)域,確定系統(tǒng)的需求。 (2)確定類,明確類的含義和職責(zé),確定屬 性和操作。 (3)確定類之間的關(guān)系。把類之間的關(guān)系用 關(guān)聯(lián)、泛化、聚集、組合、依賴等關(guān)系表達(dá) 出來。 (4)調(diào)整和細(xì)化已得到的類和類之間的關(guān)系, 解決諸如命名沖突、功能重復(fù)等問題。 (5)繪制類圖并增加相應(yīng)的說明。 建立類圖的過程就是對領(lǐng)域及其解決方案 的分析和設(shè)計(jì)過程。類的獲取是一個(gè)依賴于 人的創(chuàng)造力的過程,有時(shí)需要與領(lǐng)域?qū)<液?作,對研究領(lǐng)域進(jìn)行仔細(xì)分析,抽象出領(lǐng)域 中的概念,定義其含義及相互關(guān)系
23、,分析出 系統(tǒng)類,并用領(lǐng)域中的術(shù)語為類命名。 領(lǐng)域分析(domain analysis)也稱問題域分 析(problem domain analysis),按 a.spencer peterson的定義per91,領(lǐng)域分析 是:(1)通過對某一領(lǐng)域中的已有應(yīng)用系 統(tǒng)、理論、技術(shù)、開發(fā)史等的研究,來標(biāo)識、 收集、組織、分析和標(biāo)示領(lǐng)域模型及軟件體 系結(jié)構(gòu)的過程;(2)根據(jù)(1)中進(jìn)行的過 程得到的結(jié)果。 對于每個(gè)步驟,圖中的plan給出了這個(gè)步 驟和各子步驟的關(guān)系。如對于1.2數(shù)據(jù)收集 這一步,有建立數(shù)據(jù)目錄、文獻(xiàn)檢查、獲取 專家知識這3個(gè)子步驟。數(shù)據(jù)收集和這3個(gè)子 步驟的關(guān)系用下面的符號來說明:
24、 對于oo設(shè)計(jì),主要是要求系統(tǒng)的設(shè)計(jì)結(jié)果要能適應(yīng)系 統(tǒng)新的需求變化,一旦需求發(fā)生變化,整個(gè)系統(tǒng)不用 做變動(dòng)或做很少的變動(dòng)就可以滿足新的需求。下面是 oo設(shè)計(jì)的幾條原則: 開閉原則(open/closed principle,ocp) liskov替換原則(liskov substitution principle,lsp) 依賴倒置原則(dependency inversion principle,dip) 接口分離原則(interface segregation principle,isp) 開閉原則指的是一個(gè)模塊在擴(kuò)展性方面應(yīng) 該是開放的,而在更改性方面應(yīng)該是封閉的。 這個(gè)原則說的是,在寫
25、模塊的時(shí)候,應(yīng)該盡 量使得模塊可以擴(kuò)展,并且在擴(kuò)展時(shí)不需要 對模塊的源代碼進(jìn)行修改。開閉原則最初是 由bertrand meyer提出來的mey88,在所有 的oo設(shè)計(jì)原則中,這個(gè)原則可能是最重要 的。 為了達(dá)到開閉原則的要求,在設(shè)計(jì)時(shí)要有 意識地使用接口進(jìn)行封裝等,采用抽象機(jī)制, 并利用oo中的多態(tài)技術(shù)。 圖5.28 打印輸出設(shè)計(jì)1 如圖5.29所示是改進(jìn)的設(shè)計(jì)。 圖5.29 打印輸出設(shè)計(jì)2 liskov替換原則最早是由liskov于1987年在 oopsla會(huì)議上提出來的lis88,這個(gè)原則 指的是子類可以替換父類出現(xiàn)在父類能出現(xiàn) 的任何地方。 圖5.30 liskov替換原則的圖示說明
26、依賴倒置原則指的是依賴關(guān)系應(yīng)該是盡量 依賴接口(或抽象類),而不是依賴于具體 類。為了說明依賴倒置原則,先看結(jié)構(gòu)化設(shè) 計(jì)中的依賴關(guān)系。如圖5.31所示。 主程序 模塊11 模塊1 模塊12模塊21 模塊2 模塊22模塊31 模塊3 模塊32 圖5.31 結(jié)構(gòu)化設(shè)計(jì)中的依賴關(guān)系 在面向?qū)ο蟮脑O(shè)計(jì)中,依賴關(guān)系正好是相 反的,即與具體實(shí)現(xiàn)有關(guān)的類是依賴于抽象 類或接口的,其依賴關(guān)系的結(jié)構(gòu)一般如圖 5.32所示。 interface1 abstractclass1 main abstractclass2 contreteclass1 contreteclass2 contreteclass3 cont
27、reteclass4 圖5.32 面向?qū)ο笤O(shè)計(jì)中的依賴關(guān)系 接口分離原則指的是在設(shè)計(jì)時(shí)采用多個(gè)與 特定客戶類(client)有關(guān)的接口比采用一 個(gè)通用的接口要好。也就是說,一個(gè)類要給 多個(gè)客戶類使用,那么可以為每個(gè)客戶類創(chuàng) 建一個(gè)接口,然后這個(gè)類實(shí)現(xiàn)所有這些接口, 而不要只創(chuàng)建一個(gè)接口,其中包含了所有客 戶類需要的方法,然后這個(gè)類實(shí)現(xiàn)這個(gè)接口。 不同類中相似方法的名字應(yīng)該相同。例如, 對于輸入/輸出方法,不要在一個(gè)類中用 input/output命名,在另一個(gè)類中用read/write 命名。 遵守已有的約定俗成的習(xí)慣。例如,對類 名、方法名、屬性名的命名應(yīng)遵守已有的約 定,或者遵守開發(fā)機(jī)構(gòu)中
28、規(guī)定的命名方法。 盡量減少消息模式的數(shù)目。只要可能,就 使消息具有一致的模式,以利于理解。例如, 不要在一個(gè)消息中,其第一個(gè)參數(shù)表示消息 發(fā)送者的url地址,而在另一個(gè)消息中,是 最后一個(gè)參數(shù)表示消息發(fā)送者的url地址。 設(shè)計(jì)簡單的類。類的職責(zé)要明確,不要在 類中提供太多的服務(wù),應(yīng)該從類名就可以較 容易地推斷出類的用途。 泛化結(jié)構(gòu)的深度要適當(dāng)。類之間的泛化關(guān) 系增加了類之間的耦合性。除非是在特殊情 況下(如圖形用戶界面的類庫),一般不要 設(shè)計(jì)有很深層次的類的泛化關(guān)系。 定義簡單的方法。一個(gè)類中的方法不應(yīng)太 復(fù)雜。如果一個(gè)方法太大,很可能就是這個(gè) 方法包含的功能太多,而有些功能可能是不 相關(guān)的。 評價(jià)設(shè)計(jì)質(zhì)量的方法之一是觀察它在一段 時(shí)間內(nèi)的易變性。一般好的設(shè)計(jì)變動(dòng)軌跡如 圖5.35所示。 圖5.35 設(shè)計(jì)變動(dòng)軌跡 對象圖表示一組對象及他們之間的聯(lián)系。 對象圖是系統(tǒng)的詳細(xì)狀態(tài)在某一時(shí)刻的快照, 常用于表示復(fù)雜的類圖的一個(gè)實(shí)例。 uml中對象圖與類圖具有相同的表示形式, 對象圖
溫馨提示
- 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)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)保直付醫(yī)院綠色通道建設(shè)與管理協(xié)議
- 未成年人探視期間安全保護(hù)及責(zé)任落實(shí)協(xié)議
- 新能源汽車行業(yè)區(qū)域分銷合作伙伴合同
- 護(hù)理支持性理論
- 傳染病日常衛(wèi)生監(jiān)督實(shí)務(wù)要點(diǎn)
- 腫瘤血栓診療難點(diǎn)與對策
- 腦外科引流護(hù)理規(guī)范與實(shí)踐
- 大班語言:冬天的禮物
- 酒店安保服務(wù)協(xié)議書(2篇)
- 轉(zhuǎn)運(yùn)病人護(hù)理查房
- GB/T 33289-2016館藏磚石文物保護(hù)修復(fù)記錄規(guī)范
- GB/T 2506-2005船用搭焊鋼法蘭
- GB/T 15256-2014硫化橡膠或熱塑性橡膠低溫脆性的測定(多試樣法)
- 小學(xué)三年級下冊道德與法治課件-10.愛心的傳遞者-部編版(25張)課件
- GB/T 1095-2003平鍵鍵槽的剖面尺寸
- 嬰幼兒食品領(lǐng)域:貝因美企業(yè)組織結(jié)構(gòu)及部門職責(zé)
- 《光的直線傳播》教學(xué)設(shè)計(jì) 省賽一等獎(jiǎng)
- 人工智能的誕生簡述課件
- 子宮破裂的護(hù)理查房
- 出貨檢驗(yàn)報(bào)告
- 無機(jī)材料科學(xué)基礎(chǔ)-第3章-晶體結(jié)構(gòu)與晶體中的缺陷
評論
0/150
提交評論