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