摘要:針對面向對象程序設計課程提出了基于實訓項目的教學方法,文章首先分析了該課程的現狀,然后闡述了基于實訓項目開展教學的必要性,重點討論了教學目標、教學內容設計、課堂實訓項目和學生實訓項目安排等問題。
關鍵詞:面向對象程序設計;實訓項目;教學方法
中圖分類號:G642 文獻標識碼:B
面向對象程序設計是針對計算機相關專業開設的一門程序設計課程,這門課程的目的是向學生介紹面向對象程序設計的思想、理論、方法和技術。本文針對這門課程提出了基于實訓項目的教學方法,并詳細地闡述了其教學目標、內容設計和實訓項目安排等問題。
1課程現狀
據筆者調查統計,面向對象程序設計在各高校主要存在以下三種教學形式。
(1) 以計算機語言為主,側重于介紹面向對象程序設計的思想、概念、理論,類的設計和實現,以及數據封裝、繼承、多態性等有關OOP的機制,如文獻[2]、[4]。采用的語言主要有C++、Java。
(2) 以開發工具為主,側重于介紹面向對象開發工具的使用和相關知識,包括標準控件的使用、軟件開發模式和技巧等,如文獻[3]。采用的開發工具主要有VFP、VB、VC等。
(3) 以介紹面向對象的系統分析與設計方法為主,包括相關軟件工具的使用,如UML、Rational Rose等。
筆者在五年的教學過程中先是采用第一種方式教學,在教學時發現由于面向對象程序設計中概念太多,如果沒有項目經驗,學生很難理解。后來筆者也嘗試著按第二種方式教學,但因為開發工具太強大,在有限的課時內無法完整地介紹完一個開發工具,并且學生總是熱衷于開發一些簡單的項目,而忽視了面向對象理論的掌握。在教學中,筆者逐漸意識到,通過實訓項目將面向對象理論知識和面向對象開發工具的使用有機地串接起來,是一種比較好的教學方法。這就是本文將要探討的基于實訓項目的教學方法。
2基于實訓項目開展教學的必要性
面向對象程序設計課程中的實訓項目,是指在具體的開發工具和編程環境中,從需求分析入手,經過功能設計、算法設計、程序設計、功能測試等環節,通過團隊協作完成具體的軟件項目,鞏固課程知識和學習效果,提過軟件開發實踐能力。
實訓項目在規模和功能上比一般的實驗項目要大,周期也更長。實訓項目完全模擬實際軟件項目開發過程,通過2~4人的團隊完成一個較大規模的項目。學生在實訓項目中積累的軟件開發能力和經驗是實驗項目無法達到的。
在面向對象程序設計課程中可以也完全有必要基于實訓項目來開展教學,原因主要如下:
(1) 這是為實現應用型和技術型人才培養目標所必需的。為實現這個培養目標,相關課程,特別是實踐性很強的課程,應該適應社會和用人單位對人才的需求而不斷完善課程的建設,以提高學生的實踐能力。通過實訓項目教學,學生掌握的理論知識、開發工具使用技巧、軟件開發能力和經驗可以直接應用在今后的工作崗位上。
(2) 這是由課程性質決定的。面向對象理論中的思想、概念等都比較抽象,只有結合具體的、較大規模的軟件項目,學生才能較好地理解和掌握面向對象理論。另外,基于實訓項目開展教學能在較大程度上避免理論知識的枯燥性,激發學生的學習積極性。在實訓項目中,學生可以直接運用理論知識來指導實訓項目,并可以直觀地觀察到相關概念、思想在實訓項目中的體現。
(3) 通過實訓項目中的團隊協作,學生可以互相交流、學習,這種和諧的氛圍能提高學生的學習效率。
(4) 通過實訓項目,師生之間有更多的交流機會,這對教學改革中新型師生關系建立等方面起到了很大的推動作用。
3基于實訓項目的課程教學
本文接下來從教學目標、教學內容安排、課堂實訓項目教學、學生實訓項目安排及考核等方面來闡述基于實訓項目的課程教學。
3.1教學目標
基于實訓項目的教學方法,其教學目標為:
使學生深入理解面向對象的編程思想、概念和方法,掌握面向對象程序設計中數據封裝、繼承、多態性等等有關OOP的機制,掌握類的設計方法,并能在實際的Windows編程中加以靈活運用。
掌握Windows編程基礎知識,熟練掌握VC開發工具,掌握基于API函數和基于MFC的面向對象及可視化程序設計方法。
運用面向對象程序設計理論進行軟件開發,能設計開發出一個中小型綜合性的Windows程序項目。
3.2教學內容設計
為了適應基于實訓項目的教學方法,筆者重新設計了課程的教學內容,包括課堂教學內容和實驗教學內容。
(1) 課堂教學內容分為三部分內容,如表1所示。每部分內容安排如下。
第一部分是基于API函數的可視化程序設計。筆者選擇從API函數入手,向學生介紹Windows編程基礎知識及VC開發工具使用,而不是直接介紹MFC,原因有兩個:① 學生已經先修了程序設計基礎這門課程,已經對函數設計和使用有一定經驗了,而基于API函數的可視化程序設計,其基本模塊也是函數;② 先學API函數,這樣學生更容易理解后續將介紹到的MFC庫中類的實現及類的成員函數使用。
第二部分是面向對象程序設計。這部分內容向學生介紹面向對象程序設計思想、概念和理論,類的概念和設計,包括數據封裝、繼承、多態性等等有關OOP的機制。

