面向?qū)ο蟪绦蛟O(shè)計(jì)理論篇_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)理論篇_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)理論篇_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)理論篇_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)理論篇_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性o 封裝性封裝性o 繼承性繼承性o 多態(tài)性多態(tài)性 3 . 封裝性封裝性3.3. .什么是封裝什么是封裝第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性 封裝就是將一個(gè)數(shù)據(jù)和與這個(gè)數(shù)據(jù)有關(guān)的操作集封裝就是將一個(gè)數(shù)據(jù)和與這個(gè)數(shù)據(jù)有關(guān)的操作集合放在一起,形成一個(gè)能動(dòng)的實(shí)體合放在一起,形成一個(gè)能動(dòng)的實(shí)體對(duì)象,用戶不對(duì)象,用戶不必要知道對(duì)象行為的實(shí)現(xiàn)細(xì)節(jié),只需要根據(jù)對(duì)象提供必要知道對(duì)象行為的實(shí)現(xiàn)細(xì)節(jié),只需要根據(jù)對(duì)象提供的外部特性接口訪問對(duì)象即可。因此,從用戶的角度的外部特性接口訪問對(duì)象即可。因此,從用戶的角度看,就象一個(gè)看,就象一個(gè)“黑匣子黑匣子”

2、。封裝的條件:封裝的條件: 具有一個(gè)清楚的邊界;具有一個(gè)清楚的邊界; 具有一個(gè)接口;具有一個(gè)接口;1. 保護(hù)內(nèi)部代碼不被其他對(duì)象直接修改;保護(hù)內(nèi)部代碼不被其他對(duì)象直接修改; 3 . 封裝性封裝性3.3.2.2什么是協(xié)議什么是協(xié)議第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性 協(xié)議是一個(gè)對(duì)象對(duì)外服務(wù)的說明,是一個(gè)對(duì)協(xié)議是一個(gè)對(duì)象對(duì)外服務(wù)的說明,是一個(gè)對(duì)象所能接受的所有公有消息的集合。象所能接受的所有公有消息的集合。舉例舉例 3 . 封裝性封裝性3.3.3 .3 面向?qū)ο笙到y(tǒng)的封裝性面向?qū)ο笙到y(tǒng)的封裝性第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性 面向?qū)ο蟮姆庋b性是一種信息隱藏技術(shù):

3、面向?qū)ο蟮姆庋b性是一種信息隱藏技術(shù):q 目的:使用者與開發(fā)者分開目的:使用者與開發(fā)者分開 系統(tǒng)設(shè)計(jì)員系統(tǒng)設(shè)計(jì)員 表明所提供的服務(wù)界面表明所提供的服務(wù)界面 用戶或應(yīng)用程序員用戶或應(yīng)用程序員 對(duì)象提供一組服務(wù),屏蔽內(nèi)部對(duì)象提供一組服務(wù),屏蔽內(nèi)部 開發(fā)程序員開發(fā)程序員 對(duì)象實(shí)現(xiàn)、編碼對(duì)象實(shí)現(xiàn)、編碼q 涵義:主要是對(duì)象的封裝,但涵義:主要是對(duì)象的封裝,但封裝的含義不僅僅是封裝的含義不僅僅是數(shù)據(jù)隱藏,它意味著任何形式的隱藏,如類的封裝。數(shù)據(jù)隱藏,它意味著任何形式的隱藏,如類的封裝。 3 . 2 繼承性繼承性 3.2.1 3.2.1 繼承的引入繼承的引入第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性

4、q 繼承表達(dá)了一種對(duì)象類的相交關(guān)系繼承表達(dá)了一種對(duì)象類的相交關(guān)系q 繼承的幾個(gè)特征:繼承的幾個(gè)特征: 共享:數(shù)據(jù)和代碼共享:數(shù)據(jù)和代碼 細(xì)微差別與新增細(xì)微差別與新增 層次結(jié)構(gòu)層次結(jié)構(gòu)q 繼承的作用:繼承的作用: 減少代碼冗余減少代碼冗余 通過協(xié)調(diào)減少相互之間的接口和界面通過協(xié)調(diào)減少相互之間的接口和界面 3 . 2 繼承性繼承性 3.2.1 3.2.1 繼承的分類繼承的分類第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性繼承繼承從繼承源劃分從繼承源劃分從繼承內(nèi)容劃分從繼承內(nèi)容劃分單繼承單繼承多繼承多繼承取代繼承取代繼承包含繼承包含繼承受限繼承受限繼承特化繼承特化繼承說明:繼承關(guān)系存在與類與類

