C++ 數(shù)據(jù)抽象
什么是數(shù)據(jù)抽象
向外界提供關(guān)鍵信息酪我。隱藏其后臺的實現(xiàn)細節(jié)邮府。只表現(xiàn)必要的信息嘁圈,不呈現(xiàn)細節(jié)寇仓。
數(shù)據(jù)抽象是依賴于接口和實現(xiàn)分離橱赠。
通過外部接口厚棵,對其內(nèi)部進行實現(xiàn)蕉世。達到數(shù)據(jù)抽象的目的
#include <iostream>
using namespace std;
int main(){
cout << "hello c++" << endl;
return 0;
}
在上方中,不需要理解cout如何在屏幕上輸出內(nèi)容婆硬,只需要知道這是一個接口狠轻,用于定義進行輸出。
優(yōu)勢
類的內(nèi)部受到保護彬犯,不會因為用戶錯誤對對象導致受到損害向楼。
類的實現(xiàn)可能會受到時間的推移而發(fā)生變化查吊,應(yīng)對不斷變化的需求,只需要更改類即可蜜自,不用更改業(yè)務(wù)代碼菩貌,完成分離
數(shù)據(jù)抽象的實例
#include <iostream>
using namespace std;
class Adder{
public:
// 構(gòu)造函數(shù)
Adder(int i = 0){
total = i;
}
// 對外的接口
void addNum(int number){
total += number;
}
// 對外的接口
int getTotal(){
return total;
}
private:
// 對外隱藏的數(shù)據(jù)
int total;
}
int main(){
Adder* a = new Adder();
a.addNum(30);
a.addNum(20);
a.addNum(30);
cout << "Total" << a.getTotal() << endl;
return 0;
}
設(shè)計
抽象把代碼分離為接口和實現(xiàn)。
設(shè)計組件的時候重荠,必須保持接口的獨立實現(xiàn)箭阶。無論怎么改變底層,接口也將保持不變戈鲁。
數(shù)據(jù)抽象
程序語句 程序中執(zhí)行動作的部分稱為函數(shù)
程序數(shù)據(jù) 數(shù)據(jù)為程序的信息仇参,會受到函數(shù)的影響。
數(shù)據(jù)隱藏
數(shù)據(jù)隱藏屬于OOP中的封裝的特性婆殿。
OOP中的三大特性诈乒,封裝,繼承婆芦,多態(tài)怕磨,封裝,提供set和get方法消约,用于進行封裝肠鲫,即對內(nèi)保護,對外隱藏或粮。繼承java中使用的是extends导饲,進行繼承,有單一繼承和多重繼承氯材。多態(tài)渣锦、定義一個接口,即抽象類氢哮,用來對于某些規(guī)則進行定義袋毙,實現(xiàn)對于不同的處理進行不同的反饋,得到多態(tài)冗尤。
數(shù)據(jù)封裝為public和private等
#include <iostream>
int main(){
class Box{
public:
double getVolume(void){
return length * breadth * height;
}
private:
double length; // 長度
double breadth; // 寬度
double height; // 高度
}
}
在上方中娄猫,封裝數(shù)據(jù),并對外提供接口為getVolme生闲,并且private保證了對數(shù)據(jù)的保護,防止非法操作月幌,并且將數(shù)據(jù)和實現(xiàn)分離碍讯,確保當業(yè)務(wù)代碼更改的時候,數(shù)據(jù)也可以進行更改扯躺。
設(shè)計
設(shè)計類的成員為私有捉兴,除非真的要對齊暴露蝎困,確保封裝性。
包括對于虛函數(shù)來說倍啥,也是如此禾乘。
接口
C++的接口,使用虛函數(shù)進行實現(xiàn)虽缕。通過= 0 說明該虛函數(shù)為沒有方法體始藕,虛函數(shù)需要在派生類中進行具體的實現(xiàn)。
設(shè)計
封裝的作用是用來保護代碼氮趋,繼承是用來增強代碼的復用伍派,多態(tài)是用來派生類的功能可以被基類所調(diào)用,并且可以對類進行進一步的抽象達到更高的復用的目的剩胁。
接口的作用诉植,用于統(tǒng)一規(guī)范代碼,用于對各個模塊提供一個統(tǒng)一的接口用于進行實現(xiàn)昵观。
多態(tài)和接口
接口是多態(tài)的實現(xiàn)的一種方式晾腔。