1. 特性:抽象;封裝和數據隱藏;多態,繼承;代碼的可重用性。
2. 採用OOP方法時,首先從用戶的角度考慮對象——描述對象所需的數據以及描述用戶與數據交互所需的操作。完成對接口的描述後,需要確定如何實現接口和數據存儲。最後,使用新的設計方案創建出程序。
3. 指定基本類型完成了三項工作:
l 決定數據對象需要的內存數量
l 決定如何解釋內存中的位
l 決定可使用數據對象執行的操作或方法
4. 類規範由兩個部分組成:(簡單的說,類聲明提供了類的藍圖,方法定義提供了細節)
l 類聲明:以數據成員的方式描述數據部分,以成員函數(被稱爲方法)的方式描述公有接口。
l 類方法定義:描述如何實現類成員函數。
5. 關鍵字private、protected和public描述了對類成員的訪問控制。使用類對象的程序都可以直接訪問公有部分,但只能通過公有成員函數來訪問對象的私有成員。防止程序直接訪問數據被稱爲數據隱藏。
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 每個對象都存儲自己的數據,而共享類方法。