5、之間說明:繼承關(guān)系存在與類與類之間 3 . 2 繼承性繼承性 3.2.1 3.2.1 繼承與封裝的關(guān)系繼承與封裝的關(guān)系第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性q 相似性:都是一種共享代碼的手段相似性:都是一種共享代碼的手段q 繼承是一種靜態(tài)共享代碼的手段繼承是一種靜態(tài)共享代碼的手段q 封裝是一種動(dòng)態(tài)共享代碼的手段封裝是一種動(dòng)態(tài)共享代碼的手段q 區(qū)別:針對(duì)的層次不同區(qū)別:針對(duì)的層次不同q 封裝性主要是指對(duì)象的封裝封裝性主要是指對(duì)象的封裝q 繼承是類的機(jī)制,是一種靜態(tài)機(jī)制繼承是類的機(jī)制,是一種靜態(tài)機(jī)制q 對(duì)象是類的實(shí)例,也許是派生類的實(shí)例對(duì)象是類的實(shí)例,也許是派生類的實(shí)例 也許是基類的

6、實(shí)例也許是基類的實(shí)例 3 . 2 繼承性繼承性 3.2.1 3.2.1 繼承與委托的關(guān)系繼承與委托的關(guān)系第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性q 相似性:節(jié)省代碼相似性:節(jié)省代碼q 派生類通過繼承共享了基類的代碼派生類通過繼承共享了基類的代碼q 委托是一個(gè)對(duì)象通過其他對(duì)象完成操作委托是一個(gè)對(duì)象通過其他對(duì)象完成操作q 區(qū)別:性質(zhì)不同區(qū)別:性質(zhì)不同q 繼承是靜態(tài)關(guān)系繼承是靜態(tài)關(guān)系q 委托既可以靜態(tài)定義也可以動(dòng)態(tài)定義委托既可以靜態(tài)定義也可以動(dòng)態(tài)定義 3 . 2 繼承性繼承性 3.2.1 3.2.1 類的層次類的層次第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性 類的層次可以清楚類

7、的層次可以清楚有效的表示現(xiàn)實(shí)世界中有效的表示現(xiàn)實(shí)世界中事物的分類問題。事物的分類問題。Class A/Class B : public A/Class C : public B/舉例:舉例:Visual C+中類的層次中類的層次 3 . 2 繼承性繼承性 3.2.1 3.2.1 單繼承與多繼承單繼承與多繼承第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性ABCDEABCDEF 3 . 2 繼承性繼承性 3.2.1 3.2.1 面向?qū)ο笙到y(tǒng)的繼承性面向?qū)ο笙到y(tǒng)的繼承性第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性繼承機(jī)制的優(yōu)點(diǎn):繼承機(jī)制的優(yōu)點(diǎn): 清晰體現(xiàn)類層次結(jié)構(gòu)清晰體現(xiàn)類層次結(jié)構(gòu) 代

8、碼共享以減少冗余代碼共享以減少冗余 減少接口和界面,容易維護(hù)減少接口和界面,容易維護(hù) 代碼傳播的有效手段代碼傳播的有效手段 是構(gòu)造、建立和擴(kuò)充新類的有效手段是構(gòu)造、建立和擴(kuò)充新類的有效手段 3 . 3 多態(tài)性多態(tài)性 3.3.1 3.3.1 重載的概念重載的概念第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性 重載的含義是指通過為函數(shù)和運(yùn)算符創(chuàng)建附加重載的含義是指通過為函數(shù)和運(yùn)算符創(chuàng)建附加定義而使他們的名字可以重載,即相同名字的函數(shù)定義而使他們的名字可以重載,即相同名字的函數(shù)或運(yùn)算符在不同的場(chǎng)合可以表現(xiàn)出不同的行為?;蜻\(yùn)算符在不同的場(chǎng)合可以表現(xiàn)出不同的行為。q 函數(shù)重載函數(shù)重載q 運(yùn)算符重載

9、運(yùn)算符重載 3 . 3 多態(tài)性多態(tài)性 3.3.2 3.3.2 虛函數(shù)的概念虛函數(shù)的概念第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性 虛函數(shù)使用戶在一個(gè)類等級(jí)中可以使用相同虛函數(shù)使用戶在一個(gè)類等級(jí)中可以使用相同函數(shù)的多個(gè)版本,每一個(gè)版本均屬于類等級(jí)中的函數(shù)的多個(gè)版本,每一個(gè)版本均屬于類等級(jí)中的不同的類,究竟使用的是哪一個(gè)版本需要在運(yùn)行不同的類,究竟使用的是哪一個(gè)版本需要在運(yùn)行中決定。中決定。 注意:虛函數(shù)的各個(gè)版本中,其返回值、函注意:虛函數(shù)的各個(gè)版本中,其返回值、函數(shù)參數(shù)的個(gè)數(shù)和類型必須是一致的。數(shù)參數(shù)的個(gè)數(shù)和類型必須是一致的。 3 . 3 多態(tài)性多態(tài)性 3.3.3 3.3.3 抽象類

