面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則_第1頁(yè)
面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則_第2頁(yè)
面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則_第3頁(yè)
面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則_第4頁(yè)
面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、11.1 面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則11.2 啟發(fā)規(guī)則11.3 軟件重用11.4 系統(tǒng)分解11.5 設(shè)計(jì)問(wèn)題域子系統(tǒng)11.6 設(shè)計(jì)人機(jī)交互子系統(tǒng)11.7 設(shè)計(jì)任務(wù)管理子系統(tǒng)11.8 設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)11.9 設(shè)計(jì)類中的服務(wù)11.10 設(shè)計(jì)關(guān)聯(lián)11.11 設(shè)計(jì)優(yōu)化分析是提取和整理用戶需求,并建立問(wèn)題域精確模型的過(guò)程。設(shè)計(jì)則是把分析階段得到的需求轉(zhuǎn)變成符合成本和質(zhì)量要求的、抽象的系統(tǒng)實(shí)現(xiàn)方案的過(guò)程。從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計(jì)(OOD),是一個(gè)逐漸擴(kuò)充模型的過(guò)程?;蛘哒f(shuō),面向?qū)ο笤O(shè)計(jì)就是用面向?qū)ο笥^點(diǎn)建立求解域模型的過(guò)程。盡管分析和設(shè)計(jì)的定義有明顯區(qū)別,但是在實(shí)際的軟件開(kāi)發(fā)過(guò)程中二者的界限是模糊的。許多

2、分析結(jié)果可以直接映射成設(shè)計(jì)結(jié)果,而在設(shè)計(jì)過(guò)程中又往往會(huì)加深和補(bǔ)充對(duì)系統(tǒng)需求的理解,從而進(jìn)一步完善分析結(jié)果。因此,分析和設(shè)計(jì)活動(dòng)是一個(gè)多次反復(fù)迭代的過(guò)程。面向?qū)ο蠓椒▽W(xué)在概念和表示方法上的一致性,保證了在各項(xiàng)開(kāi)發(fā)活動(dòng)之間的平滑(無(wú)縫)過(guò)渡,領(lǐng)域?qū)<液烷_(kāi)發(fā)人員能夠比較容易地跟蹤整個(gè)系統(tǒng)開(kāi)發(fā)過(guò)程,這是面向?qū)ο蠓椒ㄅc傳統(tǒng)方法比較起來(lái)所具有的一大優(yōu)勢(shì)。生命周期方法學(xué)把設(shè)計(jì)進(jìn)一步劃分成總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段,類似地,也可以把面向?qū)ο笤O(shè)計(jì)再細(xì)分為系統(tǒng)設(shè)計(jì)和對(duì)象設(shè)計(jì)。系統(tǒng)設(shè)計(jì)確定實(shí)現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu)。對(duì)象設(shè)計(jì)確定解空間中的類、關(guān)聯(lián)、接口形式及實(shí)現(xiàn)服務(wù)的算法。11.1 面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則所謂優(yōu)

3、秀設(shè)計(jì),就是權(quán)衡了各種因素,從而使得系統(tǒng)在其整個(gè)生命周期中的總開(kāi)銷最小的設(shè)計(jì)。對(duì)大多數(shù)軟件系統(tǒng)而言,60%以上的軟件費(fèi)用都用于軟件維護(hù),因此,優(yōu)秀軟件設(shè)計(jì)的一個(gè)主要特點(diǎn)就是容易維護(hù)?;仡櫍褐笇?dǎo)軟件設(shè)計(jì)的幾條基本原理這些原理在進(jìn)行面向?qū)ο笤O(shè)計(jì)時(shí)仍然成立,但是增加了一些與面向?qū)ο蠓椒芮邢嚓P(guān)的新特點(diǎn),從而具體化為下列的面向?qū)ο笤O(shè)計(jì)準(zhǔn)則。1. 模塊化面向?qū)ο筌浖_(kāi)發(fā)模式,很自然地支持了把系統(tǒng)分解成模塊的設(shè)計(jì)原理:對(duì)象就是模塊。它是把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的模塊。2. 抽象面向?qū)ο蠓椒ú粌H支持過(guò)程抽象,而且支持?jǐn)?shù)據(jù)抽象。類實(shí)際上是一種抽象數(shù)據(jù)類型,它對(duì)外開(kāi)放的公共接口構(gòu)成了

