第五章 C++面向?qū)ο蟪绦蛟O計方法_第1頁
第五章 C++面向?qū)ο蟪绦蛟O計方法_第2頁
第五章 C++面向?qū)ο蟪绦蛟O計方法_第3頁
第五章 C++面向?qū)ο蟪绦蛟O計方法_第4頁
第五章 C++面向?qū)ο蟪绦蛟O計方法_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Linux 系統(tǒng)系統(tǒng)C語言程序設計語言程序設計教教 師師: 胡胡 青青QQ群:群:337937836LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法主要內(nèi)容主要內(nèi)容學習目標:學習目標:v(1 1)掌握面向過程和面向?qū)ο缶幊痰奶兀┱莆彰嫦蜻^程和面向?qū)ο缶幊痰奶攸c和不同點和不同v(2 2)能夠?qū)ⅲ┠軌驅(qū) C語言源程序簡單轉(zhuǎn)變成語言源程序簡單轉(zhuǎn)變成C+C+書寫風格書寫風格LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 面向過程的程序設計面向過程的程序設計(The Procedure-Oriented Programming)

2、(The Procedure-Oriented Programming)方法誕生于方法誕生于2020世紀世紀6060年代,其后風行全球,成為軟件開發(fā)的年代,其后風行全球,成為軟件開發(fā)的基礎。基礎。特點:特點: 面向過程程序設計采用結(jié)構(gòu)化思想,按照人們解決問面向過程程序設計采用結(jié)構(gòu)化思想,按照人們解決問題的習慣進行編程;題的習慣進行編程; 總的設計思路是:總的設計思路是: 自頂向下,逐步求精;自頂向下,逐步求精;在面向過程的程序中在面向過程的程序中 所有所有數(shù)據(jù)是公開數(shù)據(jù)是公開的;的;面向過程的程序設計面向過程的程序設計方法方法本質(zhì)上是過程驅(qū)動。本質(zhì)上是過程驅(qū)動。LOGOC+面向?qū)ο蟮某绦蛟O計方

3、法面向?qū)ο蟮某绦蛟O計方法 面向?qū)ο蟪绦蛟O計的基本思想是現(xiàn)實世界由各種對象面向?qū)ο蟪绦蛟O計的基本思想是現(xiàn)實世界由各種對象組成;組成; 面向?qū)ο蟪绦蛟O計的基石是:類和對象。面向?qū)ο蟪绦蛟O計的基石是:類和對象。 類是具有相同屬性結(jié)構(gòu)和操作行為的一組對象共性的類是具有相同屬性結(jié)構(gòu)和操作行為的一組對象共性的抽象;對象是描述客觀事物的屬性結(jié)構(gòu)及定義在該結(jié)抽象;對象是描述客觀事物的屬性結(jié)構(gòu)及定義在該結(jié)構(gòu)上的一組操作的結(jié)合體。在此,程序被描述為:構(gòu)上的一組操作的結(jié)合體。在此,程序被描述為:程序程序 = =(對象(對象 + + 對象對象 + + )對象對象 = =(數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu) + + 算法算法) ) 對

4、象之間通過消息和方法機制完成相應的操作對象之間通過消息和方法機制完成相應的操作。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 以對象為基礎的程序設計可以保以對象為基礎的程序設計可以保障數(shù)據(jù)的安全性;障數(shù)據(jù)的安全性; 類的繼承使代碼重用成為可能;類的繼承使代碼重用成為可能; 類對數(shù)據(jù)結(jié)構(gòu)和算法的綁定使得類對數(shù)據(jù)結(jié)構(gòu)和算法的綁定使得程序便于修改和調(diào)試,便于程序程序便于修改和調(diào)試,便于程序的維護和擴充的維護和擴充; 面向?qū)ο蟮某绦虮举|(zhì)上是事件驅(qū)面向?qū)ο蟮某绦虮举|(zhì)上是事件驅(qū)動的;動的; 對象是數(shù)據(jù)和操作代碼的完整對象是數(shù)據(jù)和操作代碼的完整結(jié)合體。各個對象通過消息傳遞結(jié)合體。各個對象通過消息

