最近,我們開始學習計算機圖形學,由于我們專業(yè)是設(shè)計專業(yè),關(guān)于代碼方面的課程總是淺嘗輒止,一些同學很苦惱,他們知道我在計算機學習方面有一定的深入,就跑來問我很多問題,其中一個普遍的問題就是:“面向?qū)ο蟮降资鞘裁???/p>
其實,在我最早學習代碼的時候,遇到的第一個難題就是這個,當時,我花了很多時間,通過了各種渠道,才算弄懂了這個問題。但我花了不少功夫給同學們講,他們表示并不是太懂。于是回想當時學習面向?qū)ο蟮慕?jīng)歷,嘗試把學到的內(nèi)容提煉出來,講給他們聽,果然有所成效。
第一重境界:擬物,讓概念具象
①什么是面向?qū)ο螅?/p>
收音機怎么使用?相信大家都會。但收音機由什么組成呢?相信大家都不知道了。這便是面向?qū)ο?,?b>使用對象時,只關(guān)注對象提供的功能,不關(guān)注內(nèi)部細節(jié)。
②什么是對象?什么是屬性和方法?
收音機由一大堆零件構(gòu)成,被組合和包裝后提供相應(yīng)的功能。故對象是一個整體,對外提供一些操作。
它的外殼是塑料,按鈕是金屬。這就是對象的屬性。按下其中一個按鈕就可以播放接收到的聲音,這就是對象的方法。
③面向?qū)ο笥心男┨攸c?(封裝、繼承、多態(tài),但對于他們,先只講封裝和繼承)
我們把收音機包裝起來,不在乎它的內(nèi)部結(jié)構(gòu)。這就好比是封裝,即不考慮內(nèi)部實現(xiàn),只考慮功能使用。比如說:
class Clock
{
public: //共有成員,外部接口
void SetTime(int NewH,int NewM,int NewS);
void ShowTime();
private: //私有成員,外部無法訪問
int Hour,Minute,Second;
}
我們想改裝收音機,使得它便攜,我們就給手機加上一個手柄,這樣得到的東西,擁有收音機全部的特性和功能,但又多了自己的特性和功能。這就是繼承,即從已有基類上,派生出新的基類。比如說:
classDerive:privateBase1,publicBase2{};
這樣,他們就對面向?qū)ο笥辛嘶镜母拍?,而且紛紛表示我講的他們都明白了,這讓我很有成就感。但是,很快問題就出現(xiàn)了,他們很快就跑來問各種問題——類和對象有什么區(qū)別?繼承里面的pubilic、private等到底是什么?……問題一個接一個,我發(fā)覺并不能一次性有效地解決完,于是我開始反省,我的確用擬物讓概念具象,但面向?qū)ο笫且粋€不小的知識體系,想一下子講清楚很難,但概念與概念間沒有產(chǎn)生聯(lián)系,所以他們不能夠自行解決問題,于是我調(diào)整了講法,使得整體的思路更加清晰。
第二重境界:系統(tǒng)圖加講故事,讓概念成體系。

我就先講故事:從前有一群工人,負責生產(chǎn)收音機,造出來的收音機各式各樣,但用的材料和提供的功能是相同的,于是有一天有個人就造了一臺機器,這臺機器可以生產(chǎn)無數(shù)臺收音機。這臺機器就是類,這個收音機就是對象,而收音機怎么使用呢?(見上第一重境界)……
在這個故事里,我用了連貫的手法敘述所有的概念,使得他們一目了然,再結(jié)合系統(tǒng)圖,使得他們對面向?qū)ο蟮挠辛苏w的把握,這樣問問題的同學越來越少,因為他們終于有了自學的能力。
第三重境界:教學相長,品物外之趣
經(jīng)過這次的“教學經(jīng)歷”,我也體驗了一盤小老師的樂趣,可以說學習十幾年,作為學生,我們最熟悉的職業(yè)是教師,所以我一直也在思考究竟什么樣的方式才是真正好的教學方式。我身邊有很多好老師,甘于奉獻,循循善誘,他們一直想讓教育回歸本質(zhì)。我想這次的經(jīng)歷或許能帶來某些啟示,即用正確的方式讓學生了解整個課程體系,用巧妙的方式激發(fā)他們的興趣和潛能,再讓他們根據(jù)自己的興趣和能力選擇一方面深入學習,這樣的教育可能才更加接近本質(zhì)。
值得一提的是,后來一個同學跑來問我,既然現(xiàn)在都有了造收音機的機器了,那我們?yōu)槭裁催€要拼命去學習怎么造收音機呢?
這個問題很好,我當時沒有立刻回答。我經(jīng)過了一夜的思考,告訴他:“雖然我們有了這么多機器,但都是別人制造的,我們要想真正的創(chuàng)新,就首先要追本溯源去學習原理,這就好比英文雖然有無數(shù)個單詞,但都是由26個字母按照一定的規(guī)則排列的,學習這些基本的原理,不僅更容易讓我們記住這些單詞,還給我們提供了制造新詞語的能力。同理,計算機語言學習亦是如此?!?/p>
這不就是教學相長么?
賺到就要給(奉獻),學到就要教(傳承)。況且,在幫助他人的同時,我們的能力、思想和境界就能更上一層樓!