4、類的規(guī)格說(shuō)明(即協(xié)議),這種接口規(guī)定了外界可以使用的合法操作符,利用這些操作符可以對(duì)類實(shí)例中包含的數(shù)據(jù)進(jìn)行操作。使用者無(wú)須知道這些操作符的實(shí)現(xiàn)算法和類中數(shù)據(jù)元素的具體表示方法,就可以通過(guò)這些操作符使用類中定義的數(shù)據(jù)。通常把這類抽象稱為規(guī)格說(shuō)明抽象。3. 信息隱藏在面向?qū)ο蠓椒ㄖ?,信息隱藏通過(guò)對(duì)象的封裝性實(shí)現(xiàn):類結(jié)構(gòu)分離了接口與實(shí)現(xiàn),從而支持了信息隱藏。對(duì)于類的用戶來(lái)說(shuō),屬性的表示方法和操作的實(shí)現(xiàn)算法都應(yīng)該是隱藏的。4. 弱耦合耦合指一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連的緊密程度。在面向?qū)ο蠓椒ㄖ?,?duì)象是最基本的模塊,因此,耦合主要指不同對(duì)象之間相互關(guān)聯(lián)的緊密程度。弱耦合是優(yōu)秀設(shè)計(jì)的一個(gè)重要標(biāo)準(zhǔn),因?yàn)?/p>

5、這有助于使得系統(tǒng)中某一部分的變化對(duì)其他部分的影響降到最低程度。在理想情況下,對(duì)某一部分的理解、測(cè)試或修改,無(wú)須涉及系統(tǒng)的其他部分。一般說(shuō)來(lái),對(duì)象之間的耦合可分為兩大類,下面分別討論這兩類耦合:(1) 交互耦合如果對(duì)象之間的耦合通過(guò)消息連接來(lái)實(shí)現(xiàn),則這種耦合就是交互耦合。為使交互耦合盡可能松散,應(yīng)該遵守下述準(zhǔn)則:盡量降低消息連接的復(fù)雜程度。應(yīng)該盡量減少消息中包含的參數(shù)個(gè)數(shù),降低參數(shù)的復(fù)雜程度。減少對(duì)象發(fā)送(或接收)的消息數(shù)。(2) 繼承耦合與交互耦合相反,應(yīng)該提高繼承耦合程度。繼承是一般化類與特殊類之間耦合的一種形式。從本質(zhì)上看,通過(guò)繼承關(guān)系結(jié)合起來(lái)的基類和派生類,構(gòu)成了系統(tǒng)中粒度更大的模塊。因

6、此,它們彼此之間應(yīng)該結(jié)合得越緊密越好。為獲得緊密的繼承耦合,特殊類應(yīng)該確實(shí)是對(duì)它的一般化類的一種具體化。因此,如果一個(gè)派生類摒棄了它基類的許多屬性,則它們之間是松耦合的。在設(shè)計(jì)時(shí)應(yīng)該使特殊類盡量多繼承并使用其一般化類的屬性和服務(wù),從而更緊密地耦合到其一般化類。5. 強(qiáng)內(nèi)聚內(nèi)聚衡量一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。也可以把內(nèi)聚定義為:設(shè)計(jì)中使用的一個(gè)構(gòu)件內(nèi)的各個(gè)元素,對(duì)完成一個(gè)定義明確的目的所做出的貢獻(xiàn)程度。在設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚。在面向?qū)ο笤O(shè)計(jì)中存在下述3種內(nèi)聚。(1) 服務(wù)內(nèi)聚。(2) 類內(nèi)聚。(3) 一般-特殊內(nèi)聚。6. 可重用軟件重用是提高軟件開(kāi)發(fā)生產(chǎn)率和目標(biāo)系統(tǒng)質(zhì)量的重要途徑。

