謝 晉
(湖北理工學院 計算機學院,湖北 黃石435003)
面向對象程序設計是現階段程序設計的主流技術。C++面向對象程序設計語言也是近年來眾多領域廣泛應用的一種計算機語言。它在C語言的基礎上擴充了面向對象機制而形成的一種面向對象程序設計語言。與其他程序設計語言相比,C++語言簡潔、緊湊,功能豐富,表達能力強,使用靈活方便,目標程序效率高,可移植性好,適合編寫各種軟件,尤其是系統軟件。
《C++面向對象程序設計》是計算機專業教學體系中的一門重要主干課程。它不僅是一門程序設計課程,而且是許多專業課程的重要基礎,更是這些專業開展計算機研究、應用和綜合運用本專業知識的重要表達工具和開發工具。
我院給大一學生上學期開設C語言程序設計,下學期開設C++面向對象程序設計,這兩門課程有前后銜接關系。由于有些學生一開始沒打下堅實的C語言基礎,特別是對自定義數據類型、指針、鏈表等較難的內容了解不夠深入。學生在學習C++時,容易受C語言面向過程編程模式的影響,思維還沒完全轉變到面向對象編程模式。在此基礎上學習C++知識,會造成理解上的困難。
C++面向對象程序設計課程中的兩個主要概念是“類”和“對象”,需要學生掌握的基本技能之一就是按照對象的特征進行數據抽象和功能抽象,而學生的思維停留在面向過程的程序設計,對編程中對象和類的抽象,對象和類的關系,理解不透徹。
實驗課上人數很多,平均每個班40多個學生。教師在短短的90分鐘內,不可能對一些同學的問題及時給予答復并且對每位學生進行實驗考核。主動學習能力強的學生有獨立解決問題的能力,這些學生相互交流或者問教師能解決實驗中的疑惑。自主學習能力差的學生不能及時解決問題,又不是每個時候都能得到教師幫助,實驗做的拖拖拉拉,最后就會導致實驗報告以拷貝的方式完成。
課程學習完,絕大部分學生只會做書本和試卷中的練習題,解決實際問題的能力欠佳。實踐鍛煉的學時比較少,還不能動手編制較復雜的程序,難以掌握編程語言的實際應用。
明確學習C++面向對象程序設計的目的和編程模式。注重算法和面向對象程序設計方法和技術。在設計算法中培養學生的獨立思考和創新能力,在面向對象的程序設計過程中體會面向對象的編程思想。為了掌握這個教學方向,第一次課特別關鍵。在第一次課中,需要把面向對象編程模式(即程序=對象+消息)以及類和對象的概念,類和對象的關系講清楚。第一次課傳授好面向對象編程思維模式和學習目的,有了這個鋪墊,后面的課程內容就好開展。
給學生選一本結構清晰、可讀性強的教材是不可或缺的。在此前提下,還可以挑選一些技術書籍,給學生補充課本教材之外的實際技能知識。在網絡技術飛快發展的時代,互聯網提供了很好的學習平臺,學生可以在網上查閱C++編程方面的學習資料,還可以觀看下載教學視頻,在相關網站論壇博客上相互交流等。
課程教學強調算法,突出程序設計的方法和技術,注重學生的邏輯思維訓練和程序設計能力的提高,放棄以語法講授為主的傳統方法。整個教學過程中直接講授面向對象程序設計方法。教師把握好這個主調,將教材里的主要知識點進行抽取總結,對每個章節里的知識點合理運用,解決實際問題。在用C++程序解決問題時,突出面向對象的編程模式,設計一些關鍵問題,讓學生參與討論。通過問題的討論,加強學生抽象邏輯思維能力訓練。
與傳統的板書教學相比,多媒體教學形象生動、圖文并茂、信息量大、交互性好,對課程中難以理解的抽象內容,可以直觀展示,起到事半功倍的效果。并不是一味強調用多媒體教學。傳統的板書教學可以為多媒體教學作輔助手段。例如,課堂里講的重難點知識點以及要注意歸納性的語句都可以在黑板板書。學生在瀏覽ppt文件的同時,不會鉆究于課堂細微末節的知識,而忘了整個課堂知識點框架結構和學習目的。
在C++面向對象程序設計課程中,一些抽象的概念用生活中的現象做比喻,方便學生理解。類和對象的概念與它們之間的關系,可以用生活中磨具與產品比喻類與對象。子類繼承父類時,不同的繼承方式也可以用現實中類似的事例比喻。
運算符函數的重載可以提出問題進行啟發教學。例如,編寫程序,兩個整數相加系統自動完成運算,如果程序里添加復數類的兩個具體對象相加系統不能自動完成。通過這個問題啟發學生,C++程序中對基本類型數據的處理和用戶定義抽象類的對象的處理是不同的。強調面向對象與面向過程的區別。
繼承與派生的知識,函數模板與類模板可以用任務驅動法教學。給出問題,師生共同解決,加深面向對象軟件的可擴充性和可重用性印象。
在C++程序設計教學中,針對不同的知識點采用合理的教學方法,能很好的提高課堂教學效果。
為保證實驗效果,教師應精心設計每一次實驗內容。學生每一次實驗都有明確的實驗目的,每次實驗內容提前給學生,要求提前預習,認真思考,將想好的思路用C++代碼寫入電子文檔。實驗課時,學生帶著預習后寫的代碼上機編譯運行。學生在編譯鏈接程序過程中出現錯誤,教師要教學生調試程序。實驗課結束,學生必須及時上交規范的實驗報告電子檔,其中包括程序的源代碼、程序輸出結果截圖以及實驗總結。教師可以帶著學習能力強,實驗報告做完的學生協助教師做實驗指導工作。不同學生編程思路和不同的編譯問題,反過來更能鍛煉助教學生的實踐能力,一舉兩得。
為加強實驗效果,實驗課上教師不能只講不練。教師應盡量講解決問題的思路或者解題需要注意的問題提出,僅供學生參考。每個實驗有幾個題目,每個學生解題方法和代碼都有不同。在實驗課最后,教師可以針對每個題目,選幾個有代表性的代碼給全班同學學習分享交流,拓寬編程思維。
針對我院《C++面向對象程序設計》教學中存在的問題,本文進行深入分析和思考,對提出的教學方式改革方案在我校近兩年的本科學生進行了實施,效果良好,較好的激發了學生的學習興趣,調動了學生的學習積極性,增強了學生的學習自信心。隨著語言的發展,C++面向對象程序設計教學還會出現許多新的問題和矛盾。在今后的C++教學實踐中,教師還應根據實際情況不斷調整教學思路,改進教學方式,提高教學效果。
[1]王磊,蔡紹峰.C++課程在應用型本科院校中的新型教學模式[J].赤峰學院學報,2013(2).
[2]陳元惠.“C++程序設計”教學方法的研究與實踐[J].牡丹江大學學報,2008(5).
[3]劉波,沈岳,曾瑩.高校計算機項目驅動式教學模式探索[J].計算機教育,2011(2).
[4]譚浩強.C++面向對象程序設計[M].北京:清華大學出版社,2006.
[5]劉建華.計算機語言類課程教學模式初探[J].高教論壇,2005(1).