5、傳遞而相互作用。而相互作用。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟪绦蛟O計語言有以下四個特征:面向?qū)ο蟪绦蛟O計語言有以下四個特征: 抽象性抽象性 - - 許多實體的共性產(chǎn)生類;許多實體的共性產(chǎn)生類; 封裝性封裝性 - - 類將數(shù)據(jù)和操作封裝為用戶自定義的抽象數(shù)類將數(shù)據(jù)和操作封裝為用戶自定義的抽象數(shù)據(jù)類型;據(jù)類型; 繼承性繼承性 - - 類能被復用,具有繼承(派生)機制;類能被復用,具有繼承(派生)機制; 多態(tài)性多態(tài)性 - - 具有動態(tài)聯(lián)編機制。具有動態(tài)聯(lián)編機制。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法v 面向過程以算法為中心面向過程以算法為中心,由算法

6、完成對數(shù)據(jù)的,由算法完成對數(shù)據(jù)的操作;操作;v 面向?qū)ο蠹夹g(shù)是以屬性面向?qū)ο蠹夹g(shù)是以屬性為中心為中心,以消息和方法,以消息和方法機制完成對對象的操作機制完成對對象的操作,對象作為數(shù)據(jù)而不是,對象作為數(shù)據(jù)而不是作為過程被描述。作為過程被描述。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法C+C+語言全面兼容語言全面兼容C C,除了具備,除了具備C C語言的特點外,還具語言的特點外,還具有以下特點:有以下特點:全面兼容全面兼容C C語言,全面支持面向過程的結(jié)構(gòu)化程序設計;語言,全面支持面向過程的結(jié)構(gòu)化程序設計;全面支持面向?qū)ο蟪绦蛟O計全面支持面向?qū)ο蟪绦蛟O計以對象為基本模塊,使程序模塊的

7、劃分更合理,模塊的獨以對象為基本模塊,使程序模塊的劃分更合理,模塊的獨立性更強,程序的可讀性、可理解性、可重用性、可擴充立性更強,程序的可讀性、可理解性、可重用性、可擴充性、可測試性和可維護性等更好,程序結(jié)構(gòu)更加合理。性、可測試性和可維護性等更好,程序結(jié)構(gòu)更加合理。全面支持面向過程和面向?qū)ο蟮幕旌暇幊蹋浞职l(fā)揮兩類全面支持面向過程和面向?qū)ο蟮幕旌暇幊?,充分發(fā)揮兩類編程技術(shù)的優(yōu)勢。編程技術(shù)的優(yōu)勢。 LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 一般意義上的對象一般意義上的對象 是現(xiàn)實世界中一個實際存在的事物。是現(xiàn)實世界中一個實際存在的事物。 可以是有形的(比如一輛汽車),也可以是無形

8、的(可以是有形的(比如一輛汽車),也可以是無形的(比如一項計劃)。比如一項計劃)。 是構(gòu)成世界的一個獨立單位,具有:是構(gòu)成世界的一個獨立單位,具有: 靜態(tài)特征:可以用某種數(shù)據(jù)來描述靜態(tài)特征:可以用某種數(shù)據(jù)來描述 動態(tài)特征:對象所表現(xiàn)的行為或具有的功能。動態(tài)特征:對象所表現(xiàn)的行為或具有的功能。面向?qū)ο蠓椒ㄖ械膶ο竺嫦驅(qū)ο蠓椒ㄖ械膶ο?是系統(tǒng)用來描述客觀事物的一個實體,它是用來構(gòu)成是系統(tǒng)用來描述客觀事物的一個實體,它是用來構(gòu)成系統(tǒng)的一個基本單位。對象由一組屬性和一組行為構(gòu)系統(tǒng)的一個基本單位。對象由一組屬性和一組行為構(gòu)成。成。 屬性:用來描述對象靜態(tài)特征的數(shù)據(jù)項。屬性:用來描述對象靜態(tài)特征的數(shù)據(jù)項。

