「哦。」學生冉苒乖乖站起來。
梁煥鳩占鵲巢,舒坦地坐進了靠椅里,然後拍拍腿:「坐這。」
冉苒被他一拉,坐到了他腿上。
他就喜歡這感覺,那重量剛剛好,胳膊一環,還給人拉靠到自己胸口上。
「面向對象是相對面向過程而言的,C是面向過程的,C#和C++這些是面向對象的。」
梁老師開始授課,「打個比方,比如我這次搬家,我跟搬家公司的人交代要搬哪些東西,有兩種方法。」
「一種是直接告訴他們要搬的物件名稱,比如書、床上用品、衣服等等,列個清單,一一告知,然後他們就按照清單一樣一樣地搬。」
「還有一種,是我事先把物件都裝進箱子里,給每個箱子命個名,然後不告訴他們要搬的東西是什麼,只告訴他們要搬哪些箱子就可以了。」
「你怎麼看這兩種方法的優劣?」
冉苒思索起來:「如果需要搬的東西少,只有幾樣,好認也好記的話,第一種不用裝箱比較省事。但如果東西很多很雜,就只能第二種了,要不然得列好長的清單,不好交代也不好搬,還容易落東西。」
「嗯——」梁煥點著頭,這丫頭是真悟性高啊,一下就找到了關鍵點。
「其實第一種就類似面向過程,每一個定義,每一個方法都是單獨表達,哪裡需要用就在哪裡寫,一看就知道這程序要幹什麼。C語言就是這樣的模式,簡單易懂,入門容易。」
「但現實中的開發一般需要滿足的功能很多,工程量大,代碼量大,一處一處分散著寫定義和方法會非常混亂,所以一般都採用第二種方法,把定義和方法分類封裝起來,做成一個一個的類,各個類能實現什麼一目了然,需要的時候就去找對應的類。類就是封裝成的箱子,籠統一點,你也可以理解為對象,所以叫面向對象。」
「當需要反覆多次使用某個功能的時候,面向對象也更有優勢。就好比你要把一些貨物運去大洋彼岸,中途要更換不同的運輸方式,要經過汽車、火車、飛機、輪船的替換。如果是散裝,每次更換運輸方式的時候,都需要重新交代一次複雜的清單,然後清點貨物。這種時候,那一定是封裝好省事。」
「哦……」冉苒點著頭。
梁煥長臂一伸,操作滑鼠將工程文件里的一段程序選中:「這裡就是一個類的定義,上下兩端的大括號你可以看成是箱子,括起來的這些就是箱子里的貨物。」
「原來是這樣封裝的。」冉苒探頭仔細看,「你的代碼寫得很整潔,而且處處都寫了詳細的注釋,每個地方是實現什麼功能的寫得很清楚明白,現在你給我講了整體的思路,我好像能看懂什麼意思了。」
「嗯。」梁煥欣然一笑,「你不是說比起搭建,更擅長拆解嗎,讀懂這種程序大概就跟拆箱子差不多吧。」
冉苒又專心地閱讀起來,這次有了頭緒,她看得更起勁。
梁煥等了一會兒,困意來襲,拍拍她:「下回再接著教你,我去吹個頭,然後就睡覺啊。」
冉苒站起來讓他,眼睛卻還死死黏在屏幕上。
小貼士:如果覺得不錯,記得收藏網址或推薦給朋友哦~拜託啦 (>.<)
<span>: ||
