C 類之說明

2021-10-23 04:28:52 字數 4048 閱讀 5182

物件導向程式設計(oop)是一種特殊的、設計程式的概念性方法,oop重要特性如下:

(1) 抽象

(2) 封裝和資料隱藏

(3) 多型

(4) 繼承

(5) **的可重用性

採用書本描述的案例說明,能更容易的讓人理解過程性程式設計物件導向程式設計

壘球隊的一名新球員被要求記錄球隊的統計資料,會優先考慮使用計算機來完成這項工作,下面描述下過程性程式設計與oop程式設計思想不同之處:

2.1 過程性程式設計

(1)考慮輸入每名選手的姓名、擊球次數、擊中次數、命中率及其它重要基本資料

(2)還需要顯示記錄的資料及計算結果(命中率等)

如何完成上述功能工作呢?

(1)可以讓main()函式呼叫乙個函式來獲取輸入

(2)呼叫另乙個函式進行計算

(3)呼叫第三個函式顯示結果

如果獲取下一場的資料後又該怎麼做呢?

(1)若不想從頭開始,可以新增乙個函式來更新統計資料

(2)可能需要在main()函式中新增乙個選單,選擇是輸入、計算、更新還是顯示資料。

如何表示記錄統計與計算的資料呢?

(1)可以使用乙個字串來儲存選手姓名

(2)使用乙個陣列來儲存每一位選手的擊球數

(3)使用乙個陣列來儲存擊中數目等

(4)或者可以設計乙個結構來儲存每位選手的所有資訊,然後使用這種結構組成的陣列來表示整個球隊

總之,使用過程性程式設計方法時,首先考慮要遵循的步驟,然後考慮如何表示這些資料。

2.2 物件導向程式設計(oop)

(1)考慮如何表示資料,還要考慮如何使用資料

(2)考慮以誰為主體去記錄處理資料,當然是選手。

(3)因此要有乙個物件去表示整個選手的各個方面,這將作為基本資料單元—乙個表示選手的姓名和統計資料的物件。

如何對資料進行處理呢?

(1)首先需要一種將基本資訊加入到該單元中的方法

(2)其次,計算機應計算一些東西,如命中率等。因此需要新增一些執行計算的方法

(3)程式應自動完成這些計算,而無需使用者干涉

(4)還需要一些更新和顯示資訊的方法

(5)所以使用者與資料互動的方式有三種:初始化、更新、報告;這就是使用者介面

總之,採用oop程式設計方法時,首先從使用者的角度考慮物件—描述物件所需要的資料以及描述使用者與資料互動所需的操作。完成對介面的描述後,需要確定如何實現介面和資料儲存。最後,使用新的設計方案建立出執行程式。

3.1 抽象

生活中充滿複雜性,處理複雜性的方法之一是簡化和抽象。抽象是通往使用者定義型別的捷徑

在c++中,使用者定義型別指的是實現抽象介面的類設計。

3.2 型別

將變數宣告為int或float指標時,不僅僅是分配記憶體,還規定了可對變數執行的操作。總之,指定基本型別完成了三項工作:

(1)決定資料物件需要的記憶體數量

(2)決定如何解釋記憶體中的位(long和float在記憶體中占用的位數相同,但將它們轉換為數值的方法不同)

(3)決定可使用資料物件執行的操作或方法

3.3 c++中的類

類是一種將抽象轉換為使用者定義型別的c++工具,它將資料表示和操縱資料的方法組合成乙個整潔的包。

定義類時,類規範一般由兩部分組成:

(1)類宣告:以資料成員的方式描述資料部分,以成員函式(常被稱為方法)的方式描述公有介面

(2)類方法定義:描述如何實現類成員函式

簡單的說,就是類宣告提供了類的藍圖,而方法定義則提供了細節。

3.4 什麼是介面

介面是乙個共享框架,共兩個系統互動時使用(如計算機與印表機之間或者使用者與計算機之間)

3.5 設計類步驟

(1)c++程式設計師將介面(類宣告)放在標頭檔案中

(2)將實現(類方法的**)放在源**檔案中

以下**為類宣告:

class

stock

public

:void

acquire

(const std::string &co,

long n,

double pr)

;void

buy(

long num,

double price)

;void

sell

(long num,

double price)

;void

update

(double price)

;void

show()

;};

4.1 訪問控制

(1)使用類物件的程式都可以直接訪問公有部分,但只能通過公有成員函式(或友元函式)來訪問物件的私有成員。

(2)資料隱藏:防止程式直接訪問資料。

(3)封裝:將實現細節放在一起並將它們與抽象分開,類設計盡可能將公有介面與實現細節分開,說明幾種情況下的封裝:

a、資料隱藏(將資料放在類的私有部分)是一種封裝

b、將實現的細節隱藏在私有部分中是一種封裝

c、將類函式定義和類宣告放在不同檔案中也是一種宣告

4.2 公有與私有

無論類成員是資料成員還是成員函式,都可以在類的公有部分或私有部分中宣告它。但由於資料隱藏是oop的目標之一,因此資料項通常放在私有部分,組成類介面的成員函式放在公有部分。

不必在類宣告中使用關鍵字private,因為這是類物件的預設訪問控制,舉例說明:

class

world

;

類和結構的區別:

結構的預設訪問型別是public,類預設訪問型別是private

類與結構使用情況:

c++通常使用類來實現類描述,而把結構限制為只表示純粹的資料物件(常被稱為普通老式資料(pod,plain old data))結構。

4.3 類成員函式實現

成員函式定義與常規函式定義非常相似,它們有函式頭與函式體,也可以有返回型別和引數。但它們有兩個特殊的特徵:

(1)定義成員函式時,使用作用域解析運算子(::)來標識函式所屬的類

(2)類方法可以訪問類的private元件(資料成員)

類方法的完整名稱中包括類名。比如,stock::update()是函式的限定名,而簡單的update()是全名的縮寫(非限定名),它只能在類作用域中使用。

4.4 內聯方法

其定義(函式原型與函式實現放在一起)位於類宣告中的函式都將自動成為內聯函式。

類宣告常將短小的成員函式作為內聯函式。

內聯函式另一種實現方式:

可以在類宣告之外定義成員函式,並使其成為內聯函式。只需要在類實現部分中定義函式時使用inline限定符即可,**舉例:

class

stock

;inline

void stock::

set_tot()

// 在定義中使用inline關鍵字

說明1:內聯函式的特殊規則要求在每個使用它們的檔案中都對其進行定義,確保內聯定義對多檔案程式中的所有檔案都是可用、最簡單的方式:將內聯定義放在類宣告的標頭檔案中。

說明2:根據改寫規則,在類宣告中定義方法等同於用原型替換方法定義,然後在類宣告的後面將定義改寫為內聯函式。

vs 2008 版本之說明

visual.studio.2008.express.edition 速成版 適應於初學者,功能簡單方便.visual.studio.2008.express.edition.cns 速成版的簡體中文版。visual.studio.2008.professional.edition.專業版 適合個人...

C 類的前置說明

今天一朋友問及 c 中的前置宣告問題,下面是我給出的回答。在編寫c 程式的時候,偶爾需要用到前置宣告 forward declaration 下面的程式中,帶注釋的那行就是類 b的前置說明。這是必須的,因為類 a中用到了類 b,而類 b的宣告出現在類 a的後面。如果沒有類 b的前置說明,下面的程式將...

關於 類的 virtual 例項 說明 (c )

using system using system.collections.generic using system.text public class classboy classfather public class classgirl classfather endregion region ...