1. 程式人生 > >C++ 資料抽象 封裝 介面

C++ 資料抽象 封裝 介面

C++ 資料抽象

什麼是資料抽象

向外界提供關鍵資訊。隱藏其後臺的實現細節。只表現必要的資訊,不呈現細節。
資料抽象是依賴於介面和實現分離。

通過外部介面,對其內部進行實現。達到資料抽象的目的

#include <iostream>
using namespace std;

int main(){
    cout << "hello c++" << endl;
    return 0;
}

在上方中,不需要理解cout如何在螢幕上輸出內容,只需要知道這是一個介面,用於定義進行輸出。

優勢

類的內部受到保護,不會因為使用者錯誤對物件導致受到損害。
類的實現可能會受到時間的推移而發生變化,應對不斷變化的需求,只需要更改類即可,不用更改業務程式碼,完成分離

資料抽象的例項

#include <iostream>
using namespace std;

class Adder{
public:
    // 建構函式
    Adder(int i = 0){
        total = i;
    }
    // 對外的介面
    void addNum(int number){
        total += number;
    }
    // 對外的介面
    int getTotal(){
        return total;
    }
private:
    // 對外隱藏的資料
    int total;
}

int main(){
    Adder* a = new Adder();

    a.addNum(30);
    a.addNum(20);
    a.addNum(30);

    cout << "Total" << a.getTotal() << endl;
    return 0;
}

設計

抽象把程式碼分離為介面和實現。
設計元件的時候,必須保持介面的獨立實現。無論怎麼改變底層,介面也將保持不變。

資料抽象

程式語句 程式中執行動作的部分稱為函式
程式資料 資料為程式的資訊,會受到函式的影響。

資料隱藏

資料隱藏屬於OOP中的封裝的特性。

OOP中的三大特性,封裝,繼承,多型,封裝,提供set和get方法,用於進行封裝,即對內保護,對外隱藏。繼承java中使用的是extends,進行繼承,有單一繼承和多重繼承。多型、定義一個介面,即抽象類,用來對於某些規則進行定義,實現對於不同的處理進行不同的反饋,得到多型。

資料封裝為public和private等

#include <iostream>

int main(){
    class Box{
    public:
        double getVolume(void){
            return length * breadth * height;
        }
    private:
        double length;  // 長度
        double breadth; // 寬度
        double height;  // 高度
    }
}

在上方中,封裝資料,並對外提供介面為getVolme,並且private保證了對資料的保護,防止非法操作,並且將資料和實現分離,確保當業務程式碼更改的時候,資料也可以進行更改。

設計

設計類的成員為私有,除非真的要對齊暴露,確保封裝性。
包括對於虛擬函式來說,也是如此。

介面

C++的介面,使用虛擬函式進行實現。通過= 0 說明該虛擬函式為沒有方法體,虛擬函式需要在派生類中進行具體的實現。

設計

封裝的作用是用來保護程式碼,繼承是用來增強程式碼的複用,多型是用來派生類的功能可以被基類所呼叫,並且可以對類進行進一步的抽象達到更高的複用的目的。
介面的作用,用於統一規範程式碼,用於對各個模組提供一個統一的介面用於進行實現。
多型和介面
介面是多型的實現的一種方式。

https://www.iming.info/2018/11/06/C-%E6%95%B0%E6%8D%AE%E6%8A%BD%E8%B1%A1-%E5%B0%81%E8%A3%85-%E6%8E%A5%E5%8F%A3/