跳轉到內容

C++ 程式設計/程式語言/正規化/封裝

來自華夏公益教科書,開放的書籍,開放的世界

封裝(也稱為資訊隱藏)是大型軟體專案中常用的概念,用於實現可擴充套件性。封裝背後的原理是將類的內部工作機制隱藏在使用該類的程式碼之外,只暴露必要的部分。

為什麼要這樣做?

[編輯 | 編輯原始碼]

團隊開發專案通常會將任務分成多個部分。設計簡潔易懂的介面可以使程式碼更易於理解。如果團隊 A 編寫的類中的一個數據成員被團隊 B 使用,而該類更改了資料成員的工作方式,則可能會破壞與團隊 B 程式碼的相容性。維護類的成員資料不僅非常困難,而且對於客戶來說也可能非常混亂。封裝類的介面就像與客戶的協議,聲明瞭它能夠做什麼。客戶不應該關心它是如何完成的,事實上它可以在未來升級,只要它符合相同的介面。

要完全封裝一個類,該類中的所有資料成員都必須是私有的。在設計類時,必須確定哪些資料必須是可訪問的,哪些資料可以完全隱藏。要公開的資料將需要“訪問器函式”,這些函式可以允許對私有資料成員進行讀取或儲存。

//Non-encapsulated class
class raceCar {
    public:
        void drive()
        int pos;
        int speed;
};
//Encapsulated class
class raceCar {
    public:
        void drive()

        void setSpeed(int s) {m_speed = s;}
        int speed()          {return m_speed;}

        int position()       {return m_pos;}
    private:
        int m_pos;
        int m_speed;
};
華夏公益教科書