9、 行為:用來描述對象動態(tài)特征的操作。行為:用來描述對象動態(tài)特征的操作。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 分類分類人類通常的思維方法人類通常的思維方法分類所依據(jù)的原則分類所依據(jù)的原則抽象抽象 忽略事物的非本質(zhì)特征,只注意那些與當前目標有關的本忽略事物的非本質(zhì)特征,只注意那些與當前目標有關的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念。分為一類,得出一個抽象的概念。 例如,石頭、樹木、汽車、房屋等都是人們在長期的生產(chǎn)例如,石頭、樹木、汽車、房屋等都是人們在長期的生產(chǎn)和生活實踐中抽象出的概念

10、和生活實踐中抽象出的概念。面向?qū)ο蠓椒ㄖ械拿嫦驅(qū)ο蠓椒ㄖ械念愵?具有相同屬性和行為的一組對象的集合具有相同屬性和行為的一組對象的集合 為屬于該類的全部對象提供了抽象的描述,包括屬性和行為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個主要部分。為兩個主要部分。 類與對象的關系:類與對象的關系:猶如模具與鑄件之間的關系,一個屬于某類的對象稱為該猶如模具與鑄件之間的關系,一個屬于某類的對象稱為該類的一個實例。類的一個實例。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 封裝封裝把對象的屬性和行為結(jié)合成一個獨立的系統(tǒng)單位把對象的屬性和行為結(jié)合成一個獨立的系統(tǒng)單位盡可能隱蔽對象的內(nèi)部細

11、節(jié)。對外形成一個邊界(或者說一盡可能隱蔽對象的內(nèi)部細節(jié)。對外形成一個邊界(或者說一道屏障),只保留有限的對外接口使之與外部發(fā)生聯(lián)系。道屏障),只保留有限的對外接口使之與外部發(fā)生聯(lián)系。繼承繼承繼承對于軟件復用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高繼承對于軟件復用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。軟件開發(fā)效率的重要原因之一。定義:特殊類的對象擁有其一般類的全部屬性與行為,稱作定義:特殊類的對象擁有其一般類的全部屬性與行為,稱作特殊類對一般類的繼承。特殊類對一般類的繼承。例如:將例如:將Person作為一個一般類,作為一個一般類,Student便是一個特殊類便是一個特殊類

12、。多態(tài)性多態(tài)性是指在一般類中定義的屬性或行為,被特殊類繼承之后,是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或行為在一般類及其各個特殊類中具有不同的語義。性或行為在一般類及其各個特殊類中具有不同的語義。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 類的概念類的概念 類是用來描述一組對象的相同屬性和行為,它為屬類是用來描述一組對象的相同屬性和行為,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述于該類的全部對象提供了統(tǒng)一的抽象描述 包括抽象屬性和抽象行為包括抽象屬性和抽象

13、行為 利用類可以實現(xiàn)細節(jié)進行封裝利用類可以實現(xiàn)細節(jié)進行封裝 包括用于實現(xiàn)的成員數(shù)據(jù)和成員函數(shù)包括用于實現(xiàn)的成員數(shù)據(jù)和成員函數(shù) 利用類易于編寫大型復雜程序,其模塊化程度比利用類易于編寫大型復雜程序,其模塊化程度比C中采用函數(shù)更高。中采用函數(shù)更高。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 類的定義類的定義class 類名稱類名稱 public: 公有成員(外部接口)公有成員(外部接口) private: 私有成員私有成員 (實現(xiàn)細節(jié)實現(xiàn)細節(jié)) protected: 保護型成員保護型成員 (用于類層次的訪問控制用于類層次的訪問控制)類是一種用戶自定義的類型類是一種用戶自定義的類型LO