7、重用基本上從設(shè)計(jì)階段開(kāi)始。重用有兩方面的含義: 一是盡量使用已有的類(包括開(kāi)發(fā)環(huán)境提供的類庫(kù),及以往開(kāi)發(fā)類似系統(tǒng)時(shí)創(chuàng)建的類),二是如果確實(shí)需要?jiǎng)?chuàng)建新類,則在設(shè)計(jì)這些新類的協(xié)議時(shí),應(yīng)該考慮將來(lái)的可重復(fù)使用性。11.2 啟發(fā)規(guī)則人們使用面向?qū)ο蠓椒▽W(xué)開(kāi)發(fā)軟件的歷史雖然不長(zhǎng),但也積累了一些經(jīng)驗(yàn)??偨Y(jié)這些經(jīng)驗(yàn)得出了幾條啟發(fā)規(guī)則,它們往往能幫助軟件開(kāi)發(fā)人員提高面向?qū)ο笤O(shè)計(jì)的質(zhì)量。簡(jiǎn)要介紹以下規(guī)則的內(nèi)容:1. 設(shè)計(jì)結(jié)果應(yīng)該清晰易懂2. 一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)應(yīng)該使類等級(jí)中包含的層次數(shù)適當(dāng)。一般說(shuō)來(lái),在一個(gè)中等規(guī)模(大約包含100個(gè)類)的系統(tǒng)中,類等級(jí)層次數(shù)應(yīng)保持為7±2。不應(yīng)該僅僅從方便編碼

8、的角度出發(fā)隨意創(chuàng)建派生類,應(yīng)該使一般-特殊結(jié)構(gòu)與領(lǐng)域知識(shí)或常識(shí)保持一致。3. 設(shè)計(jì)簡(jiǎn)單的類4. 使用簡(jiǎn)單的協(xié)議5. 使用簡(jiǎn)單的服務(wù)6. 把設(shè)計(jì)變動(dòng)減至最小11.3 軟件重用 簡(jiǎn)要介紹:重用的概念、重用的等級(jí)。 重點(diǎn)介紹:類構(gòu)件以及類構(gòu)件的重用方式。類構(gòu)件的重用方式:(1) 實(shí)例重用 (2) 繼承重用 (3) 多態(tài)重用11.4 系統(tǒng)分解人類解決復(fù)雜問(wèn)題時(shí)普遍采用的策略是,“分而治之,各個(gè)擊破”。同樣,軟件工程師在設(shè)計(jì)比較復(fù)雜的應(yīng)用系統(tǒng)時(shí)普遍采用的策略,也是首先把系統(tǒng)分解成若干個(gè)比較小的部分,然后再分別設(shè)計(jì)每個(gè)部分。這樣做有利于降低設(shè)計(jì)的難度,有利于分工協(xié)作,也有利于維護(hù)人員對(duì)系統(tǒng)理解和維護(hù)。系統(tǒng)

9、的主要組成部分稱為子系統(tǒng)。通常根據(jù)所提供的功能來(lái)劃分子系統(tǒng)。一般說(shuō)來(lái),子系統(tǒng)的數(shù)目應(yīng)該與系統(tǒng)規(guī)?;酒ヅ洹8鱾€(gè)子系統(tǒng)之間應(yīng)該具有盡可能簡(jiǎn)單、明確的接口。接口確定了交互形式和通過(guò)子系統(tǒng)邊界的信息流,但是無(wú)須規(guī)定子系統(tǒng)內(nèi)部的實(shí)現(xiàn)算法。因此,可以相對(duì)獨(dú)立地設(shè)計(jì)各個(gè)子系統(tǒng)。在劃分和設(shè)計(jì)子系統(tǒng)時(shí),應(yīng)該盡量減少子系統(tǒng)彼此間的依賴性。采用面向?qū)ο蠓椒ㄔO(shè)計(jì)軟件系統(tǒng)時(shí),面向?qū)ο笤O(shè)計(jì)模型(即求解域的對(duì)象模型),與面向?qū)ο蠓治瞿P?即問(wèn)題域的對(duì)象模型)一樣,也由主題、類與對(duì)象、結(jié)構(gòu)、屬性、服務(wù)等5個(gè)層次組成。這5個(gè)層次一層比一層表示的細(xì)節(jié)更多,可以把這5個(gè)層次想象為整個(gè)模型的水平切片。此外,大多數(shù)系統(tǒng)的面向?qū)ο笤O(shè)計(jì)

