C++之面向對象

一、什麼是面向對象的程序設計?

對象:構成系統的基本單位。任何一個對象都具有兩個要素,屬性和行爲。

屬性:對象的靜態特徵;行爲:對象的動態特徵。

從外界向對象發着的信息,稱爲消息。

在一個系統中,多個對象之間通過一定的渠道相互聯繫,要使某一個對象實現某一種行爲(即操作),應當向它傳送相應的消息。對象之間就是這樣通過發送和接收消息互相聯繫的。首先確定哪些對象組成了這個系統。然後設計這些對象,組裝成爲一個複雜系統。這就是面向對象的程序設計方法。


二、面向對象設計中包含的一些定義

在C++中,每個對象都是由數據和函數兩部分組成的,對應對象中的屬性和行爲(也稱方法)。(數據——屬性)、(函數實現的功能——行爲)

調用對象中的函數就是向該對象傳送一個消息(message),要求該對象實現某一行爲(功能)。

2、封裝:把對你的內部實現和外部行爲分隔開來。它有兩方面的含義:一是將有關的數據和操作代碼封裝在一個對象中,形成一個基本單位,各個對象相對獨立,互不干擾;二是將對象中某些部分對外隱蔽,即隱蔽其內部細節,只留下少量接口,以便與外界聯繫,接收外界的消息。這一點的作法稱爲信息隱蔽。

3、抽象:程序設計中的抽象是表示同一類事物的本質。抽象的過程是將有關事物 的共性歸納、集中的過程。

4、類:類是對象的抽象,而對象是類的特例,或者說是類的具體表現形式。

5、繼承:利用已有的共性(類),開發新的特徵(子類),子類擁有父類的特徵就是所謂的繼承。這樣可以方便的利用一個已有的類建立一個新的類。

6、多態現象:接收同一消息時,各個對象做出的反應各不相同,分別執行不同的操作。

7、多態性:由繼承而產生的相關的不同的類,其對象對同一消息會作出不同的響應。


舊觀念:

程序=算法+數據結構

新觀念:

對象=算法+數據結構

程序=(對象+對象+對象+……)+消息      或    程序=對象s+消息


三、關於類的若干問題

1、類的聲明,一般形式如下:

class 類名

private:

私有的數據成員函數;

public:

公用的數據和成員函數;

};

被聲明爲私有的(private)成員,只能被本類中的成員函數引用,類外不能調用(友元類例外)。

被聲明爲公用的(public)成員,既可以被本類中的成員函數所引用,也可被類的作用域內的其他函數引用。

一個類體中,關鍵字private和public可以分別出現多次。

2、對象的定義方法:先聲明類的類型,然後再定義對象,兩種定義方法

(1)class 類名 對象名

(2)類名 對象名



3、struct聲明的類和class聲明的類的區別在於:

用struct聲明的類,如果對其成員不作private或public的聲明,系統將其默認爲public。

用class聲明的類,如果對其成員不作private或public的聲明,系統將其默認爲private。

建議儘量使用class來建立類。


4、成員函數在類外的定義方式

成員函數在類外定義時,必須在函數名前面加上類名,予以限定,“::”是作用域限定符或稱作用域運算符

::display() display()

則表示display函數不屬於任何類,這個函數不是成員函數,而是全局函數。

類函數必須先在類體中作原型聲明,然後在類外定義,否則編譯會出錯。


5、inline成員函數

a、爲了減少時間開銷,如果在類體中定義的成員函數中不包括循環等控制結構,C++系統會自動將它們作爲內置函數來處理。對在類體內定義的函數,一般都省寫inline。

b、如果在類體外定義inline函數,則必須將類定義和成員函數的定義都放在同一個頭文件中(或寫在同一個源文件中),否則編譯時無法進行轉換。

c、只有在類外定義的成員函數規模很小而調用頻率較高時,纔將此成員函數指定爲內置函數。

d//

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