14、GOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 成員數(shù)據(jù)成員數(shù)據(jù) 與一般的變量定義相同,但需要將它放在類的定義體中與一般的變量定義相同,但需要將它放在類的定義體中成員函數(shù)成員函數(shù) 在類中說明原形,在類外定義函數(shù)體實現(xiàn),并在函數(shù)名前在類中說明原形,在類外定義函數(shù)體實現(xiàn),并在函數(shù)名前使用類名加以限定。也可以直接在類中定義函數(shù)體,形成使用類名加以限定。也可以直接在類中定義函數(shù)體,形成內(nèi)聯(lián)成員函數(shù)。內(nèi)聯(lián)成員函數(shù)。 在類的定義外部實現(xiàn)內(nèi)聯(lián)成員函數(shù)時一定要顯式加上在類的定義外部實現(xiàn)內(nèi)聯(lián)成員函數(shù)時一定要顯式加上inline關鍵詞關鍵詞 允許定義重載函數(shù)和帶缺省形參值的函數(shù)。允許定義重載函數(shù)和帶缺省形參

15、值的函數(shù)。私有成員私有成員 (私有數(shù)據(jù)成員和私有成員函數(shù)私有數(shù)據(jù)成員和私有成員函數(shù)) 在關鍵字在關鍵字private后面聲明,后面聲明,只允許本類中的函數(shù)訪問,而只允許本類中的函數(shù)訪問,而類外部的任何函數(shù)都不能訪問。類外部的任何函數(shù)都不能訪問。 如果如果緊跟在類名稱的后面聲明私有成員,則緊跟在類名稱的后面聲明私有成員,則關鍵字關鍵字private可以可以省略。省略。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 公有成員公有成員(公有數(shù)據(jù)成員和公有成員函數(shù)公有數(shù)據(jù)成員和公有成員函數(shù)) 在關鍵字在關鍵字public后面聲明,它們是類與外部的接口,任后面聲明,它們是類與外部的接口,任何外

16、部函數(shù)都可以訪問公有類型數(shù)據(jù)和函數(shù)。何外部函數(shù)都可以訪問公有類型數(shù)據(jù)和函數(shù)。私有成員私有成員 (私有數(shù)據(jù)成員和私有成員函數(shù)私有數(shù)據(jù)成員和私有成員函數(shù)) 在關鍵字在關鍵字private后面聲明,后面聲明,只允許本類中的函數(shù)訪問,只允許本類中的函數(shù)訪問,而類外部的任何函數(shù)都不能訪問。而類外部的任何函數(shù)都不能訪問。 如果如果緊跟在類名稱的后面聲明私有成員,則緊跟在類名稱的后面聲明私有成員,則關鍵字關鍵字private可以可以省略省略。保護成員保護成員(保護數(shù)據(jù)成員和保護成員函數(shù)保護數(shù)據(jù)成員和保護成員函數(shù)) 與與private類似,在類的外部函數(shù)中不能訪問類中的保護類似,在類的外部函數(shù)中不能訪問類中的

17、保護成員成員 在類的子類中可能可以訪問該類的保護成員,這取決于在類的子類中可能可以訪問該類的保護成員,這取決于訪問訪問控制??刂?。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 類的對象是該類的某一特定實體,即類類型的變量。類的對象是該類的某一特定實體,即類類型的變量。定義形式:定義形式: 類名類名 對象名;對象名;例:例: watch myWatch;當然也可以有對象的指針,對象的引用等當然也可以有對象的指針,對象的引用等類中成員的訪問方式類中成員的訪問方式類中的成員函數(shù)訪問類中的成員數(shù)據(jù)類中的成員函數(shù)訪問類中的成員數(shù)據(jù) 直接使用成員名直接使用成員名類外訪問類外訪問 使用使用“對象