10、的概念抽象類的概念第三章:面向?qū)ο笙到y(tǒng)的特第三章:面向?qū)ο笙到y(tǒng)的特性性q 抽象類的作用在于將許多有關(guān)的類組織在一起,抽象類的作用在于將許多有關(guān)的類組織在一起,提供一個(gè)公共的基類,而那些被它組織在一起的提供一個(gè)公共的基類,而那些被它組織在一起的具體的類由它派生出來。它刻畫了公有行為的特具體的類由它派生出來。它刻畫了公有行為的特征,并通過繼承機(jī)制傳送給它的派生類。征,并通過繼承機(jī)制傳送給它的派生類。q 抽象類只描述與這類對(duì)象有關(guān)的協(xié)議和協(xié)議消息抽象類只描述與這類對(duì)象有關(guān)的協(xié)議和協(xié)議消息的部分實(shí)現(xiàn),完整的實(shí)現(xiàn)留給它的派生類來具體的部分實(shí)現(xiàn),完整的實(shí)現(xiàn)留給它的派生類來具體完成。完成。q 抽象類型是不能

11、創(chuàng)建具體對(duì)象的類型,即不能產(chǎn)抽象類型是不能創(chuàng)建具體對(duì)象的類型,即不能產(chǎn)生實(shí)例,只能建立它的派生類的對(duì)象。生實(shí)例,只能建立它的派生類的對(duì)象。 舉舉 例例 3 . 3 多態(tài)性多態(tài)性 3.3.3 3.3.3 面向?qū)ο笙到y(tǒng)的多態(tài)性面向?qū)ο笙到y(tǒng)的多態(tài)性第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性q 涵義:面向?qū)ο笙到y(tǒng)的多態(tài)性指的是,當(dāng)不同涵義:面向?qū)ο笙到y(tǒng)的多態(tài)性指的是,當(dāng)不同的對(duì)象收到相同的消息時(shí)產(chǎn)生不同的動(dòng)作。的對(duì)象收到相同的消息時(shí)產(chǎn)生不同的動(dòng)作。q C+語言支持兩種多態(tài):編譯時(shí)的多態(tài)性和運(yùn)語言支持兩種多態(tài):編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。編譯時(shí)的多態(tài)性是通過使用重載來行時(shí)的多態(tài)性。編譯時(shí)的

12、多態(tài)性是通過使用重載來實(shí)現(xiàn)的,是相對(duì)靜止的多態(tài)性。運(yùn)行時(shí)的多態(tài)性是實(shí)現(xiàn)的,是相對(duì)靜止的多態(tài)性。運(yùn)行時(shí)的多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的,到底運(yùn)行的哪個(gè)函數(shù)版本,通過虛函數(shù)來實(shí)現(xiàn)的,到底運(yùn)行的哪個(gè)函數(shù)版本,需要在運(yùn)行時(shí)找出發(fā)送消息的對(duì)象來確定。需要在運(yùn)行時(shí)找出發(fā)送消息的對(duì)象來確定。舉例舉例 總結(jié)總結(jié)第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性q概念:封裝、協(xié)議、繼承、委托、重載、多態(tài)、概念:封裝、協(xié)議、繼承、委托、重載、多態(tài)、 抽象類等。抽象類等。q 面向?qū)ο笙到y(tǒng)的多態(tài)性。面向?qū)ο笙到y(tǒng)的多態(tài)性。q 封裝與繼承的關(guān)系。封裝與繼承的關(guān)系。 3 . 封裝性封裝性3.3.2.2什么是協(xié)議什么是協(xié)議第三

13、章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性返回返回class studentprivate:char * name;int *major;void changmark();protect:int getmark();public:char * getname();char * getmajor();私有段:不向外界公開的私有段:不向外界公開的功能,只供對(duì)象自己使用。功能,只供對(duì)象自己使用。保護(hù)段:部分向外界宣保護(hù)段:部分向外界宣布的功能,只供自己及布的功能,只供自己及派生類對(duì)象使用。派生類對(duì)象使用。公有段:所有向外界宣公有段:所有向外界宣布的功能,可以響應(yīng)外布的功能,可以響應(yīng)外部的請(qǐng)求,是屬于部的請(qǐng)求,是屬于協(xié)議協(xié)議的內(nèi)容。的內(nèi)容。 3 . 2 繼承性繼承性第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性返回返回 3 . 3 多態(tài)性多態(tài)性 3.3.3 3.3.3 抽象類的概念抽象類的概念第三章:面向?qū)ο笙到y(tǒng)的特性第三章:面向?qū)ο笙到y(tǒng)的特性class shapeprivate:int x, y;/ public:void move( int int );virtual void rotate( int ) = 0; /定義純虛函數(shù)定義純虛函數(shù)Virtual void draw(); /定義虛函數(shù)定

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論