? ? ? ? 無(wú)論是面向過(guò)程也好,面向?qū)ο笠擦T,首先說(shuō)的都是類和對(duì)象。“這個(gè)世界是由什么組成的?”,對(duì)于這個(gè)問(wèn)題如果,仁者見(jiàn)仁智者見(jiàn)智,不同文化背景,不同探索方向便會(huì)有不同的答案。我覺(jué)得分類學(xué)家的思考方式最為貼切,他們認(rèn)為這個(gè)世界是由不同類型的物與事所構(gòu)成的,與面向?qū)ο蟮乃枷胗胁恢\而合,異曲同工之妙。站在分類學(xué)家角度來(lái)思考這個(gè)世界,那么,這個(gè)世界是由動(dòng)物、植物等組成的,同樣動(dòng)物又分為單細(xì)胞動(dòng)物、多細(xì)胞動(dòng)物、哺乳動(dòng)物等,哺乳動(dòng)物又分為人、大象、老虎……
? ? ? ?綜上所推,“類”的概念,呼之欲出。那么什么是“類”呢?還是很抽象對(duì)吧,那好,我們先來(lái)討論另一個(gè)問(wèn)題,“什么是人類?”
? ? ? ?首先讓我們來(lái)探究一下人類所具有的一些特征,這個(gè)特征包括屬性(一些參數(shù),數(shù)值)以及方法(一些行為,就是人能干什么)。每個(gè)人都有身高、體重、年齡、血型等一些屬性。人會(huì)思考、會(huì)勞動(dòng)、能創(chuàng)造原自然界沒(méi)有的東西等一些方法。人之所以能區(qū)別于其它類型的動(dòng)物,是因?yàn)槊總€(gè)人都具有人這個(gè)群體的屬性與方法。“人類”就是一個(gè)抽象的概念,它只能依附于所有的人的存在而存在。試想一下,如果沒(méi)有了人,那么再來(lái)說(shuō)“人類”這個(gè)概念似乎毫無(wú)意義。我們之所以提出“人類”的概念,是因?yàn)槲覀兛梢酝ㄟ^(guò)“人類”來(lái)了解每個(gè)人,每個(gè)人都是具有“人類”這個(gè)群體的所有屬性與方法的對(duì)象,而這個(gè)對(duì)象“人”是實(shí)際存在的實(shí)體。理解了“人類”概念,我們來(lái)看一看老虎,老虎不具備人“人類”的屬性與方法,老虎不會(huì)直立行走,不會(huì)使用工具等等,所以說(shuō)老虎不是人。
? ? ? ?究竟什么是“類”?現(xiàn)在想必大家都茅塞頓開、豁然開朗。對(duì),沒(méi)錯(cuò),“類”就是描述了一組有相同特性(屬性)和相同行為(方法)的集合。在程序中,類實(shí)際上就是數(shù)據(jù)類型。例如:整數(shù),小數(shù)等等。整數(shù)也有一組特性和行為。面向過(guò)程與面相對(duì)象的區(qū)別就在于,面向過(guò)程不允許程序員自己定義數(shù)據(jù)類型,而只能使用程序中內(nèi)置的數(shù)據(jù)類型。為了模擬真實(shí)世界,為了更好的解決問(wèn)題,而我們往往需要?jiǎng)?chuàng)建解決問(wèn)題所必需的數(shù)據(jù)類型,面向?qū)ο缶幊趟枷霊?yīng)運(yùn)而生、蓬勃發(fā)展。
深入探究面向?qū)ο笏枷耄?/b>
? ? ? ?面向?qū)ο蟮木幊趟枷胱畲蟮奶厣褪强梢跃帉懽约核璧臄?shù)據(jù)類型,以更好的解決問(wèn)題。我們必須要搞清楚“類,對(duì)象,屬性,方法它們之間的關(guān)系”。就像前面我所說(shuō)的,“人類”是什么也做不了的,它不實(shí)際存在,只依附于人的存在而存在。由此可知,“類”就是對(duì)對(duì)象的描述,是抽象概念。對(duì)象從類中產(chǎn)生出來(lái),是實(shí)實(shí)在在存在的、具體的,因此,對(duì)象具有類所描述的所有的屬性以及方法。
? ? ? 再舉個(gè)例子,例如吃飯這個(gè)行為方式,怎么樣實(shí)現(xiàn)“吃飯”呢,一般我們的思維模式就是,把飯煮熟,用碗盛飯,拿筷子,然后一口一口的吃飯。對(duì),描述的還算詳細(xì),這是面向過(guò)程的思維模式,容易想到,卻難以全面。無(wú)法實(shí)現(xiàn)更多可供選擇功能,再次開發(fā)更改困難。面向?qū)ο蟮乃季S方式,首先,吃飯,需要一個(gè)主體來(lái)實(shí)施這個(gè)行為,因此我們需要一個(gè)“類”,這個(gè)類中有“吃飯”這個(gè)方法。我們要完成吃飯,就用“類”產(chǎn)生一個(gè)對(duì)象,通過(guò)對(duì)象來(lái)調(diào)用類中吃飯的方法,就可以完成吃飯。還可以添加多種功能,后期修改容易。這時(shí)候,雖然還是沒(méi)實(shí)現(xiàn)吃飯這個(gè)方法,僅僅只是調(diào)用了原有類的方法,如果原本就沒(méi)有這個(gè)類和類種方法,又該如何?這個(gè)問(wèn)題大家想過(guò),那些編程語(yǔ)言的創(chuàng)始人肯定也想到過(guò),他們已經(jīng)將大部分的方法寫好并進(jìn)行了封裝,我們只需要通過(guò)上述的方式調(diào)用即可。現(xiàn)成沒(méi)有的功能方法,我們也可以按照面向?qū)ο笏季S方式來(lái)創(chuàng)建一個(gè)類,再為這個(gè)類賦予我們需要的方法,以后我們就可以通過(guò)類產(chǎn)生對(duì)象來(lái)調(diào)用相應(yīng)的方法。
本文部分摘自it985博客中的sunny的文章面向?qū)ο缶幊趟枷耄ㄒ唬?/p>