- 結構化程序設計
c語言: 程序 = 數據結構 + 算法
程序右全局變量和互相調用的函數組成,算法以函數實現,對數據結構進行操作
不足:函數與其操作的數據結構沒有直觀聯繫;函數規模增加程序難以理解;沒有封裝和隱藏的概念,當數據結構改變時,數 據結構的使用需要一一修改
- 面向對象程序設計
c++:類+類+····
設計方法:
- 某類客觀事物共同屬性歸納爲一個數據結構
- 將這些類所能進行的行爲也歸納出來,爲函數,用來操作數據結構(即抽象過程)
- 將數據結構與操作數據結構的函數捆綁在一起形成類 (即封裝過程)
四個基本特點:抽象、封裝、繼承、多態
類 = 成員變量+成員函數
對象:類定義的變量,也叫實例
class Rectangle: //Rectangle爲類
{
public:
int width,height;
int init(w,h){width=w; height=h;}
int area(){return width*height;}
int prem(){return 2*(width+height);}
};
int main(){
Rectangle r; //r爲對象也叫Rectangle類的實例
int w=1,h=2;
r.init(w,h);
cout<<r.area();
return 0;
}
對象空間只包含類的成員變量大小,不包含成員函數,成員函數被所有對象共享
對象之間可以用“=”賦值,不可以比較
類的定義和成員函數可以分開寫
class Rectangle: //Rectangle爲類
{
public:
int width,height;
int init(w,h);
int area();
int prem();
};
int Rectangle::init(w,h){width=w; height=h;}
int Rectangle::area(){return width*height;}
int Rectangle::prem(){return 2*(width+height);}
使用成員函數仍舊需要用對象來調用
- 使用類的成員變量和成員函數
//方式1
Rectangle r1;
r1.w=5;
//方式2
Rectangle r1,r2;
Rectangle *p1 = &r1;
Rectangle *p2 = &r2;
p1->w=5;
p2->init(7,1);
//方式3
Rectangle r;
Rectangle &rr = r;
rr.init(7,1);
- 類成員的可訪問範圍
class className{
private:
//私有屬性和函數
protected:
//保護屬性和函數
public:
//共有屬性和函數
};
如果缺省關鍵字,則默認私有
類的成員函數內部可以訪問:當前對象的全部屬性函數,同類的其他對象的全部屬性和函數
成員函數以外的地方:僅可訪問類的對象的公有部分
設置私有成員(隱藏),是爲了強制對成員變量的訪問必須通過成員函數,修改成員變量屬性時只需修改成員函數即可。
成員函數也可以函數重載和缺省,注意避免二義性