李海波
(華僑大學計算機科學與技術學院 福建廈門 361021)
大學新生面向對象編程能力的提高方法
李海波
(華僑大學計算機科學與技術學院 福建廈門 361021)
面向對象編程通常是大學新生的必修課,是重要的計算機專業(yè)基礎課。針對近幾年教學過程中暴露出的種種問題,通過分析大學新生的思維特點以及該課程特點,提出相應的對策,即從轉變思維模式入手,訓練編程能力,再加強課程實訓環(huán)節(jié),三位一體從根本上提高新生的編程能力。通過對比,幾屆新生的編程能力有明顯提升。
面向對象;編程;大學新生
面向對象編程是計算機科學與技術、軟件工程學科的一門重要的基礎必修課,也是未來從事這些專業(yè)的程序開發(fā)基礎[1]。面向對象(Object Oriented,OO)是一種程序設計模式和思想,是上個世紀90年代軟件開發(fā)方法的主流,也是當前計算機界關心的重點[2]。目前,面向對象的概念和應用已超越了程序設計和軟件開發(fā),擴展到很寬的范圍[3]。支持面向對象的語言很多,對大學新生來說,所接觸的第一個面向對象編程語言就是C++語言。在教學過程中我們發(fā)現(xiàn),大多數學生反映這門課非常難,面對程序語句不知所措,而且經常無法擺脫數學上的習慣,比如一些符號和概念,學到面向對象核心部分時,至少一半學生處于掉隊狀態(tài)。因此,思維模式的扭轉必須潛移默化地融入到這門課的教學中,才能提高新生對面向對象以及C++語言的理解能力,為其他后續(xù)課程打好基礎。本文首先分析大學新生存在的一些問題,然后從幾個方面探討和研究如何提高新生面向對象的編程能力,并提出具體的方法改善該門課的教學質量。
大學新生剛剛結束高中時代步入大學,學習方式仍然以老師教為主,尚未建立主動思考和自學的習慣,而且潛意識里“范圍”的概念根深蒂固,教學大綱、教材內容的范圍演化為思維模式的限制,問題就更加嚴重,久而久之,滋生惰性。面向對象編程這門課中,C++的語法規(guī)則是固定的,但由此演繹出的編程思路是無窮的,從這點意義上講,該門課更需要創(chuàng)造精神和創(chuàng)造力。
通過多年的教學經驗,基本概念的講解是面向對象編程啟蒙階段的重點。面向對象程序設計教材在講解基礎知識時,雖然章節(jié)編排上盡量保證知識理解的循序漸進,但內容上不可避免地會有交叉,比如函數一章雖然重點講函數的語法規(guī)則以及編寫方法,但第一章就會出現(xiàn)一個主函數main(),這就不得不在第一章簡單解釋“函數”這一概念。
(一)建立高級語言的規(guī)則
新生在編寫C++程序時,運用表達式時仍然受數學的影響,比如課堂練習時,經常把除法寫成“÷”,上機訓練時仍然試圖把π、∑、≠、√等數學符號寫入程序,經常想當然地認為C++中的各種數據類型和數學的差不多,遇到數值類型轉換的時候自然難以理解。究其原因,主要還是數學習慣在作怪,但C++初學時采用的例子、算法等大多是數學公式,這更加深了學生的混淆。面對這樣的情況,我們還是應該強化基本表達式的訓練,努力扭轉數學符號的習慣,在新生的頭腦中建立起一套高級語言的規(guī)則。
(二)理解面向對象
面向對象編程(Object-Oriented Programming OOP)提供了一種新的模型。在這種模型里,編程的思考方式不再是針對功能的先后步驟而是完成某項功能的要素與參與對象。它傾向于仿真模擬現(xiàn)實世界,提出了類和對象這兩個概念,我們將現(xiàn)實世界中實際存在的事物按類劃分,同類中的事物具有相同的屬性。面向對象的本質是更接近于一種人類認知事物所采用的哲學觀計算模型[4]。在具體編程過程中,我們并不急于去研究功能,而首先分析完成這項功能所需要的要素。
這是一種思維模式的巨大轉變,這種轉變甚至可以概括成:面向過程的編程模式做的是動詞(功能)的分解,面向對象編程做的是名詞(對象)的分解。若要理解面向對象思想,首先要理解抽象的概念和方法,這是學習面向對象編程的前提和基礎,因為面向對象是一種思想和模式,遠高于編程語言本身。抽象是具體到一般的過程。雖然它是一個簡單的概念或者方法,但是要領悟其中的涵義不能單停留在編程語言上,應該用一種邏輯思維的角度來思考抽象是什么。接下來考慮實現(xiàn)抽象的方法,比如分類,就是一種抽象,除了對靜態(tài)屬性特征抽象外,還要考慮類的行為特征以及類間的交互方式,這樣的抽象才較完整。抽象的思想建立以后,就容易理解繼承和多態(tài)。最后,要讓學生了解這些知識的最終目的,比如軟件復用、需求的變化,這都是抽象的主要目的。
(一)注重程序思維的形成
新生頭腦里幾乎沒有程序的思維習慣。按照奧蘇貝爾的認知結構學習理論和構建主義的學習理論,學生作為學習的主體,與學習客體的交互中,構建自己的知識結構[5]。教師在教學過程中必須讓學生具有明確分析和解決問題的整體思路,而不僅僅是知識點的傳授。程序設計思維并不是一朝一夕就能夠形成的,依賴于理性的事件。學生要運用算法描述自己的解題思路,并通過計算機表達出來,最后經調試才能驗證思路的正確性。按照西蒙的觀點,學習就是系統(tǒng)在不斷重復的工作中,對本身能力的增強或者改進,使得系統(tǒng)在下一次執(zhí)行任務或者類似任務時,會比現(xiàn)在做得更好或效率更高[6]。因此,只有反復上機實驗才能訓練程序思維。
(二)訓練題目分析能力
在編程訓練過程中還存在這樣的情況:程序設計語言已熟練掌握,范例程序也能讀懂,簡單的數值性計算問題也可以獨立編程求解,但是面對一個真正的應用問題時,仍不知從何入手。他們所反映出來的問題就是邏輯思維能力的欠缺。面向對象程序設計教材里,絕大多數習題都已給出明顯的算法,比如1到100的累加和、華氏溫度到攝氏溫度的轉換等題目,從軟件工程角度,這類題目的需求分析和系統(tǒng)設計已完成,學生的任務就是程序實現(xiàn)。但還有一些應用題目并沒有給出明顯的實現(xiàn)方法,需要經歷需求分析和系統(tǒng)設計兩個步驟,比如“猴子選大王”問題。用程序實現(xiàn)這類問題,就是要訓練學生的問題分析。
(三)訓練邏輯思維能力
從初學者看待編程,往往注重語句和語法,并認為照搬教材例子就可以編出程序。一旦要求用程序去實現(xiàn)新的類型題目時,往往無從下手,沒有任何思路,或者仍舊照搬那些早已不合時宜的例子。其真正原因還是沒有把邏輯架構和編程解題思路放在學習重點上,不具備編程的抽象思維能力。程序設計是邏輯思維比較縝密的一門學科,需要勤加思考,只讀別人的程序或者沒有自己的分析都是不可取的,通常建議新生在做編程練習時暫時擺脫教材,獨立思考。此外,程序設計是一門涉及知識領域比較寬泛的學科,軟件從業(yè)者更是從工程的角度來看待一個軟件的設計和生產過程。教師在教學過程中應該不斷地灌輸這種思想。
(四)加強上機實驗環(huán)節(jié)
編程能力不僅體現(xiàn)在思路上,還體現(xiàn)在動手能力上。動手能力差是新生普遍存在的問題,程序編譯時出錯后不知所措,更覺得老師沒講過計算機英語,看不懂英文錯誤提示理所應當。久而久之就會演變成不喜歡動手,最后造就了眾多的編程“思想家”,調試程序則蛻變過成了“想程序”。衡量編寫程序能力的一個重要指標就是調試程序的能力,這要求教師在實驗指導書中要明確程序調試的目的和要求,并在學生上機實驗時親自指導,獲得學生上機的第一手反饋才能知道問題所在,才能不斷改善理論課的教學方法。
(五)精選實驗題目并提高趣味性
學習態(tài)度決定最終的學習效果,新生剛入學,學習態(tài)度都很認真,一旦在該門課陷入困境并產生厭煩情緒,學習由主動驟然變?yōu)楸粍?,學習效果可想而知。為了提高編程能力,加強學習熱情和興趣,在編程題目的選擇上要下足工夫。教材上提供的基礎編程,基本都是已給出算法,學生的任務就是實現(xiàn)算法,無需做需求分析,不僅枯燥而且也缺乏挑戰(zhàn)性和趣味性。應該選取一些有實際應用的題目,經簡化后作為實驗題目,明確程序的用途后,可調動學生的思維積極思考需求。
培養(yǎng)新生運用所學知識解決實際問題,并增強對程序設計的理解并體驗團隊的合作精神,可通過課程綜合實訓的方式進行[7]。對于綜合實訓的內容安排、指導以及考核都要以綜合實訓為目的。在對實訓內容安排上,綜合考慮題目難度、實用價值以及學生的興趣,由學生按小組自由選取題目,最后形成實驗報告。此外,有些學生思想活躍,希望按照自己的想法實現(xiàn)自擬題目,可由教師把關并給予大力支持。
實訓環(huán)節(jié)做得好,可促使新生強烈的成就感和自豪感,這是最好的原動力,可以很好地激發(fā)他們的潛能,使他們的算法設計能力、程序設計能力和程序調試能力得到快速的提升,因此確定一個能激發(fā)學生興趣的題目很重要。
對比幾屆的新生的實施效果看,通過注重初學教育,加強課內實踐,重視綜合實訓,并且嚴格實訓組織和內容選擇,不僅能提高學生對面向對象的理解,還能提高程序設計的興趣,并極大加強了學生的實踐動手能力以及解決問題的能力,培養(yǎng)了學生的創(chuàng)新精神。
[1]呂雅麗.面向對象的數據結構課程教學改革的研究與探索[J].現(xiàn)代企業(yè)教育,2012(20):123-124.
[2]張海林.計算機專業(yè)中的C語言教改方案探討[J].中國校外教育,2010(4):168.
[3]Booch,G.面向對象分析與設計(第3版)[M].北京:電子工業(yè)出版社,2012:20.
[4]龍軍.面向對象程序設計中類和對象教學方法的探討[J].新教育,2012(10):50.
[5]王鵬遠,蘇虹.高校非計算機專業(yè)C語言教學改革和實踐[J].計算機教育,2011(2):15-18.
[6]劉儒德,陳琦.當代教育心理學[M].北京師范大學出版社,2007(7):119-120.
[7]朱建凱.普通高校計算機專業(yè)實訓教改探索[J].長沙大學學報,2009(5):112-113.
An approach to improve object-oriented programming ability of freshmen
Li Hai-bo
(College of Computer Science&Technology, Huaqiao University,Xiamen Fujian,361021, China)
Object-oriented programming is usually a required course for freshmen, is an important foundation of computer science courses. In recent years, aiming at many exposed problems in teaching process, by analyzing the characteristics of college freshmen thinking and course characteristics, some appropriate countermeasures are proposed. That is, starting from the transformation of mode of thinking, training, programming skills, reinforcing training curriculum. The approach can trinity improve freshmen programming capabilities fundamentally. By contrast, the programming capability of several sessions freshmen has improved significantly.
Object-Oriented; programming; freshman
G645
A
1000-9795(2014)02-0143-02
[責任編輯:劉麗杰]
2013-12-15
李海波(1972-),男,黑龍江哈爾濱人,副教授,從事計算機應用技術研究。