C++基礎(2)——面向對象編程(OOP)【對象和類】

1.  特性:抽象;封裝和數據隱藏;多態,繼承;代碼的可重用性。

2.  採用OOP方法時,首先從用戶的角度考慮對象——描述對象所需的數據以及描述用戶與數據交互所需的操作。完成對接口的描述後,需要確定如何實現接口和數據存儲。最後,使用新的設計方案創建出程序。

3.  指定基本類型完成了三項工作:

l  決定數據對象需要的內存數量

l  決定如何解釋內存中的位

l  決定可使用數據對象執行的操作或方法

4.  類規範由兩個部分組成:(簡單的說,類聲明提供了類的藍圖,方法定義提供了細節)

l  類聲明:以數據成員的方式描述數據部分,以成員函數(被稱爲方法)的方式描述公有接口。

l  類方法定義:描述如何實現類成員函數。

5.  關鍵字privateprotectedpublic描述了對類成員的訪問控制。使用類對象的程序都可以直接訪問公有部分,但只能通過公有成員函數來訪問對象的私有成員。防止程序直接訪問數據被稱爲數據隱藏。

6.  類設計儘可能將公有接口與實現細節分開。公有接口表示設計的抽象組建。將實現細節放在一起並將他們與抽象分開被稱爲封裝。

7.  成員函數兩個特殊特徵:

l  定義成員函數時,使用作用域解析運算符(::)來標識函數所屬的類;

l  類方法可以訪問類的private組件。

8.  所創建的每個新對象都有自己的存儲空間,用於存儲其內部變量和類成員;但同一個類的所有對象共享同一組類方法。

9.  指定類設計的第一步是提供類聲明。類聲明類似結構聲明,可以包括數據成員和函數成員。聲明包括私有部分(在其中聲明的成員只能通過成員函數進行訪問)和公有部分(其中聲明的成員可被使用類對象的程序直接訪問)。通常,數據成員被放在私有部分中,成員函數被放在公有部分中,典型的類聲明格式如下:

class classname

{

  private

   data memberdeclaration

  public

   memberfunction prototypes

};

公有部分的內容構成了設計的抽象部分——公有接口。將數據封裝到私有部分中可以保護數據的完整性,這被稱爲數據隱藏。

10. 默認構造函數是在未提供顯式初始值時,用來創建對象的構造函數。定義默認構造函數的方式有兩種:

l  一種是給已有構造函數的所有參數提供默認值。

l  另一種方式是通過函數重載來定義另一個構造函數——一個沒有參數的構造函數。

創建默認構造函數後,便可以聲明對象變量,而不對它們進行顯式初始化。

構造函數是一種特殊的類成員函數,在創建類對象時被調用。構造函數的名稱和類名相同,但通過函數重載,可以創建多個同名的構造函數,條件是每個函數的特徵標(參數列表)都不同。另外,構造函數沒有聲明類型。通常,構造函數用於初始化類對象的成員,初始化應與構造函數的參數列表匹配。

//Bozo類的構造函數的原型如下
Bozo(const char * fname, const char * lname);
//可以用它來初始化新對象
Bozo bozetta = bozo(“Bozetta”,”Biggens”);
Bozo fufu(“fufu”,”OWweewb”);
Bozo *pc = new Bozo(“Popo”,”Le Peu”);


11. 用構造函數創建對象後,程序負責跟蹤該對象,直到其過期爲止。對象過期時,程序將自動調用一個特殊的成員函數——析構函數。析構函數的名稱:在類名前加上~

12. this指針指向用來調用成員函數的對象(this被作爲隱藏參數傳遞給方法)。每個成員函數都有一個this指針,this指針指向調用對象。

13. 總結:

l  面向對象編程強調的是程序如何表示數據。使用OOP方法解決編程問題的第一步是根據它與程序之間的接口來描述數據,從而指定如何使用數據。然後設計一個類來實現該接口。一般來說,私有數據成員存儲信息,公有成員函數(方法)提供訪問數據的唯一途徑。類將數據和方法組合成一個單元,其私有性實現數據隱藏。

l  通常,將類聲明分成兩部分組成,這兩部分通常保存在不同的文件中,類聲明[.h](包括由函數原型表示的方法)應放到頭文件中。定義成員函數的源代碼放在方法文件中[.cpp]

l  類是用戶定義的類型,對象是類的實例。這意味着對象是這種類型的變量。

l  每個對象都存儲自己的數據,而共享類方法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章