摘 要:為了提高學生Java編程能力,實現培養創新人才的目標,分析了Java程序設計教學的內容和重點,并闡述了如何提高Java教學質量的一些觀點。這些教學思想和方法經Java教學實踐運用,取得了良好的效果。
關鍵詞:Java 教學方法 程序設計
中圖分類號:G642 文獻標識碼:A 文章編號:1673-9795(2014)02(a)-0041-02
面向對象程序設計是目前程序設計的主流,是軟件開發人員必須掌握的一項基本的技術。Java是一種典型的面向對象的程序設計語言,已在學術界、產業界得到廣泛應用。如何培養和激發學生學習興趣、想象力、創造力和創新能力,更好地進行Java程序設計的教學,如何培養能夠適應當今社會發展需要、具有良好整體素質的Java程序設計人才是很多教師都在思考的問題。
1 Java教學的定位與內容
根據教學研究型大學的實際情況,我們的目標是培養具有創新精神和實踐能力的高素質應用型人才。Java教學實現的最終目標是培養合格的軟件工程師,相關的教學就應該圍繞這一目標而設計。Java的教學內容一般說來包含如下部分:Java語言基礎;Java面向對象的程序設計;輸入輸出流及文件操作;Applet和圖形用戶界面(GUI);Java的多線程機制;Java網絡編程基礎;Java與數據庫技術[1]。從課程內容看,Java內容多,知識點散,沒有一條明確的主線。與傳統的面向過程編程語言相比,面向對象教學本身有一定難度。面向對象編程語言提出很多新概念如繼承、多態、異常等,這些都需要學生用心體會和掌握。
2 Java教學的重點
Java安排在C++程序設計語言之后開設,學生已經有一定的程序基礎。很多學生受面向過程設計思想的影響,首先進行函數算法等細節設計,然后把所有的函數都放入到一個類中,所有的函數都是靜態函數,程序雖然有一個類,但是忽略了類的設計,沒有體現面向對象的設計思想[2]。因此,教學的重點是側重于面向對象的思想和方法的培養,深刻理解Java的核心思想。只有掌握了普遍的規律與核心思想,才能把握Java技術發展的新趨勢,學生才具備可持續發展的能力。
3 提高Java教學質量的途徑
3.1 明確課程學習目標
學習不能總是空中樓閣的感覺,要讓學生明晰目標,并找到前進的途徑。學習Java程序設計這門課的最終目標是成為Java軟件工程師。學生了解了Java軟件工程師的社會需求,明確了作為Java軟件工程師應該具備的技能。這樣,學生在學習過程中,有了方向,有了目標,也就有了動力。學習Java的總體路線是:Java語言基礎→J2SE高級特性→JSPServlet→J2EE構架技術[3]。而Java程序設計是成為Java軟件工程師的入門條件,這門課程的學習只是其中的第一步。通過本學期的學習,具體要實現的課程目標是要重點掌握Java語法以及面向對象編程的思想和方法。
3.2 精選教學內容、強調知識點的關聯性
我們平常選擇教學內容時,把一些不常用到的知識點進行省略,(如帶有標號之類的跳轉語句和比較繁雜的表達式運算規則、位運算等等),此方法的運用可以節省課時的同時最大程度的指引和輔導學生編寫簡單、可讀性好的程序代碼。我們通過多年的教學經驗,認為Java程序設計課程的核心內容包含以下三方面:(1)Java語言基礎;(2)Java語言的新特性;(3)授課時,把介紹JDK類庫的常用類以穿插的方式融入到上述內容中。
在講解面向對象的基礎知識點時,我們采用的是一個信息分類的例子來做說明,而這類情況學生在現實生活中會經常碰到,理解比較容易。比如,現在要把一大類的光盤進行分類,首先我們要抽象出 VCD及CD的共性來得出一個基本的類Item,在此基礎上可以對它進行繼承得出一個子類CD,很形象。
3.3 將面向對象程序的架構內容融入教學過程
為了提高學生對面向對象的理解,在教學過程中加入面向對象程序的架構內容,并對程序架構設計中常見的一些原則進行分析總結。
假如你是個建筑工程師,那么你在建造樓房的時候,你會先搭建好整個樓房的骨骼,然后往里面嵌入磚頭,最后才是裝修。做Java系統也是這樣,先從整體上把握并設計系統,這就是架構。我們通過這些淺顯的比喻力爭使學生領悟架構的內涵。而程序架構設計中的原則實質其實就是如何分類組織我們編寫的代碼,就像一個好書架的圖書分類,讓各種類型的書籍都能分類擺放,便于瀏覽和查找。
3.4 項目貫穿,以線帶點
借鑒了案例教學和任務驅動式教學的一些做法,教師在教學中將一個小項目“圖書管理系統”的實現貫穿于整個教學過程之中。所謂“以線帶點”是以問題和實際項目為主線,貫穿各個分散的Java知識點,完成Java知識點的脈絡化[5]。
實現是分階段進行的,在學習Java基礎知識后,讓學生完成對圖書數據的增加、刪除、修改、查找操作等操作。將數據放在數組中,沒有圖形界面。而在學習完輸入輸出后,這時,數據則要求存放在文本文件中,讓學生從文本文件中讀取數據,將每條記錄封裝成對象進行各種操作后,再將其存入文本文件。學習完圖形用戶界面后,再讓學生加入友好的圖形界面。最后,在講授數據庫程序設計時,將數據由文件存放改為在數據庫中存放,采用JDBC驅動程序訪問數據庫。每學習一部分內容,就對圖書管理系統的版本進行改進,改進的過程就是不斷完善的過程,也是學生不斷學習和提高動手能力的過程,從而把單純的知識傳授轉變為學生動手能力的培養和提高。
3.5 滲透軟件設計模式思想,提高學生的可持續發展能力
設計模式是前人總結的一些經驗和良好的設計范式。把握良好的設計模式能夠理清程序的骨架,使程序變得更清晰。要讓學生在畢業后具備可持續發展能力,我們更應該注重學生的編程思維和思想,提高學生的問題解決能力。為了讓學生能更好地理解面向對象的設計思想,雖然教材中沒有軟件設計模式的相關內容,考慮到學生將來的發展,在相關章節進行穿插講解軟件設計模式思想。通過這些Java語言的設計模式,來理解面向對象編程的強大功能以及相對于結構化語言的優越性。對于一個具體問題,教師用基本的面向對象設計方法與引入設計模式后的程序進行對比講解,詳細分析每種方法的設計過程。在教師的啟發下,學生比較兩種方法在出發點、設計思想和最終結果的差別,領悟出面向對象程序設計的優勢以及引入設計模式后的革新等。最后,告訴學生任何模式都只是工具,而作為程序員的職責,就是在自己的工作中正確使用這些工具。
3.6 舉辦講座,開拓視野,提高學生對面向對象和算法的理解
只有通過編寫高效率的算法才能使得一個實用軟件得到開發。因而在Java教學中,算法的設計是非常重要的。但是由于課堂時間的限制,就不能占用較多的課時去彌補學生在算法方面的不足和缺陷。所以,我們用講座的形式拓展學生在算法方面的能力,這樣將非常有助于學生創新能力的培養。
我們在講座中針對約瑟夫環問題用三種方法分別予以實現。約瑟夫環問題是指有n個人圍成一圈,按順時針方向編號1到n。圈中從1到m報數,凡是到m的人先退出,下一個人接著從1開始報數,計算這n個人的出圈順序[7]。針對這個問題,分別用靜態數組算法、arrayList動態數組算法和循環鏈表算法予以實現,并對這個三種算法的運算時間進行比較。通過比較,得到的結果是,在數據量不大的情況下,采用靜態數組、動態數組、循環鏈表運行約瑟夫環的時間差別不大。而隨著數據量的不斷增大,編寫循環鏈表代碼顯示出的時間優勢對程序員來說更為可貴。最后,從約瑟夫環問題的本質上來看,這是一個典型的遞歸問題。除求解遞歸問題的通用方法外,最佳的方案是利用基數m到基數10的替換來求解。另外,循環鏈表及動態數組能夠增加學生對面向對象概念的思考,從而把相同的算法推廣到相似的問題中,達到舉一反三的效果。
4 結語
由于社會需求的日益變化,計算機緊跟其后迅猛發展。由于這一變化,促使我們更要不斷的更新我們的教學方法和教學手段。在Java教學中我們通過不斷的研究是實際的操作,取得了豐碩的教研成果。這樣就使得我們在提升專業教學的方面有了一定的起發,而且促進了學生理論水平和實踐能力的提高。
參考文獻
[1]姚明,彭志平,李奇銳.教學型本科院校計算機專業Java教學之我見[J].計算機教育,2011(4):51-55.
[2]楊瑞龍,朱征宇,朱慶生.引入軟件設計模式的面向對象程序設計教學方法[J]. 計算機教育,2012(10):97-100.
[3]陳濤.Java程序設計教學思想與方法的探討[J].電腦知識與技術,2011(10): 2446-2447,2450.
[4]葉恒舟.Java程序設計教學探討[J].科技信息,2007(1):23-25.
[5]李瑞生.Java教學中學生實踐和創新能力的培養[J].計算機教育,2011(18): 12-15.
[6]王永紅.約瑟夫環經典問題的幾種算法比較[J].現代計算機,2008(1):36-37,54.
[7]Ronald L.Graham, Donald E. Knuth, and Oren Patashnik.Concrete Mathematics[Z].Addison-Wesley,second edition,1994.