程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C和C++的面向對象專題(1)——何為面向對象

C和C++的面向對象專題(1)——何為面向對象

編輯:C++入門知識

C和C++的面向對象專題(1)——何為面向對象


題記:

面向對象是一種思想,而不是一門語言

我們上哪去找對象,都面向對象去了

本專欄文章列表

一、何為面向對象

二、C語言也能實現面向對象

三、C++中的不優雅特性

四、解決封裝,避免接口

五、合理使用模板,避免代碼冗余

六、C++也能反射

七、單例模式解決靜態成員對象和全局對象的構造順序難題

八、更為高級的預處理器PHP

一、何為面向對象

現在學軟件開發,都講面向對象的編程模型,其實也很簡單。用一句話來總結,面向對象就是將方法和方法的屬性整合在一起,讓每個方法引用的屬性值盡可能在對象內部,對外保持簡潔的接口。

實現面向對象的設計,目標不是寫類,而是設計結構,對每一個對象設計良好的接口和封裝模式,將優雅的接口提供給使用者,最大程度的降低代碼耦合。

面向對象的設計,可以用一本書來講解,但我們這裡將演示面向對象的基本思想和如何實現

從一個簡單的例子看對象

恩,那好,我們現在構建一個對象

class window {
public:
    window(int x, int y, int width, int height) {
        this.x = x; this.y = y;
        this.width = width;
        this.height = height;
    }
    void Show();

private:
    int x, y, width, height;

    // 也許你還可以添加更多屬性,例如透明度、子元素列表、菜單、狀態欄等待
};

這是一個基本的窗口對象,也許它並不能給你直觀的印象,但我希望能通過其說明一些問題。
對象有公開方法,有私有屬性,我們在構造這個對象的時候,將一些參數傳入,那麼我們發現,這個過程簡化了我們對於某些方法的使用。

例如在C函數中,如何你希望繪制一些內容,那麼你可能需要做的是寫這樣一個函數:

int Draw(struct window*, int, int, int, int);

將全部的參數傳入進去,但如果使用次數多後,我們發現參數大多一樣,那麼不如把他們都打包進入window結構體中,於是函數變成了這樣:

int Draw(struct window*);

這樣我們只需要改變結構體中的值就可以了,這個思想,就是面向對象的基礎,而C++正是讓這要傳入的結構體自動傳入,進而演變為了this指針。

面向對象的設計原則

幾乎軟件的設計原則都是高內聚,低耦合。

C++的設計也是一樣,類的公共方法應該盡可能清晰明確,簡單好用,而不必要外部了解的信息,和細節過程,都放入到私有成員中,避免被誤用。

避免過度繼承和重載,雖然繼承和重載很大程度上能夠降低兩個模塊間的耦合,但其實現復雜,結構混亂,容易使得代碼不夠清晰。同樣,也要避免設計模式的濫用。

C++的開發應該本著面向對象的思想,利用類的封裝特性,將模塊內部的部分高效的組織在一起,而接口,可以采用多態調用的方式,保證靈活性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved