只不過思維方式不壹樣而已。
面向過程是把壹件事壹項工程分解成為壹個個小的功能,用壹個個函數來實現.
面向對象是把事情看成是壹個個小的對象組成的,或者說壹個個小部分組成的,這些對象之間的相互關系,構成了整個項目.
在面向對象的思想中,萬物皆對象,我是,妳是,他也是。
而"類",就是對象的抽象或者說是概括。比如,我妳他都可以概括為人類。
總的來說,類是抽象的虛的,而對象是壹個個活生生的具體的事物。
人是壹個類,我妳他就是對象。
壹般的面向對象程序設計方法都是先設計壹個類,然後由這個類產生壹個對象。
之後是對這個對象進行相關操作。
要說明壹點:操作是對對象進行的,沒有對象就無所謂操作。
下面說說如何設計壹個類,
類是有壹些屬性和功能封裝起來的。
在面向過程的思想裏,壹個程序壹般都是由壹個個函數組成的,這些函數之間相互調用,
就形成了壹個完整的程序,解決了壹個問題。它的基本結構是:
函數壹()
{
……;
}
函數二()
{
……;
}
……
主函數()
{
……;
}
但是在面向對象的思想中,是把這些都封裝起來,形成壹個類。
class 類名
{
函數壹()
{
……;
}
函數二()
{
……;
}
……
}
然後由這個類產生壹個對象,比如:我們把壹個類的類名起為 student
那麽產生對象的方法就是: student s1;
這裏s1是壹個對象,產生了這個對象以後,才可以進行相關操作。
操作方法如: s1.函數壹();
等等。具體的細節在此就不說了,此文只說思想。
說得再明白壹點就是,把具體的實現過程放在類裏面,之後產生壹個對象,有對象調用相關操作。
猶如把面向過程裏的函數都封裝進了類裏,然後再由對象來操作。
壹個類主要就是封裝,壹般把它當成壹個模塊,在需要的時候可以讓其他類調用。
類是壹個抽象,壹個概括,把壹些有***同特征的東西抽象化,提出它們的公***部分,封裝在壹起。
關於封裝,上文已經說過,就是把壹些屬性和功能裝在壹個容器裏面。
下面我用壹個遊戲來解說壹下:
假設我們要做壹個小遊戲,類似於網遊裏面的打怪,為簡單起見,認為怪不打人,只讓人打,
他的血不斷減少,直到死亡。
把所有怪物的***同特征抽象出來,於是我們得到壹個類:怪物
class 怪物
{
char 怪物名;
int 血;
怪物(怪物名n,血n) /*構造函數*/
{
怪物名=怪物名n;
血=血n;
}
被打函數()
{
血減少;
}
判斷函數()
{
if (血==0)
printf("妳勝利了!");
}
玩遊戲()
{
while (血 > 0)
{
被打函數();
判斷函數();
}
}
}
這樣,就定義了壹個怪物類,他有屬性:怪物名、血,有功能:構造、被打、判斷
根據這個,就可以產生對象了。
壹個類可以產生任意多的對象,這些對象根據構造函數的不同來區別。
我們先繼續來寫我們的程序
main主函數
void main()
{
/******產生對象******/
怪物 怪物1("狼",5000);
怪物 怪物2("虎",8000);
怪物 怪物3("蛇",3000);
/**有了幾個對象以後才能開始我們的遊戲**/
怪物1.玩遊戲();
怪物2.玩遊戲();
怪物3.玩遊戲();
}
再這個主函數中,我們建立了三個對象,它們***用壹個類。
可以看到,類相當於壹個組件,壹個模塊,我們在需要的時候只要建立它的對象,就能實現他所封裝的功
能。
這就是面向對象的優點,可以重用,不必每壹次用到時都重寫。
說了這麽多,自己感覺還是沒說明白,真有點只可意味不可言傳的感覺。
其實要是書看的多了,真正認真地寫上幾個東西,就能夠理解了,無形之中就會有感覺的。