10、模型,在邏輯上都由4大部分組成。這4大部分對(duì)應(yīng)于組成目標(biāo)系統(tǒng)的4個(gè)子系統(tǒng),它們分別是問(wèn)題域子系統(tǒng)、人機(jī)交互子系統(tǒng)、任務(wù)管理子系統(tǒng)和數(shù)據(jù)管理子系統(tǒng)。11.5 設(shè)計(jì)問(wèn)題域子系統(tǒng)通過(guò)面向?qū)ο蠓治鏊贸龅膯?wèn)題域精確模型,為設(shè)計(jì)問(wèn)題域子系統(tǒng)奠定了良好的基礎(chǔ),建立了完整的框架。只要可能,就應(yīng)該保持面向?qū)ο蠓治鏊⒌膯?wèn)題域結(jié)構(gòu)。通常,面向?qū)ο笤O(shè)計(jì)僅需從實(shí)現(xiàn)角度對(duì)問(wèn)題域模型做一些補(bǔ)充或修改,主要是增添、合并或分解類與對(duì)象、屬性及服務(wù),調(diào)整繼承關(guān)系等等。當(dāng)問(wèn)題域子系統(tǒng)過(guò)分復(fù)雜龐大時(shí),應(yīng)該把它進(jìn)一步分解成若干個(gè)更小的子系統(tǒng)。使用面向?qū)ο蠓椒▽W(xué)開(kāi)發(fā)軟件,能夠保持問(wèn)題域組織框架的穩(wěn)定性,從而便于追蹤分析、設(shè)計(jì)和編程

11、的結(jié)果。在設(shè)計(jì)與實(shí)現(xiàn)過(guò)程中所做的細(xì)節(jié)修改(例如,增加具體類,增加屬性或服務(wù)),并不影響開(kāi)發(fā)結(jié)果的穩(wěn)定性,因?yàn)橄到y(tǒng)的總體框架是基于問(wèn)題域的下面介紹,在面向?qū)ο笤O(shè)計(jì)過(guò)程中,可能對(duì)面向?qū)ο蠓治鏊贸龅膯?wèn)題域模型做的補(bǔ)充或修改。實(shí)例:已ATM系統(tǒng)為例,重點(diǎn)講授:重用已有的類、調(diào)整類繼承層次。11.6 設(shè)計(jì)人機(jī)交互子系統(tǒng)人機(jī)交互部分的設(shè)計(jì)結(jié)果,將對(duì)用戶情緒和工作效率產(chǎn)生重要影響。人機(jī)界面設(shè)計(jì)得好,則會(huì)使系統(tǒng)對(duì)用戶產(chǎn)生吸引力,用戶在使用系統(tǒng)的過(guò)程中會(huì)感到興奮,能夠激發(fā)用戶的創(chuàng)造力,提高工作效率;相反,人機(jī)界面設(shè)計(jì)得不好,用戶在使用過(guò)程中就會(huì)感到不方便、不習(xí)慣,甚至?xí)a(chǎn)生厭煩和惱怒的情緒。由于對(duì)人機(jī)界面的評(píng)

12、價(jià),在很大程度上由人的主觀因素決定,因此,使用由原型支持的系統(tǒng)化的設(shè)計(jì)策略,是成功地設(shè)計(jì)人機(jī)交互子系統(tǒng)的關(guān)鍵。在此僅從面向?qū)ο笤O(shè)計(jì)的角度補(bǔ)充講述一下設(shè)計(jì)人機(jī)交互子系統(tǒng)的策略。11.7 設(shè)計(jì)任務(wù)管理子系統(tǒng)雖然從概念上說(shuō),不同對(duì)象可以并發(fā)地工作,但是,在實(shí)際系統(tǒng)中,許多對(duì)象之間往往存在相互依賴關(guān)系。此外,在實(shí)際使用的硬件中,可能僅由一個(gè)處理器支持多個(gè)對(duì)象。因此,設(shè)計(jì)工作的一項(xiàng)重要內(nèi)容就是,確定哪些是必須同時(shí)動(dòng)作的對(duì)象,哪些是相互排斥的對(duì)象。然后進(jìn)一步設(shè)計(jì)任務(wù)管理子系統(tǒng)。舉例:ATM系統(tǒng)中設(shè)計(jì)任務(wù)管理子系統(tǒng)。11.8 設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)是系統(tǒng)存儲(chǔ)或檢索對(duì)象的基本設(shè)施,它建立在某種數(shù)據(jù)存