18、名對象名.成員名成員名”方式訪問方式訪問 public 屬性的成員屬性的成員LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時使用特定的值構(gòu)造對象,構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時使用特定的值構(gòu)造對象,或者說將對象初始化為一個特定的狀態(tài)。或者說將對象初始化為一個特定的狀態(tài)。 在對象創(chuàng)建時由系統(tǒng)自動調(diào)用。在對象創(chuàng)建時由系統(tǒng)自動調(diào)用。 如果程序中未定義出,則系統(tǒng)自動產(chǎn)生出一個缺省形如果程序中未定義出,則系統(tǒng)自動產(chǎn)生出一個缺省形式的構(gòu)造函數(shù)式的構(gòu)造函數(shù) - - 缺省構(gòu)造函數(shù)缺省構(gòu)造函數(shù) 允許為內(nèi)聯(lián)構(gòu)造函數(shù)、重載構(gòu)造函數(shù)、帶缺省形參值允許為內(nèi)聯(lián)構(gòu)造函數(shù)、重載構(gòu)造函數(shù)

19、、帶缺省形參值的構(gòu)造函數(shù)。的構(gòu)造函數(shù)。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 定義說明定義說明 構(gòu)造函數(shù)名與所在的類名相同;構(gòu)造函數(shù)名與所在的類名相同; 構(gòu)造函數(shù)沒有返回類型,因此在定義構(gòu)造函數(shù)時不能帶構(gòu)造函數(shù)沒有返回類型,因此在定義構(gòu)造函數(shù)時不能帶有任何帶有返回值的返回語句;有任何帶有返回值的返回語句; 不能將構(gòu)造函數(shù)說明為不能將構(gòu)造函數(shù)說明為voidvoid類型;類型; 可以有返回語句可以有返回語句 return;return; 構(gòu)造函數(shù)只能用于構(gòu)造類的實例對象,它的調(diào)用是隱含構(gòu)造函數(shù)只能用于構(gòu)造類的實例對象,它的調(diào)用是隱含的,不能對任何已經(jīng)構(gòu)造的對象再次進行構(gòu)造函數(shù)的顯

20、的,不能對任何已經(jīng)構(gòu)造的對象再次進行構(gòu)造函數(shù)的顯式調(diào)用;式調(diào)用; 構(gòu)造函數(shù)一般總是被定義為公有成員,否則在外部定義構(gòu)造函數(shù)一般總是被定義為公有成員,否則在外部定義類對象時無法對其進行初始化類對象時無法對其進行初始化 構(gòu)造函數(shù)的定義與普通成員函數(shù)一樣,可以在類定義體構(gòu)造函數(shù)的定義與普通成員函數(shù)一樣,可以在類定義體內(nèi)部,也可以放在類定義體的外部,且可以直接訪問其內(nèi)部,也可以放在類定義體的外部,且可以直接訪問其類所在的所有其他成員,包括成員數(shù)據(jù)和成員函數(shù)。類所在的所有其他成員,包括成員數(shù)據(jù)和成員函數(shù)。LOGOC+面向?qū)ο蟮某绦蛟O計方法面向?qū)ο蟮某绦蛟O計方法 一個類可以有多個構(gòu)造函數(shù),和普通函數(shù)一樣,

21、同名的構(gòu)一個類可以有多個構(gòu)造函數(shù),和普通函數(shù)一樣,同名的構(gòu)造函數(shù)相互重載造函數(shù)相互重載Class d_String Class d_String Public:Public: d_String(); d_String(); d_String(const d_String d_String(const d_String * *);); d_String(const char d_String(const char * *);); ; 對象的初始化對象的初始化d_String str1; / d_String str1; / 調(diào)用缺省構(gòu)造函數(shù)調(diào)用缺省構(gòu)造函數(shù)d_String str1(); / d_String str1(); / 調(diào)用缺省構(gòu)造函數(shù)調(diào)用缺省構(gòu)造函數(shù)d_String str1(“Bing Wang”); / d_String str1(“Bing Wang”); / 調(diào)用構(gòu)造函數(shù)調(diào)用構(gòu)造函數(shù)d_String str1=d_String(); / d_String str1=d_String(); / 調(diào)用缺省構(gòu)造

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論