武永成
摘要:C++面向對象程序設計是大多數本科院校計算機專業的必修課。本文以應用型本科院校計算機專業為背景,分析了當前C++教學過程中存在的一些問題,從教學內容和教學方法等方面提出了相應的改進辦法。實踐證明這些方法是有效的。
關鍵詞:C++面向對象程序設計;計算機專業;教學改革
中圖分類號:G642.0 ? ? 文獻標志碼:A ? ? 文章編號:1674-9324(2015)25-0138-02
C++面向對象程序設計是大多數本科院校計算機專業的必修課。面向對象程序設計(以C++和Java為主要代表)是與面向過程程序設計(以C語言為主要代表)完全不同的一種程序設計范型,是目前軟件開發和程序設計的主要方法。C++面向對象程序設計以C++語言為載體,圍繞面向對象程序設計的封裝性、繼承性和多態性,重點講述C++面向對象程序設計的語法規則、編程方法和應用。
一、C++教學過程中存在的問題
高等院校的最重要的功能是培養人才。作為我國高等教育的重要組成部分,應用型本科院校的主要功能是培養符合經濟社會發展需要的、具有一定創新精神的應用型人才。應用型本科院校中培養的應用型人才應具有較為扎實的基礎知識、實踐能力和創新精神,較強社會責任感的高級應用型人才;應該具有協調發展的知識、能力、素質,社會適應性較強,能夠適應市場經濟大潮并在其中奮勇前進的“好使頂用”的應用型人才;區域經濟社會發展主戰場應該是他們的拼搏之地,他們應該具有較強職業意識和區域意識,在地方應該能留得住、下得去、用得上。
計算機專業是一個以應用為主的專業,“C++面向對象程序設計”是一門實踐性很強的課程。教師的教學方式應該為:在進行理論教學的同時,必須讓學生在不斷實踐中來全面掌握面向對象的核心思想,以及多變靈活的編程方法與技巧。當前,教師在講授本門課程時,一般采用傳統方法:理論教學和實踐操作相結合,課堂上教師講授原理和知識,實踐課時學生上機操作,完成一些實驗題目,這種教學方式存在許多的問題,主要表現在以下三個個方面。
1.如前所述,C++面向對象程序設計,既涉及面向對象程序設計的三大特性(封裝性、繼承性和多態性),又涉及C++自身的語法規則,在授課的過程中,很多教師將教學的重點放在C++的語法規則等理論講授上,該課程的考核方式是期末通過一次試卷考試來決定。很多學生認為只要期末考試考的高,就表明這門課學的好。
上述這種現象最大的問題是,一些理論學的好、分數考得高的同學,真正動手編程解決實際問題時,表現卻差強人意。這就像一個學音樂的同學,理論學了很多,但卻不會演奏自己的樂器。作者所在學校為地方本科院校,屬于應用型本科院校范圍。與傳統的本科教育不同,應用型本科學校必須以需求為導向,以應用為根本。其主要任務是培養學生運用理論解決實際問題的操作技能,沒有能解決實際問題的操作技能,所有的理論和知識都是紙上談兵。
2.教學內容以教材為主,很少引入具有實際項目應用的例子。計算機技術發展很快,教材內容比較陳舊,落后于目前市場需求,無法達到滿意的教學效果。
3.實踐教學重視不夠。實驗內容設計針對性不強。實驗指導書上的實驗內容,許多是驗證性的實驗,對于一些設計性的實驗,針對性和實用性不強,不能激發學生的興趣和創新精神。有些學生也不太重視實際動手能力的培養,認為理解了相應的知識和概念就行了,至于編寫程序、尤其是調試程序,又費時又費力,積極性不高。其實上機實驗就是要求學生編寫程序。衡量學生程序能力高低的一個重要指標就是調試程序能力。由于基礎實驗時學生沒有打好相應的基礎,到了綜合性實驗和課程設計,學生更覺得困難重重。
二、語法知識夠用,重點在面向對象程序設計思想
理論教學上,重點應放在面向對象程序設計思想上。畢竟,它與C語言的面向過程的程序設計思想,有很大的不同。重點讓學生理解類和對象的關系,成員變量和成員函數、構造函數和析構函數,封裝性的實現,繼承性的實現和多態性的實現。一些很細的語法規則,對象的復制與賦值、友元、多重繼承、虛基類、用戶自定義類型的輸入輸出等,則點到為止,不要花太多時間在課堂上講授。在實際應用的過程中,用到該知識點時,學生會查閱相關資料自行解決即可。如講授構造函數時,關鍵是講明在面向對象程序設計中,為什么要構造函數?它是由面向對象程序設計的哪一個特性決定的?還要通過程序舉例,說明為什么一個類在定義了默認的構造函數以外,通常還要定義帶參數的構造函數;在講授繼承時,除了講授派生類的定義方法外,關鍵是讓學生理解,作為面向對象程序設計的主要特征之一,它不僅能一定程度減少代碼的冗余性,更重要的是,它使得一個龐大的系統變得更條理清晰,便于管理;在講授多態時,先要講授子對象父對象的賦值兼容。而子對象父對象的賦值兼容規則可以使得通過父類型的指針或引用調用子類型的成員方法,這種特性可以大大提高大型軟件程序設計的可擴展性;在講授異常時,先通過程序舉例的方式分析異常產生的原因,然后先指出面向過程的程序設計中是怎樣處理異常的,再講述面向對象的程序設計是如何處理異常的,以及C++的異常處理,通過對比的方式,使學生更好地掌握C++面向對象程序設計思想。
三、項目案例教學
在學生掌握了C++面向對象程序設計最基本的結構和方法后,一定要選取合適的項目案例進行教學。這些項目案例既要包含基本的知識點,又要有一定的實際應用背景,難度適中。如果整個課程講完,都只是講授一般教材上的例題,學生練習的也只是課后的基本知識點的習題,這樣的教學效果肯定是不好的。學生學到的都是一些零散的知識,根本沒有接觸到真正的軟件開發和程序設計的實踐,根本沒有提高解決實際問題的動手能力和創新能力。對于C++面向對象的程序設計和軟件開發,只能算是知道一些皮毛。
例如,將一個小項目“圖書管理系統”的C++實現貫穿在整個課程的教學過程中。分階段逐步實現。先是學會建立相應的類和對象,建立類的構造函數和析構函數,確定類的成員變量,設計和實現類的成員函數。利用這些對象,進行相應數據的增、刪、改和查詢的功能。這時因為還沒學C++的文件流,數據都放在內存中,用數組或鏈表進行存放。而當講到C++的文件流時,相關的數據則是放在文件中,涉及文件的讀、寫操作。關鍵是有實際應用背景的項目案例,而不能是為講授某個知識點而編造出的脫離實際的例子。只有這樣,才能真正激發學生學習的興趣。要知道,興趣是最好得老師。endprint
四、重視和強化校內實踐環節
由于種種原因,學生不是很重視編程實踐,老師往往由于帶的學生比較多,對于學生的實踐環節,通常沒有像重視課堂教學那樣重視。很多學生即使是教材上的例子,要他們編輯調試出來,都很困難,碰到一點點問題,都調試不出來。問題的根本在于學生和教師對實踐環節的不太重視。這樣的學生,到了課程設計時,簡直就是寸步難行。從驗證性試驗開始,就要督促學生多編程、多調試。
C++面向對象課程設計是對本課程的綜合應用和實踐的檢驗,對于學生真正掌握本門課程起著至關重要的作用。可以毫不夸張地說,學生課程設計的質量和水平,才真正反映本課程的教學效果。
首先課程設計的題目不能千篇一律,要有針對性。否則,學生根本不動腦筋,直接從網上復制粘貼下來。其次,應該真正落實學生課程設計的時間。許多課程設計都是安排在學期的期末,一般2周時間。但學生期末往往要準備各門課程的期末考試,包括C++本身的期末試卷考試,真正沉下心來做課程設計的不多。
五、加強校企合作的實訓
完成C++面向對象程序設計的課程設計,應該說本門課程的基本教學任務完成。但是,如果認為學生現在就能用C++去到軟件公司進行程序設計工作,則顯然是不行的。C++語言實際軟件開發中的應用非常廣泛,如應用于游戲娛樂、桌面系統、基礎軟件、音頻視頻、網絡通信等諸多領域,是世界上使用最廣泛的編程語言之一。隨著物聯網技術的發展,C/C++技術在3G網絡通信(移動網絡、互聯網等專用網絡)、多媒體處理、智能識別等領域得到了進一步的推動和發展。每一個應用領域都有自身的一些特點和環境。使用的平臺,windows平臺用VC6.0或者vs2010,linux用GCC,不同的平臺和環境,也有很大的不同。學校可以有針對性的在某些具體應用領域,與軟件企業開展校企合作。學校通過與軟件企業的合作,可以及時掌握軟件行業的最新發展動態,對人才的最新需求,有針對性地培養人才。在企業軟件工程師及學校教師的共同指導下,使學生在企業環境中進行項目實訓、頂崗學習,培養學生技術能力、職業素質,積累項目開發的經驗,培養學生分析問題、解決問題、總結問題的能力,實現與軟件企業的真正零距離接觸。與此同時,以頂崗實習時的實際項目為題,進行畢業設計,是一個非常好的進一步鞏固和升華C++面向對象程序設計的方法。這樣的論文有企業項目實際背景,技術較為先進,內容更加充實,有很好的實際應用價值。
六、結語
無論從理論和實踐上講,C++面向對象程序設計對于計算機專業的學生來說,都是十分重要的。文章在分析了當前C++面向對象程序設計教學過程中的一些不足,提出了在教學內容、教學方法上一些行之有效的辦法。教學改革只有進行時,沒有完成時。隨著實際情況發生變化,教學改革也應該隨之而變化,在今后的工作中,我們將不斷探索、不斷前進。
參考文獻:
[1]李素若.C++面向對象程序設計[M].北京:中國水利水電出版社,2013
[2]丁智國,錢婕.面向對象程序設計課程教學改革[J].計算機教育,2011(9):9-12.
[3]伍維根,鐘玉良,文忠波,等.應用型人才培養的探索與實踐[J].教育發展研究,2007(21):53-55.endprint