13、儲(chǔ)管理系統(tǒng)之上,并且隔離了數(shù)據(jù)存儲(chǔ)管理模式(文件、關(guān)系數(shù)據(jù)庫(kù)或面向?qū)ο髷?shù)據(jù)庫(kù))的影響。舉例:ATM系統(tǒng)中設(shè)計(jì)任務(wù)管理子系統(tǒng)。重點(diǎn):選擇數(shù)據(jù)存儲(chǔ)管理模式。11.9 設(shè)計(jì)類中的服務(wù) 11.9.1 設(shè)計(jì)類中應(yīng)有的服務(wù)需要綜合考慮對(duì)象模型、動(dòng)態(tài)模型和功能模型,才能正確確定類中應(yīng)有的服務(wù)。對(duì)象模型是進(jìn)行對(duì)象設(shè)計(jì)的基本框架。但是,面向?qū)ο蠓治龅贸龅膶?duì)象模型,通常只在每個(gè)類中列出很少幾個(gè)最核心的服務(wù)。設(shè)計(jì)者必須把動(dòng)態(tài)模型中對(duì)象的行為以及功能模型中的數(shù)據(jù)處理,轉(zhuǎn)換成由適當(dāng)?shù)念愃峁┑姆?wù)。一張狀態(tài)圖描繪了一類對(duì)象的生命周期,圖中的狀態(tài)轉(zhuǎn)換是執(zhí)行對(duì)象服務(wù)的結(jié)果。功能模型指明了系統(tǒng)必須提供的服務(wù)。狀態(tài)圖中狀態(tài)轉(zhuǎn)換

14、所觸發(fā)的動(dòng)作,在功能模型中有時(shí)可能擴(kuò)展成一張數(shù)據(jù)流圖。11.9.2 設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法在面向?qū)ο笤O(shè)計(jì)過(guò)程中還應(yīng)該進(jìn)一步設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法,主要應(yīng)該完成以下幾項(xiàng)工作。1. 設(shè)計(jì)實(shí)現(xiàn)服務(wù)的算法設(shè)計(jì)實(shí)現(xiàn)服務(wù)的算法時(shí),應(yīng)該考慮下列幾個(gè)因素:(1) 算法復(fù)雜度。通常選用復(fù)雜度較低(即效率較高)的算法,但也不要過(guò)分追求高效率,應(yīng)以能滿足用戶需求為準(zhǔn)。(2) 容易理解與容易實(shí)現(xiàn)。容易理解與容易實(shí)現(xiàn)的要求往往與高效率有矛盾,設(shè)計(jì)者應(yīng)該對(duì)這兩個(gè)因素適當(dāng)折衷。(3) 易修改。應(yīng)該盡可能預(yù)測(cè)將來(lái)可能做的修改,并在設(shè)計(jì)時(shí)預(yù)先做些準(zhǔn)備。2. 選擇數(shù)據(jù)結(jié)構(gòu)在分析階段,僅需考慮系統(tǒng)中需要的信息的邏輯結(jié)構(gòu),在面向?qū)ο笤O(shè)計(jì)過(guò)程

15、中,則需要選擇能夠方便、有效地實(shí)現(xiàn)算法的物理數(shù)據(jù)結(jié)構(gòu)。3. 定義內(nèi)部類和內(nèi)部操作在面向?qū)ο笤O(shè)計(jì)過(guò)程中,可能需要增添一些在需求陳述中沒(méi)有提到的類,這些新增加的類,主要用來(lái)存放在執(zhí)行算法過(guò)程中所得出的某些中間結(jié)果。11.10 設(shè)計(jì)關(guān)聯(lián)在對(duì)象模型中,關(guān)聯(lián)是聯(lián)結(jié)不同對(duì)象的紐帶,它指定了對(duì)象相互間的訪問(wèn)路徑。在面向?qū)ο笤O(shè)計(jì)過(guò)程中,設(shè)計(jì)人員必須確定實(shí)現(xiàn)關(guān)聯(lián)的具體策略。既可以選定一個(gè)全局性的策略統(tǒng)一實(shí)現(xiàn)所有關(guān)聯(lián),也可以分別為每個(gè)關(guān)聯(lián)選擇具體的實(shí)現(xiàn)策略,以與它在應(yīng)用系統(tǒng)中的使用方式相適應(yīng)。為了更好地設(shè)計(jì)實(shí)現(xiàn)關(guān)聯(lián)的途徑,首先應(yīng)該分析使用關(guān)聯(lián)的方式。在此講解:關(guān)聯(lián)的遍歷、實(shí)現(xiàn)單向關(guān)聯(lián)、實(shí)現(xiàn)雙向關(guān)聯(lián)以及關(guān)聯(lián)對(duì)象的實(shí)

