面向過(guò)程和面向?qū)ο?,這兩個(gè)概念要清楚!
關(guān)于面向過(guò)程和面向?qū)ο蟮母拍?,是個(gè)老大難的問(wèn)題。如果平時(shí)不寫(xiě)代碼,理解這兩個(gè)概念還是有些困難的。
這不是聰明與否的問(wèn)題,在于處理問(wèn)題域的思想。
簡(jiǎn)單來(lái)說(shuō),對(duì)象由屬性和方法組成。屬性是這個(gè)對(duì)象具有的特征,而方法是對(duì)象能進(jìn)行的操作。

下面這只小狗可以看成一個(gè)對(duì)象,它毛毛的顏色是這個(gè)對(duì)象的屬性,它會(huì)汪汪汪的叫,這是他的方法,它能進(jìn)行的操作。

下面這個(gè)毛絨玩具也一樣,它的顏色是橘色,這是屬性。它里面有個(gè)揚(yáng)聲器會(huì)發(fā)音這是他的方法。

下面這兩位也可以看成是對(duì)象,大家可以展開(kāi)想象,他們有什么屬性和方法?


直播課的時(shí)候,有學(xué)員問(wèn),帥是屬性還是方法。
我覺(jué)得要是平常的,一般的帥,應(yīng)該算是屬性。
但你要是帥的驚動(dòng)了黨,那就是方法了。
面向?qū)ο蟮某绦蛟O(shè)計(jì)是外來(lái)的,所以翻譯上會(huì)有不同,比如屬性,有的書(shū)上說(shuō)是狀態(tài),方法有的書(shū)上說(shuō)的是行為,對(duì)于這些名詞翻譯上的不一致,大家了解下。
下面是分別用面向?qū)ο蠛兔嫦蜻^(guò)程思想編程的例子。
面向過(guò)程是通過(guò)一個(gè)個(gè)游離的方法(函數(shù))來(lái)實(shí)現(xiàn)系統(tǒng)功能,比如開(kāi)門(mén)這個(gè)方法open(Door door),其中door是被作為操作參數(shù)傳入方法的,在方法內(nèi)定義開(kāi)門(mén)的屬性和相關(guān)操作。
面向?qū)ο笫鞘紫榷x一個(gè)對(duì)象Door,然后抽象出開(kāi)門(mén)的屬性和相關(guān)操作,屬性包括門(mén)的尺寸、顏色等,門(mén)這個(gè)對(duì)象的操作包含(封裝)了open()和close()等。在寫(xiě)程序的時(shí)候只要new(構(gòu)造)一個(gè)Door對(duì)象,然后就可以調(diào)用這個(gè)對(duì)象的方法了。當(dāng)然這些方法有私有的、也有公開(kāi)的,這些更深入的情況我們就不詳細(xì)說(shuō)了。
在做軟件開(kāi)發(fā)的時(shí)候,經(jīng)常會(huì)把需求說(shuō)成「用戶故事」。那我們也可以這樣來(lái)看這兩個(gè)概念。
你的程序要完成一個(gè)任務(wù),相當(dāng)于講一個(gè)故事。?面向過(guò)程是編年史,面向?qū)ο笫羌o(jì)傳史。
對(duì)于復(fù)雜的程序(宏大的故事),事實(shí)都證明了,面向?qū)ο螅o(jì)傳)是更合適的表述方法。