黃勝 李橋
摘 要: 根據當代計算機系學生的學習現狀,結合面向對象程序設計課程的特點,采用情景和案例教學相結合的模式,從理論教學和實踐教學兩方面對傳統的教學方式進行改革。從實踐效果來看,改革增加了學生的學習積極性,提高了學生的實際編程能力,對于培養面向應用的高級專門人才具有積極作用。
關鍵詞: 面向對象程序設計; 理論教學; 實踐教學; 案例教學; 情景教學
中圖分類號:G64 文獻標志碼: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 引言
近幾年來,隨著信息技術教育的普及和教育信息化進程的推進,以MOOC(Massive Open Online Course,大規模開放在線課程)[1]為代表的網絡化智慧教育和以計算機類培訓機構方式存在的技能培訓教育呈現出繁榮態勢,它們在提升學生就業能力的同時,也對高校計算機教育的存在價值提出了挑戰。在高等教育大眾化背景下,面對其他類型的教育方式提出的挑戰,高校計算機教育應積極變革,調整目標知識結構和相應課程體系,改善教學過程,證明自身的存在價值。面向對象程序設計是一門實踐性非常強的重要課程,筆者結合多年的教學經驗,針對面向對象程序設計教學中的難點采用有效的教學方法,讓學生在學習過程中對面向對象程序設計的知識有比較全面的了解和掌握。
1 面向對象程序設計教學中存在的難點
面向對象程序設計(以C#語言為例)是當今軟件開發人員和計算機相關專業學生必須掌握的一項基本技術,是計算機相關專業本科教育的重要內容之一[1]。然而從這門課程的教學實踐情況看,很多同學掌握了基本語法和概念,如類的定義、封裝性、繼承性和多態性等,但在遇到具體問題時,卻很少能分析、設計出符合面向對象思想的類來解決問題[2]。本文探討在面向對象程序設計(以C#語言為例)的教學中,存在的問題有哪些。
⑴ 學生的基礎。在高校計算機專業課程規劃中,面向對象程序設計語言的先導課程一般是C語言,教師在講授這門課程的過程中,往往將重點放在基本語法和邏輯流程上,這樣學生缺乏對計算機程序的感性認識,當學習面向對象程序設計這門課程時,往往感覺抽象晦澀,以至產生頓挫感,繼而排斥該門課程的學習。
⑵ 教學任務。C#作為一門程序設計語言,其教學的首要任務是使學生靈活應用所學的知識進行編程,培養學生的編程能力。而C#課程的特點是知識點多、概念多,理論性強。因此,教學過程上如果先基礎,后應用,就需要較長的學習周期,很難產生階段性的可見成果,無法使學生產生成就感和持久的學習驅動力[3],這不符合當前學生的心理特點。
⑶ 學習風氣。時下學習風氣浮躁在校園里表現較突出,這也是大部分教師在教學中遇到的一個實際情況。學生不愿意靜下心來認真學習。而C#是一門實踐性和關聯性較強的課程,當學習抽象的程序邏輯和全新的數據結構時,學生是聽不會,也看不會的,只有靜下心來認真練習、實踐,才可以掌握[4]。
2 面向對象程序設計案例化教學實踐探索和思考
針對上述幾點問題,在具體的教學中我們主要采用引導式教學[5],不直接告訴學生該怎么做,而是以故事為引子,帶領學生思考并想辦法解決問題。在解決問題過程中又會產生一些新問題,再繼續思考、繼續解決問題,逐層深入,不斷激發學生的學習興趣和積極性,讓學生在教學的每個過程中都能獲得學習的成就感,從而取得良好的教學效果。
這里以面向對象三大特性之一的繼承特性的教學過程為例。本節的教學目標是通過情景故事的引入[6],讓學生掌握以下幾個知識點:繼承的基本概念;繼承的使用背景以及它的優缺點;運用繼承的方法解決實踐問題。
⑴ 故事引入。一家公司準備設計一款鳥類的模擬游戲,SimBird。公司的Joe(面向過程派)和Tom(面向對象派)為了爭奪項目設計的主導權進行了一場你死我活的大辯論。而Jack(新手)在這次辯論中學會了繼承的基本概念。
⑵ 問題的提出。Joe對著圖1說:“哈哈,Tom,你的設計里每一個類中都存在著相同的屬性name和相同的方法Quack(鳥類的鳴叫),這樣會造成大量的代碼重復。”
Jack看了看,低聲的對Tom說,“Tom,你這個設計好像真的效率很低呀!”Tom自信的笑了笑,說:“這可不是我的最終設計,接下來我將用繼承來對它們進行優化”。
Jack帶著疑問的神情說,“繼承,那是什么呀?”
⑶ 教學內容的引入。與學生一起分析如何設計才能提高代碼的編寫效率,既然大家都有共同的屬性name和方法Quack,那么能不能只寫一次,提高效率。這個時候就可以引入繼承的教學內容,告訴學生繼承的基本概念以及使用它的優點。
⑷ 與學生一起完成上述案例的制作。Jack恍然大悟,“以前總聽說學習面向對象有三大特性很重要,原來這就是繼承呀! 那具體到這個案例如何實現呢?”于是,和學生一起設計一個所有鳥類的父類Bird,由它來實現共同的屬性和方法。如圖2所示。
⑸ 問題進一步升級。Jack看了看,“嗯,繼承的使用可以提高編碼的效率,但是我還是感覺有點問題。”
Joe說,“當然有問題啦,三種鳥類共用Quack方法,這將導致三種鳥類的叫聲相同,這怎么可能呢?”
Tom,笑了笑,說:“我還有Virtual這個法寶沒使用呢,接著往下看…”。這里將學生的興趣吸引到下一個問題,虛函數的使用。
⑹ 總結教學內容。①繼承的基本概念。②它的使用條件以及優缺點。
⑺ 教學效果的檢測。分析傳統教學方法和情景案例教學法學生學習效率的實驗數據。其中傳統教學法的班級編號為1,情景案例教學法的班級編號為2。
3 總結
在面向對象程序設計課程的教學過程中,對計算機相關專業的學生采用本文所述的實踐教學方法后,激發了學生的學習興趣,讓學生主動參與教學環節,在學習過程中獲得成就感,學習效果較傳統的教學方法效果更好。學生多次在計算機作品大賽上獲獎,獲獎等級也越來越高。并且,每年通過國家軟件技術資格和水平考試的人數也逐年上升。
我們也看到其中的一些不足,情景加案例的教學方式加強了學生對教學模塊內的知識點的掌握,但各教學模塊之間的聯系不緊密,不能夠將學生所學的知識點串聯起來。如何將所有的知識模塊統一到我們的教學方法中來,將是我們下一步研究的重點。我們相信只要我們意識到這些問題的存在,抓住關鍵問題,充分發揮自己的主觀能動性,根據學生的具體情況進行具體分析,進一步調整教學方法,就一定能收獲更好的教學效果。
參考文獻(References):
[1] 王穎,張金磊,張寶輝.大規模網絡開放課程(MOOC)典型項
目特征分析及啟示[J].遠程教育雜志,2013.4:67-75
[2] 楊瑞龍,朱征宇.引入軟件設計模式的面向對象程序設計教
學方法[J].計算機教育,2012.10.
[3] 張連民,黃春秀.成人學習內驅力的構成及影響因素分析[J].
北京教育學院學報,2011.3.
[4] 呂生榮,張麗萍.Visual Basic程序設計教學研究與實踐[J].內
蒙古師范大學學報(教育科學版),2012.9.
[5] 于忠海.案例教學應用于新課程的價值與實施策略[J].天津
師范大學學報(基礎教育版),2004.4.
[6] 殷士勇.基于現代教育技術的情景教學實踐——以鹽城工業
職業技術學院計算機基礎課程群教學為例[J].遼東學院學報(自然科學版),2013.4.