16、現(xiàn)方法。11.11 設(shè)計(jì)優(yōu)化 11.11.1 確定優(yōu)先級(jí)系統(tǒng)的整體質(zhì)量與設(shè)計(jì)人員所制定的折衷方案密切相關(guān)。最終產(chǎn)品成功與否,在很大程度上取決于是否選擇好了系統(tǒng)目標(biāo)。最糟糕的情況是,沒(méi)有站在全局高度正確確定各項(xiàng)質(zhì)量指標(biāo)的優(yōu)先級(jí),以致系統(tǒng)中各個(gè)子系統(tǒng)按照相互對(duì)立的目標(biāo)做了優(yōu)化,將導(dǎo)致系統(tǒng)資源的嚴(yán)重浪費(fèi)。在折衷方案中設(shè)置的優(yōu)先級(jí)應(yīng)該是模糊的。事實(shí)上,不可能指定精確的優(yōu)先級(jí)數(shù)值(例如,速度48%,內(nèi)存25%,費(fèi)用8%,可修改性19%)。注意:最常見(jiàn)的情況,是在效率和清晰性之間尋求適當(dāng)?shù)恼壑苑桨浮O旅鎯尚」?jié)分別講述在優(yōu)化設(shè)計(jì)時(shí)提高效率的技術(shù),以及建立良好的繼承結(jié)構(gòu)的方法。11.11.2 提高效率的幾項(xiàng)技

17、術(shù)簡(jiǎn)要介紹以下技術(shù):1. 增加冗余關(guān)聯(lián)以提高訪問(wèn)效率2. 調(diào)整查詢次序3. 保留派生屬性11.11.3 調(diào)整繼承關(guān)系(重點(diǎn))在面向?qū)ο笤O(shè)計(jì)過(guò)程中,建立良好的繼承關(guān)系是優(yōu)化設(shè)計(jì)的一項(xiàng)重要內(nèi)容。繼承關(guān)系能夠?yàn)橐粋€(gè)類族定義一個(gè)協(xié)議,并能在類之間實(shí)現(xiàn)代碼共享以減少冗余。一個(gè)基類和它的子孫類在一起稱為一個(gè)類繼承。在面向?qū)ο笤O(shè)計(jì)中,建立良好的類繼承是非常重要的。利用類繼承能夠把若干個(gè)類組織成一個(gè)邏輯結(jié)構(gòu)。下面講解與建立類繼承有關(guān)的問(wèn)題。1. 抽象與具體在設(shè)計(jì)類繼承時(shí),很少使用純粹自頂向下的方法。通常的作法是,首先創(chuàng)建一些滿足具體用途的類,然后對(duì)它們進(jìn)行歸納,一旦歸納出一些通用的類以后,往往可以根據(jù)需要再派生出具體類。在進(jìn)行了一些具體化(即專門化)的工作之后,也許就應(yīng)該再次歸納了。對(duì)于某些類繼承來(lái)說(shuō),這是一個(gè)持續(xù)不斷的演化過(guò)程。圖示11.13:用一個(gè)人們?cè)谌粘I钪惺煜さ睦樱f(shuō)明上述從具體到抽象,再到具體的過(guò)程。2. 為提高繼承程度而修改類定義如果在一組相似的類中存在公共的屬性和公共的行為,則可以把這些公共的屬性和行為抽取出來(lái)放在一

溫馨提示

  • 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)論