黃勝 李橋
摘 要: 根據(jù)當(dāng)代計算機(jī)系學(xué)生的學(xué)習(xí)現(xiàn)狀,結(jié)合面向?qū)ο蟪绦蛟O(shè)計課程的特點,采用情景和案例教學(xué)相結(jié)合的模式,從理論教學(xué)和實踐教學(xué)兩方面對傳統(tǒng)的教學(xué)方式進(jìn)行改革。從實踐效果來看,改革增加了學(xué)生的學(xué)習(xí)積極性,提高了學(xué)生的實際編程能力,對于培養(yǎng)面向應(yīng)用的高級專門人才具有積極作用。
關(guān)鍵詞: 面向?qū)ο蟪绦蛟O(shè)計; 理論教學(xué); 實踐教學(xué); 案例教學(xué); 情景教學(xué)
中圖分類號:G64 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2016)01-86-03
Teaching research and practice of object oriented programming
Huang Sheng, Li Qiao
(Hunan International Economics University, Changsha, Hunan 410205, China)
Abstract: According to the present situation of students' learning in computer department, combining with the characteristics of object oriented programming, the combination of scene and case teaching mode is used to reform the traditional teaching mode from two aspects of theory teaching and practice teaching. From the practical effect, the reform has increased the students' learning enthusiasm, improved the students' practical ability, and has a positive effect on the training of application-oriented advanced special talents.
Key words: object oriented programming; theory teaching; practice teaching; case teaching; scene teaching
0 引言
近幾年來,隨著信息技術(shù)教育的普及和教育信息化進(jìn)程的推進(jìn),以MOOC(Massive Open Online Course,大規(guī)模開放在線課程)[1]為代表的網(wǎng)絡(luò)化智慧教育和以計算機(jī)類培訓(xùn)機(jī)構(gòu)方式存在的技能培訓(xùn)教育呈現(xiàn)出繁榮態(tài)勢,它們在提升學(xué)生就業(yè)能力的同時,也對高校計算機(jī)教育的存在價值提出了挑戰(zhàn)。在高等教育大眾化背景下,面對其他類型的教育方式提出的挑戰(zhàn),高校計算機(jī)教育應(yīng)積極變革,調(diào)整目標(biāo)知識結(jié)構(gòu)和相應(yīng)課程體系,改善教學(xué)過程,證明自身的存在價值。面向?qū)ο蟪绦蛟O(shè)計是一門實踐性非常強(qiáng)的重要課程,筆者結(jié)合多年的教學(xué)經(jīng)驗,針對面向?qū)ο蟪绦蛟O(shè)計教學(xué)中的難點采用有效的教學(xué)方法,讓學(xué)生在學(xué)習(xí)過程中對面向?qū)ο蟪绦蛟O(shè)計的知識有比較全面的了解和掌握。
1 面向?qū)ο蟪绦蛟O(shè)計教學(xué)中存在的難點
面向?qū)ο蟪绦蛟O(shè)計(以C#語言為例)是當(dāng)今軟件開發(fā)人員和計算機(jī)相關(guān)專業(yè)學(xué)生必須掌握的一項基本技術(shù),是計算機(jī)相關(guān)專業(yè)本科教育的重要內(nèi)容之一[1]。然而從這門課程的教學(xué)實踐情況看,很多同學(xué)掌握了基本語法和概念,如類的定義、封裝性、繼承性和多態(tài)性等,但在遇到具體問題時,卻很少能分析、設(shè)計出符合面向?qū)ο笏枷氲念悂斫鉀Q問題[2]。本文探討在面向?qū)ο蟪绦蛟O(shè)計(以C#語言為例)的教學(xué)中,存在的問題有哪些。
⑴ 學(xué)生的基礎(chǔ)。在高校計算機(jī)專業(yè)課程規(guī)劃中,面向?qū)ο蟪绦蛟O(shè)計語言的先導(dǎo)課程一般是C語言,教師在講授這門課程的過程中,往往將重點放在基本語法和邏輯流程上,這樣學(xué)生缺乏對計算機(jī)程序的感性認(rèn)識,當(dāng)學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計這門課程時,往往感覺抽象晦澀,以至產(chǎn)生頓挫感,繼而排斥該門課程的學(xué)習(xí)。
⑵ 教學(xué)任務(wù)。C#作為一門程序設(shè)計語言,其教學(xué)的首要任務(wù)是使學(xué)生靈活應(yīng)用所學(xué)的知識進(jìn)行編程,培養(yǎng)學(xué)生的編程能力。而C#課程的特點是知識點多、概念多,理論性強(qiáng)。因此,教學(xué)過程上如果先基礎(chǔ),后應(yīng)用,就需要較長的學(xué)習(xí)周期,很難產(chǎn)生階段性的可見成果,無法使學(xué)生產(chǎn)生成就感和持久的學(xué)習(xí)驅(qū)動力[3],這不符合當(dāng)前學(xué)生的心理特點。
⑶ 學(xué)習(xí)風(fēng)氣。時下學(xué)習(xí)風(fēng)氣浮躁在校園里表現(xiàn)較突出,這也是大部分教師在教學(xué)中遇到的一個實際情況。學(xué)生不愿意靜下心來認(rèn)真學(xué)習(xí)。而C#是一門實踐性和關(guān)聯(lián)性較強(qiáng)的課程,當(dāng)學(xué)習(xí)抽象的程序邏輯和全新的數(shù)據(jù)結(jié)構(gòu)時,學(xué)生是聽不會,也看不會的,只有靜下心來認(rèn)真練習(xí)、實踐,才可以掌握[4]。
2 面向?qū)ο蟪绦蛟O(shè)計案例化教學(xué)實踐探索和思考
針對上述幾點問題,在具體的教學(xué)中我們主要采用引導(dǎo)式教學(xué)[5],不直接告訴學(xué)生該怎么做,而是以故事為引子,帶領(lǐng)學(xué)生思考并想辦法解決問題。在解決問題過程中又會產(chǎn)生一些新問題,再繼續(xù)思考、繼續(xù)解決問題,逐層深入,不斷激發(fā)學(xué)生的學(xué)習(xí)興趣和積極性,讓學(xué)生在教學(xué)的每個過程中都能獲得學(xué)習(xí)的成就感,從而取得良好的教學(xué)效果。
這里以面向?qū)ο笕筇匦灾坏睦^承特性的教學(xué)過程為例。本節(jié)的教學(xué)目標(biāo)是通過情景故事的引入[6],讓學(xué)生掌握以下幾個知識點:繼承的基本概念;繼承的使用背景以及它的優(yōu)缺點;運用繼承的方法解決實踐問題。
⑴ 故事引入。一家公司準(zhǔn)備設(shè)計一款鳥類的模擬游戲,SimBird。公司的Joe(面向過程派)和Tom(面向?qū)ο笈桑榱藸帄Z項目設(shè)計的主導(dǎo)權(quán)進(jìn)行了一場你死我活的大辯論。而Jack(新手)在這次辯論中學(xué)會了繼承的基本概念。
⑵ 問題的提出。Joe對著圖1說:“哈哈,Tom,你的設(shè)計里每一個類中都存在著相同的屬性name和相同的方法Quack(鳥類的鳴叫),這樣會造成大量的代碼重復(fù)?!?/p>
Jack看了看,低聲的對Tom說,“Tom,你這個設(shè)計好像真的效率很低呀!”Tom自信的笑了笑,說:“這可不是我的最終設(shè)計,接下來我將用繼承來對它們進(jìn)行優(yōu)化”。
Jack帶著疑問的神情說,“繼承,那是什么呀?”
⑶ 教學(xué)內(nèi)容的引入。與學(xué)生一起分析如何設(shè)計才能提高代碼的編寫效率,既然大家都有共同的屬性name和方法Quack,那么能不能只寫一次,提高效率。這個時候就可以引入繼承的教學(xué)內(nèi)容,告訴學(xué)生繼承的基本概念以及使用它的優(yōu)點。
⑷ 與學(xué)生一起完成上述案例的制作。Jack恍然大悟,“以前總聽說學(xué)習(xí)面向?qū)ο笥腥筇匦院苤匾?,原來這就是繼承呀! 那具體到這個案例如何實現(xiàn)呢?”于是,和學(xué)生一起設(shè)計一個所有鳥類的父類Bird,由它來實現(xiàn)共同的屬性和方法。如圖2所示。
⑸ 問題進(jìn)一步升級。Jack看了看,“嗯,繼承的使用可以提高編碼的效率,但是我還是感覺有點問題?!?/p>
Joe說,“當(dāng)然有問題啦,三種鳥類共用Quack方法,這將導(dǎo)致三種鳥類的叫聲相同,這怎么可能呢?”
Tom,笑了笑,說:“我還有Virtual這個法寶沒使用呢,接著往下看…”。這里將學(xué)生的興趣吸引到下一個問題,虛函數(shù)的使用。
⑹ 總結(jié)教學(xué)內(nèi)容。①繼承的基本概念。②它的使用條件以及優(yōu)缺點。
⑺ 教學(xué)效果的檢測。分析傳統(tǒng)教學(xué)方法和情景案例教學(xué)法學(xué)生學(xué)習(xí)效率的實驗數(shù)據(jù)。其中傳統(tǒng)教學(xué)法的班級編號為1,情景案例教學(xué)法的班級編號為2。
3 總結(jié)
在面向?qū)ο蟪绦蛟O(shè)計課程的教學(xué)過程中,對計算機(jī)相關(guān)專業(yè)的學(xué)生采用本文所述的實踐教學(xué)方法后,激發(fā)了學(xué)生的學(xué)習(xí)興趣,讓學(xué)生主動參與教學(xué)環(huán)節(jié),在學(xué)習(xí)過程中獲得成就感,學(xué)習(xí)效果較傳統(tǒng)的教學(xué)方法效果更好。學(xué)生多次在計算機(jī)作品大賽上獲獎,獲獎等級也越來越高。并且,每年通過國家軟件技術(shù)資格和水平考試的人數(shù)也逐年上升。
我們也看到其中的一些不足,情景加案例的教學(xué)方式加強(qiáng)了學(xué)生對教學(xué)模塊內(nèi)的知識點的掌握,但各教學(xué)模塊之間的聯(lián)系不緊密,不能夠?qū)W(xué)生所學(xué)的知識點串聯(lián)起來。如何將所有的知識模塊統(tǒng)一到我們的教學(xué)方法中來,將是我們下一步研究的重點。我們相信只要我們意識到這些問題的存在,抓住關(guān)鍵問題,充分發(fā)揮自己的主觀能動性,根據(jù)學(xué)生的具體情況進(jìn)行具體分析,進(jìn)一步調(diào)整教學(xué)方法,就一定能收獲更好的教學(xué)效果。
參考文獻(xiàn)(References):
[1] 王穎,張金磊,張寶輝.大規(guī)模網(wǎng)絡(luò)開放課程(MOOC)典型項
目特征分析及啟示[J].遠(yuǎn)程教育雜志,2013.4:67-75
[2] 楊瑞龍,朱征宇.引入軟件設(shè)計模式的面向?qū)ο蟪绦蛟O(shè)計教
學(xué)方法[J].計算機(jī)教育,2012.10.
[3] 張連民,黃春秀.成人學(xué)習(xí)內(nèi)驅(qū)力的構(gòu)成及影響因素分析[J].
北京教育學(xué)院學(xué)報,2011.3.
[4] 呂生榮,張麗萍.Visual Basic程序設(shè)計教學(xué)研究與實踐[J].內(nèi)
蒙古師范大學(xué)學(xué)報(教育科學(xué)版),2012.9.
[5] 于忠海.案例教學(xué)應(yīng)用于新課程的價值與實施策略[J].天津
師范大學(xué)學(xué)報(基礎(chǔ)教育版),2004.4.
[6] 殷士勇.基于現(xiàn)代教育技術(shù)的情景教學(xué)實踐——以鹽城工業(yè)
職業(yè)技術(shù)學(xué)院計算機(jī)基礎(chǔ)課程群教學(xué)為例[J].遼東學(xué)院學(xué)報(自然科學(xué)版),2013.4.