周則明 胡友彬 張鵬 馬寧 蔣林
摘要:面向對象程序設計是信息類專業的選修課程,是培養學生編程能力的重要載體。本文探討了該類課程在課程設置、內容選擇、教學與實踐環節設計、新型教學方法探究等方面需要注意的幾個問題,以期提升該類課程的教學效果,適應學生未來崗位的任職需求。
關鍵詞:面向對象程序設計;教學模式;微課;高效課堂
中圖分類號:G642.0 ? ? 文獻標志碼:A ? ? 文章編號:1674-9324(2016)08-0209-02
面向對象程序設計是目前編程技術的主流方法,是掌握像C#、Visual Basic、Java等開發工具的基礎[1],也是學習《數據結構》、《操作系統》等使用C++或Java語言作為算法示例的后續課程的前提,更是培養鍛煉學生程序設計思維的重要環節。所以,面向對象的程序設計是信息類專業的必修內容,在學生全期培養中尤為重要。為促進學生深入掌握面向對象的程序設計方法,解放軍理工大學相關專業開設了《C++程序設計》和《Java程序設計》等課程。本文針對該類課程的特點,重點探討教學實施過程中應突出關注的幾個問題。
一、面向對象程序設計教學的特點
《C++程序設計》開設于第5學期,60學時;《Java程序設計》開設于第7學期,40學時。《C++程序設計》教學內容包括類的抽象與封裝、類的繼承與多態、操作符重載、STL編程等內容;《Java程序設計》還包括JDBC數據庫訪問、多線程序設計、Java集合框架等很有Java特色的內容。該類課程的特點是:概念多、知識點分散、實踐性強、入門容易提高難。面向對象的編程思想串聯了整個教材,但面向對象的軟件工程方法著墨不多,因此需要在教學過程中注重講清概念,沿著舉例—模仿—實踐—開發的鏈條引導學生理解面向對象的編程思想,掌握面向抽象的編程方法。
二、提高課程教學效果探微
1.銜接好C語言向C++語言的過渡。由于前期已經開設了《C語言程序設計》,學生具備了一定的程序設計基礎。C語言是面向過程的程序設計語言,由于先入為主,學生在學習《C++程序設計》時會有一定的困難,需要將程序設計的思想從面向過程轉變為面向對象。教學時可從結構體入手,過渡到C++的設計。此外,注意講解與C語言有區別的部分,如帶默認值的函數、重載函數、引用的概念等。教學過程中應精心準備實例,少講概念,通過典型例程來說明知識點和程序的設計要點。
2.處理好程序設計教學與面向對象的理論教學之間的關系。目前比較經典的C++或Java教材,對面向對象的分析和設計理論介紹不多。在教學過程中應適當補充介紹面向對象理論研究的最新進展和成果,注意基本概念和基本方法的講解。面向對象的分析重點介紹三種模型:功能模型、對象模型、動態模型。用面向對象的方法建模時,可借助于UML的用例圖表述需求,再使用類圖定義類及之間的關系。對于簡單的設計問題,可畫出用例圖和類圖;對于較復雜的設計問題,則應畫出順序圖和協作圖。Rational Rose[2]是一種比較好的建模工具,定義類圖后能自動生成代碼框架,提高了編程效率。
3.厘清面向對象語言間的區別與聯系。目前,Java的應用面非常廣泛,由于其跨平臺性和開發工具的開源性,已經成為主流的開發工具。從對程序員的調查來看,軟件設計人員最應該熟練掌握的程序設計工具是C++和Java。作為C++語言的后續教學內容,在Java教學中要注意與C++語言的區別,例如Java語言中的引用變量不是C++中用缺省構造函數構造的對象;Java的數組是對象而不是指針;Java的多態性實現方式與C++有差別;Java的內存管理技術也有很大的不同。總之,在教學過程中對容易混淆的概念和方法要多講解,多通過實例解釋和說明。
4.統籌好理論教學、上機實習和課程設計的循環遞進。要學好程序設計,使其真正成為必備的工具,只在課堂上聽講是遠遠不夠的,程序設計有一個聽懂、模仿、反復實習的過程。在教學過程中,需要注重上機實習環節。教員應精心選擇實習課題,對編譯器生成的錯誤提示要求學生看懂并知道如何排錯。此外,應當讓學生熟練掌握設置斷點、單步執行、觀察局部變量或對象狀態的方法。將程序從開始到結束單步執行一遍,對該程序的理解就會加深一層,讓學生熟練掌握調試程序的方法是十分重要的。教學過程中常常發現,一種語言學完之后,對于較復雜的程序學生還是難以下手。為了提高編程能力,可以考慮增加課程設計環節。由于課時數的限制,該設計可在課后完成,這就要求教員合理設計課題,既要注意難度也要注意廣度。學生除了編寫程序之外,還應編寫文檔使用如用例圖、類圖等工具描述需求分析和設計結果。
5.引進微課、翻轉課堂等新型教學模式。程序設計類課程知識點分散,具有碎片化的特征,非常適合以“微課”作為輔助教學手段[3-5],促進課上教學和學生課下自主學習。此外,微課也是翻轉式課堂的重要支撐工具[6-8]。為此,需要結合教學實踐,分析將每個章節的編程要點“碎片化”的方法;根據課程教學的總體要求,確定“微課”內容在整個教學活動中的比重;針對不同類型的教學內容,以“微視頻”為微課的核心,圍繞知識點和教學環節來設計制作微課,逐步將微課資源拓展到“微型教學活動”。如C++操作符重載部分,可用矩陣的加減及乘法運算為實例,制作10分鐘的微課,講清作為類成員和友元成員函數的設計方法。再如,在JAVA的JDBC訪問技術中,圍繞“增刪改查”的基本操作,通過微課拓展下列內容:插入記錄時獲取自動增量主鍵的方法、記錄的批處理方法、信息管理系統中邏輯業務層與數據訪問層的設計方法。
6.幫助學生進行課程拓展學習。由于課時的限制,教材中只對面向對象程序設計的基礎內容做了介紹,要深入理解編程的思想和精髓,需要學生多看參考文獻,多做設計和開發工作。可以根據學生的實際水平推薦適合的參考資料以拓寬學生的視野,像《Inside C++ Object Model》之類的經典教材介紹了許多C++設計和編譯中的難點,《Visual C++技術內幕》是非常有影響的C++應用開發參考資料,《STL開發指南》則介紹了STL中的各種標準算法,等等,以進一步激發學生的學習興趣,提高編程水平。
7.優化課程設置和教材選用。目前《Java語言》與C++課程銜接不夠緊密,一般而言,在C++之后銜接開設Java語言課程,更有利于掌握Java語言和鞏固C++的學習效果,促進學生在完成基本知識的學習之后,通過自學熟悉Java的各種開發環境和開發架構,不斷提高軟件開發的水平。
此外,目前使用的數據結構教材用C語言描述各種算法,而實際上各種數據對象的抽象數據類型(ADT)與類描述是一致的,建議選擇用C++或Java描述的數據結構作為教材,這樣與面向對象程序設計課程有比較好的銜接,此外數據結構中的各種算法也可以以類庫的方式用于C++和Java的應用程序開發。
三、結語
面向對象的程序設計方法是學生必須熟練掌握的內容,也是學習后續課程的基礎。本文探討了該類課程在課程設置、內容重點、教學環節設計、教學方法等方面需要注意的幾個問題。為進一步提升教學效果,還需要深入研究新的教學理念,引入新的教學方法,以期不斷提高學生的編程能力和軟件工程開發能力,從而滿足信息化作戰條件下未來崗位的任職需求。
參考文獻:
[1]唐大仕.“遞歸算法”微課教學設計——以“文科計算機基礎(下)”為例[J].計算機教育,2013,(17):5-7.
[2]解本巨,李曉娜,宮生文.UML與Rational Rose 2003從入門到精通[M].電子工業出版社,2010:22-28.
[3]吳嬋.關于微課對優化高校教學效果的思考[J].高教論壇,2013,(10):17-18.
[4]程嵐,肖貴橋,王英,朱莉.微課教學設計思路探討[J].江西電力職業技術學院學報,2013,(26):79-81.
[5]胡鐵生.“微課”:區域教育信息資源發展的新趨勢[J].電化教育研究,2011,(10):62-63.
[6]張旸,蒙澤察.“導學案教學”與“翻轉課堂”的價值、限度與共生[J].全球教育展望,2013,(7):10-14.
[7]朱宏潔,朱赟.翻轉課堂及其有效實施策略芻議[J].電化教育研究,2013,(8):79-83.
[8]張莉靖,曹殿波.“翻轉課堂”教學模式研究[J].陜西教育(高教),2014,(1-2):91-92.