第三部分是基于MFC的面向對象與可視化程序設計,向學生介紹強大的MFC開發工具,包括標準控件的使用和視圖/文檔結構。
(2) 實驗教學內容安排。
實驗教學的目的是:① 通過實驗指導、提示、預備知識、演示等形式引導學生獨立完成類的聲明及定義、測試和調試;② 通過任務分解、逐步實現等手段,使得學生循序漸進地掌握面向對象及可視化程序設計方法;③ 從很小規模的項目開始,慢慢擴大項目的規模,使學生在潛移默化中消除對較大規模項目的畏懼感;④ 將實訓項目中應用到的知識分解到眾多的實驗報告中,使得學生通過完成實驗報告后具備了獨立完成實訓項目的能力。
為了達到這些教學目的,筆者設計了許多新穎的實驗任務和項目:
改寫課堂上講過的例題程序,實現指定的功能。
模仿例題程序,實現類似的功能。
從分析程序執行結果,過渡到分析程序執行過程,再過渡到調試程序,逐步掌握調試程序這個關鍵技能。
給出功能較少、規模較小的項目,要求學生自行擴充項目的功能并實現。
給出一個有錯誤的項目,或者功能有缺陷的項目,要求學生改進。
獨立完成一個較小規模的項目。
給出類的聲明,完成類的定義;完成類的完整設計和測試、調試。
通過MSDN查找某個函數,并將英文解釋翻譯成中文,強化MSDN幫助系統的使用。
(3) 課堂實訓項目教學及注意事項
如表1所示,在教學中,筆者通過4個課堂實訓項目將課程知識有機地連接起來。設置課堂實訓項目的目的是:① 通過這些實訓項目,綜合運用和演示課程知識和編程方法;② 在課堂上向學生介紹并演示軟件項目開發方法。
課堂實訓項目的選擇主要考慮了以下原則:
覆蓋課程的主要知識點,并有一定的提高;
規模和難度適中,不至于使學生望而卻步;
實用性強,不能是抽象的、沒有實用價值的項目;
項目中采用了一些典型的編程技術或模式,能在其他項目中推廣;
有一定的趣味性,能吸引學生。
根據以上原則,筆者精選了4個課堂實訓項目,這4個實訓項目涉及到的知識如表2所示。

在安排課堂實訓項目要注意以下事項:
由于4個課堂實訓項目占用了相當一部分課時,必然會造成很多知識無法在課堂上講授。筆者采取的策略是:課堂上只介紹一些基礎的、實用的知識,對于適合以項目演示來講解的知識則在課堂實訓項目中講解。
因為這些課堂實訓項目比實驗報告中的項目規模大得多,學生一時難以理解和接受,所以關鍵在于較好地把握課堂實訓項目的難度,并對這些項目進行合理的分解,循序漸進地向學生講述需求分析、軟件設計、軟件開發過程。
(4) 學生實訓項目安排及考核
隨著教學的進行,學生將完成3個實訓項目,如表1所示。實訓項目以分組(1~3人)方式完成。
實訓項目的考核采用答辯形式進行:對每組學生,隨機抽取一名學生上臺答辯,其他組的學生和老師同時對該學生進行評分。筆者所設計的實訓項目評分表如表3所示,其中“語言表達”和“回答問題”這兩項的評分以上臺答辯的這名學生的表現作為評分的依據。
另外,為考核的公平起見,這3個實訓項目還增加了“難度系數”的指標,難度系數由老師根據學生提交的實訓項目核定,每個小組實訓項目的得分為總分乘以難度系數得到。引入難度系數的目的是希望各小組根據自己的能力獨立完成一個實訓項目。
這種新穎的考核形式和評分內容能充分考察學生在完成實訓項目時對面向對象程序設計思想和方法的綜合運用能力。

4結束語
本文針對面向對象程序設計課程提出了基于實訓項目的教學方法,這種教學方法通過課堂實訓項目將課程知識有效地組織起來,并通過學生實訓項目為學生提供軟件項目實訓的機會。基于實訓項目的教學方法能極大地激發學生學習積極性并充分訓練學生的軟件開發能力。
參考文獻:
[1] 王桂平,馮睿. 以在線實踐為導向的程序設計課程教學新思路[J]. 計算機教育,2008(22).
[2] 張劍波,王婷. 面向對象程序設計課程教學改革與實踐[J]. 黑龍江教育(高教研究與評估),2008(11).
[3] 周江,李兆江,李佩武,等. 面向對象程序設計課程實驗教學改革探討[J]. 實驗科學與技術,2008(2).
[4] 那一沙,吳子東,杜修平. 基于建構主義的面向對象程序設計C++教學[J]. 現代遠距離教育,2008(4).