陳 彬
(武漢科技大學信息科學與工程學院,湖北 武漢430081)
面向對象是一種非常重要的軟件設計方法,是計算機領域對現實世界進行分析和抽象的有效方法,是計算機軟件設計發展到一定階段的必然產物。隨著軟件規模的日益增加,面向對象程序設計相對與傳統的面向過程的程序設計方法有易于維護、重用性好、開發效率高以及易擴展等優點。C++是在C語言基礎上衍生出的一種高級編程語言,C++不僅支持面向對象編程且完全兼容C語言,因此“C++面向對象程序設計”課程在電子信息工程專業的本科教學階段發揮著重要的作用。
作者長期從事電子信息工程專業計算機類課程的教學工作,本節以我校(武漢科技大學)電子信息工程專業為例說明本課程的基本情況。
“C++面向對象程序設計”作為電子信息工程專業的選修課程,總課時為48學時,其中課堂教學為40學時,實踐課時為8學時。“C++面向對象程序設計”課程安排在本科階段的第六學期,此時電子信息工程專業學生已完成了“計算機應用基礎”、“C語言程序設計”以及“數據結構”等先修課程的學習,且“微機原理及應用”等專業課程也以C語言作為其主要設計語言,同時考慮本課程是一門非限選課,故而選修該課程的學生在學習本課程時已具備相當的C語言基礎,面向過程的程序設計方法也較為熟悉。
在實際教學過程中,“C++面向對象程序設計”的課程教學往往存在以下幾個問題:
第一,教師在教學過程中往往將重點放在了“C++”上,重點講解“C++”的語法及使用方法,把本課程當成了一門純粹的計算機語言類課程來教學,忽略了“面向對象”這一關鍵問題的講解。
第二,理論教學與實踐教學比例失調,過分注重概念及知識點的傳授而忽略了實踐環節,從而導致學生雖然能較好地應付試卷的考查,但設計程序、編寫程序以及調試程序的動手能力較差。
第三,考核環節多以試卷考查為主,對實踐考查不夠重視,不利于引導學生自發培養其綜合應用能力。
2.1.1 突出面向對象目標
在學習“C++面向對象程序設計”課程之前,學生已經完成了“C語言程序設計”的學習,而C++語言延續了C語言的主要語法特性,兩者的語法差異不大,因此將“C++面向對象程序設計”課程當成一門純粹的C++語言教學的課程來講授,而忽略了培養學生面向對象的程序設計思想,顯然是舍本逐末。故而,在本課程教學過程中,教師應貫徹以“面向對象”為主導,注重對比學生熟悉的面向過程的程序設計方法說明面向對象特性,如封裝性、繼承性和多態性等的應用背景,原理及其優點等;而后介紹如何利用C++加以實現這些特性,期間對新概念,新語法做簡要的介紹,如此才能培養學生面向對象的思維方式,體現本課程的教學目的。
2.1.2 多種教學方式相結合
“C++面向對象程序設計”是一門實用性很強的工程性課程,本課程的每個知識點都有其提出的應用背景。因此在課堂教學過程中,教師需轉變傳統單向、平鋪直敘、灌輸式的教學方法,進而利用啟發式教學方法,引導學生思考、理解所學知識,主動探索解決問題的方法,培養其分析問題、解決問題的能力,將教師從知識傳授者轉變為科學發現過程中的引導者[1]。
此外,在平時教學中應引導、鼓勵學生查閱資料或通過網絡收集、學習知識。C++作為一種主流面向對象設計語言,網絡上眾多資深軟件設計人員總結、歸納了豐富的經驗和各種解決實際問題的方法,這些經驗、方法對于初學本課程的學生加深對知識點的理解、提高其綜合素質裨益匪淺。
2.1.3 多種教學手段向結合
多媒體教學方法是目前廣泛應用的教學手段之一,一方面可以減少教師板書時間,提高教學效率,另一方面其直觀性亦得到廣大學生的認可。為更直觀地展示、說明課程內容,激發學生的學習興趣,多媒體課件中應減少文字性描述,取而代之的是圖表及動畫等多種可視化元素。實踐表明,可視化呈現方式比枯燥的文字表述方式更為直接,生動,更能吸引學生的注意力,教學效果更好。
在講授基本原理、方法的同時,教師也應該多使用現場編程、現場調試以及現場運行的實際演示方法對重要知識點進行驗證。一方面可以帶領學生完成驗證性實驗的工作,另一方面可面對面的傳授學生編寫程序以及調試程序的方法和技巧,為學生在實踐教學環節中的學習奠定基礎。
面向對象程序設計是針對開發較大規模的程序而提出來的,目的是提高軟件開發效率[2]。正因如此,學生只有具備相當豐富的實踐經驗才能深入理解面向對象對象程序設計思想,理解C++語言各項設定的應用背景以及C語言的不足和C++的優點。
C++面向對象程序設計課程的實踐教學包含四個實驗,共八個學時,這顯然是不夠的,為了進一步加強實踐教學環節,提高學生面向對象編程能力,可從以下兩個方面對時間教學進行了改革:
首先,充分利用計劃實驗課時安排一些精心設計的小型設計性實驗,為學生體會面向對象程序設計方法創造更多的機會。而驗證性實驗主要依靠教師在課堂上通過實際演示來加以說明,同時將一些較為重要的驗證性實驗布置為課后作業,再利用課堂討論的方式加深學生對基礎知識的了解。
其次,為了給學生創造更多的實踐機會,在教學過程中可布置一些綜合性軟件開發課題,鼓勵學生以分組的形式在課后進行討論、設計和分工協作利用一段較長的時間加以實現,并組織課堂討論,一方面匯報開發進度和經驗總結,另一方面也可與其它小組同學進行交流。
在對課堂教學和實踐教學進行改革的同時,有必要對“C++面向對象程序設計”課程的考核方式進行改革。大學計算機教育應是以計算機應用能力培養為核心的教育[4],因此本課程考核方式上的改革的重點在于改變傳統的試卷考核方式,推廣以實踐為主的考核方式。受到傳統試卷考核形式的制約,試卷考核往往突出考查學生對基本知識點和語法的掌握情況,從而無法突出提高學生面向對象程序設計能力的教學主旨。在實際教學中,可以利用實驗和綜合性課程設計兩種形式考查學生的綜合素質,既可考查學生對C++基本語法的掌握情況又可考查學生利用面向對象進行程序設計的能力,一舉兩得。至于驗收方式則可采用程序驗收、匯報演講和文檔報告相結合的方式綜合考查學生軟件設計能力。
本文從理論教學、實踐教學以及考核方式三個方面對“C++面向對象程序設計”課程的教學改革進行了探索,并在電子信息工程專業該課程的教學工作中加以實踐,效果良好。為了進一步提高該課程的教學質量,提升電信專業學生利用C++進行面向對象程序設計的能力,我們將繼續對教學的各個環節進行探索和改革,以期獲得更大的進步。
[1]邢長友,陳鳴,許博,等.面向創新人才培養的計算機網絡教學改革[J].計算機教育,2013(1):49-52.
[2]譚浩強.C++面向對象程序設計[M].2版.清華大學出版社,2014,7.