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 說明該虛擬函式為沒有方法體,虛擬函式需要在派生類中進行具體的實現。
設計
封裝的作用是用來保護程式碼,繼承是用來增強程式碼的複用,多型是用來派生類的功能可以被基類所呼叫,並且可以對類進行進一步的抽象達到更高的複用的目的。
介面的作用,用於統一規範程式碼,用於對各個模組提供一個統一的介面用於進行實現。
多型和介面
介面是多型的實現的一種方式。