摘 要: 目前,面向?qū)ο笳Z言Java已成為Internet上最受歡迎的開發(fā)語言之一,許多高校紛紛將Java列為程序設(shè)計的核心課程。在多年Java教學經(jīng)驗的基礎(chǔ)上,就Java語言的教學,包括教材的選擇、開發(fā)環(huán)境的選取、教學內(nèi)容的篩選、教學方法的運用、教學實例的選用等問題進行了較為深入的探討,給出了可行性思路。
關(guān)鍵詞: Java; 面向?qū)ο螅?程序設(shè)計課程; 教學方法
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2013)01-37-03
Pondering over teaching of “java programming designing”
Lan Wenfei, Li Zimao
(School of Computer Science, South-central University of Nationalities, Wuhan, Hubei 430074, China)
Abstract: Java is becoming one of the most popular object-oriented programming languages in developing areas based on Internet and one of the core programming curriculums for universities. In this paper, some Java teaching problems are discussed, such as the choice of teaching materials, the choice of developing environment, filtering of teaching content, using of teaching method, design of the teaching cases. The feasible ideas for above are given.
Key words: Java; object-oriented; programming curriculum; teaching method
0 引言
在Java面世短短的十來年間,Java以其簡單易學、安全可靠、面向?qū)ο?、多線程及平臺獨立性等許多特點[1-3],被越來越多地推廣和使用,它已成為Internet上最受歡迎的開發(fā)語言之一。
目前,許多高校已將“Java程序設(shè)計”列為程序設(shè)計的核心課程之一,肯定了它在培養(yǎng)計算機開發(fā)類人才中的地位和作用。
本人已連續(xù)多年擔任高校計算機專業(yè)Java程序設(shè)計課程的主講教師,針對Java教學中存在的問題,積累了一些教學經(jīng)驗,希望能與同仁共同探討。
本文就Java語言的教學,包括教學時數(shù)的安排、教材的選擇、開發(fā)環(huán)境的選取、教學內(nèi)容的篩選、教學方法的運用、教學實例的選用等方面[4,5],給出了一些自己的做法,實踐證明,這些方法是可行的。
1 教學準備環(huán)節(jié)
首先討論Java程序設(shè)計課程教學的準備工作。
1.1 合理安排教學時數(shù)
我們授課的對象是軟件工程實驗班本科學生,該課程安排在大一第二學期,鑒于學生在大一第一學期已具備基本的計算機原理及專業(yè)基礎(chǔ)知識,這樣來安排教學計劃是比較合理的??紤]到學生在大一已具備C/C++高級語言程序設(shè)計的基礎(chǔ),而多數(shù)學生在國內(nèi)修完本科課程后會選擇到國外繼續(xù)深造學習,所以Java語言程序設(shè)計課程的教學設(shè)計必須考慮全方位,此外Java語言衍生自C++,它的基本語法同C語言,而其面向?qū)ο蟮幕咎卣魍珻++。鑒于此,我們將Java程序設(shè)計課程的上課時數(shù)設(shè)置為48個授課學時,18個實踐學時,這樣設(shè)置是比較合適的。
1.2 精選教材
選擇合適的教材,是保證有效教學的重要手段之一[6]。合適的Java教材, 應(yīng)具有較好的知識覆蓋面,難度適中,適合學生的具體情況[4]。由于我們講授的對象是實驗班學生,需要使用全英文教學,此外,他們已具備一定的面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ),所以諸如《Thinking in Java》、《Objects First with Java》、 《The Java Programming Language》等經(jīng)典書籍都適合作為該課程的教材。
選擇國外經(jīng)典教材,能保證我們的教學內(nèi)容與國外接軌[7]。學生在閱讀英文原版教材的同時,可同時參考對應(yīng)的中文翻譯本,能使學生加強對所學知識的理解。
1.3 選擇合適的實驗環(huán)境
由于JDK(Java Development Kit)是命令行的編程環(huán)境,需要用編輯器建立Java源程序。如果選用Windows自帶的記事本notepad來編輯程序,首先程序中若出現(xiàn)語法錯誤是很不容易被發(fā)現(xiàn)的;其次每次必須打開cmd窗口并輸入一大堆命令,如編譯命令、運行命令等;再就是對于applet小程序還要自編html文件,非常麻煩。但是,如果選用超智能、傻瓜型的集成開發(fā)環(huán)境,如JBuilder、NetBeans,因其耗內(nèi)存,所以速度慢,慢到不能忍受;更重要的是不利于入門級的學生掌握Java的基本語法。因為Java上機實踐的一個重要訓練內(nèi)容就是熟練使用Java編譯器(java.exe)去檢查語法錯誤,并能修改錯誤,這樣做的目的是使學生能較快地掌握Java語法。
本文簡要介紹一種既簡單又方便入門者使用的Java編輯器TextPad。TextPad作為Java編輯器需要做簡單配置,首先把TextPad裝上(先裝JDK),安裝完畢就可按下面的方法配置:在菜單的Configure中選擇Preference,選擇Tools,點add下拉菜單,選擇Java SDK commands。之后Tools中多了3項:Compile Java、Run Java Application、Run Java Applet。從這一點來看它確實比其他的Java編輯器更容易配置,如EditPlus。
按上述方法配置TextPad Java編輯器后,還可適當優(yōu)化TextPad Java IDE環(huán)境,使它更適合編寫、執(zhí)行Java程序。優(yōu)化環(huán)境方法在此省略,有興趣的作者可參見文獻[2]。
2 教學內(nèi)容
根據(jù)多年的Java程序設(shè)計課程教學經(jīng)驗,我們認為講授該課程的內(nèi)容主要包括三個方面:一是Java語言基礎(chǔ);二是Java語言的新特性;三是在講授上述內(nèi)容時穿插介紹JDK類庫的常用類。
Java語言基礎(chǔ)包括:數(shù)據(jù)類型、表達式、基本語句、類和對象、繼承和多態(tài)、異常處理機制、小程序、圖形用戶界面設(shè)計、輸入/輸出、多線程、網(wǎng)絡(luò)編程和數(shù)據(jù)庫編程??紤]到我們面授的學生已經(jīng)掌握了C++面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)內(nèi)容,而且Java教學內(nèi)容偏多、教學時數(shù)較少[8],因此對于衍生自C++的Java語言,它和C++類似的部分,包括數(shù)據(jù)類型和表達式、基本語句、類和對象、繼承和多態(tài)及異常處理機制等,應(yīng)講授較少的學時數(shù);而對于Java語言特有的部分,如小程序、圖形用戶界面設(shè)計、輸入/輸出、多線程、網(wǎng)絡(luò)編程和數(shù)據(jù)庫編程,則應(yīng)講授較多的學時數(shù)。由于篇幅有限,在此省去對每個章節(jié)學時數(shù)的具體編排。
1996年Sun公司發(fā)布了JDK1.0,在短短的十年時間里,JDK從1.0版本升級到6.0版本。特別值得一提的是2004年發(fā)布的JDK5.0版本,它在舊版本的基礎(chǔ)上增加了一些非常有意義的新特性,比如,泛型編程、增強的for循環(huán)、自動裝包/拆包、類型安全的枚舉、可變參數(shù)和靜態(tài)導入等,使用這些特性有助于我們編寫更加清晰、精悍、安全的Java代碼。為了與時俱進,讓學生掌握較新的Java特性,我們認為很有必要在課堂上向?qū)W生傳授新技術(shù),以拓寬學生的知識面。
一方面為了節(jié)約有限的學時數(shù),另一方面為了鼓勵學生在課余積極使用、查閱JDK幫助文檔,我們不安排專門的章節(jié)介紹JDK類庫的使用,而是在講授Java程序例子時,將重點介紹一些重要類的使用,比如,在講授圖形用戶界面這一章時,則會講授一些重要包的使用,包括java.awt、java.awt.event、java.applet、javax.swing等,概述這些包的類層次結(jié)構(gòu)。這樣做既節(jié)約了時間,也使學生通過對例子的學習較好地掌握了一些常用類的使用。特別需要說明的是,容器類很重要,這些類在程序設(shè)計中會普遍使用到。
總之,在教學內(nèi)容的選擇上,我們推崇簡化的原則,忽略一些不常用的知識點,如帶標號的跳轉(zhuǎn)語句、復雜的表達式運算規(guī)則、嵌套類等,這樣做既節(jié)約了課時,也能充分引導學生編寫簡單、可讀性好的程序代碼[4]。
3 教學方法
充分利用多媒體教學設(shè)施,為上課講述的例子做編譯、運行演示。對于學生編程時常常出現(xiàn)的錯誤,在編輯程序時可設(shè)置類似的錯誤障礙,讓學生修改錯誤,以杜決今后再出現(xiàn)此類錯誤,此外還能現(xiàn)場教會學生如何使用JDK TextPad開發(fā)環(huán)境。到了學期的中后期,鑒于學生們已基本掌握Java的語法,上課可適當減少演示例子的次數(shù)。
對于Java基本類庫的授課,根據(jù)多年的Java開發(fā)經(jīng)歷和教學實踐,我們認為學生應(yīng)該對基本類庫有個整體了解,要重點掌握 Java類庫中的Java.lang和Java.util兩個包,特別是容器類的應(yīng)用是難點,需要結(jié)合實際例子闡述。這兩個包提供的是Java編程要用到的基本類,學生需要清楚這些類或接口的繼承關(guān)系、主要功能[5]。我們在授課時適當介紹JDK API文檔的使用和閱讀,提倡使用最新版本的英文API文檔;在教學中注意總結(jié)相關(guān)類的聯(lián)系和區(qū)別,如String和StringBuffer在使用上的區(qū)別,以及FileInputStream和RandomAccessFile在用于讀文件時的區(qū)別。
在實施Java教學時,應(yīng)注意Java和C++的區(qū)別。Java和C++都是面向?qū)ο蟮恼Z言,而且Java衍生自C++,在基本語法及面向?qū)ο筇卣鞣矫婢泻芏嘞嗤帯1热?,我們在講授Java的數(shù)據(jù)類型、常量、變量、表達式、語句、類和對象、繼承和多態(tài)等內(nèi)容時,應(yīng)著重指出它和C++的區(qū)別,簡略細節(jié)知識。這樣既能節(jié)約課時,也能使學生快速掌握Java的基本語法和面向?qū)ο筇卣鳌?/p>
在學生掌握了Java的基本語法及面向?qū)ο筇卣鞯幕A(chǔ)上,我們會考慮將重點放在圖形用戶界面、多線程、網(wǎng)絡(luò)編程和數(shù)據(jù)庫編程上,以使學生能進行一般的Java應(yīng)用編程。
如果課堂教學時數(shù)比較寬裕,則可介紹Java和UML、Java和設(shè)計模式相關(guān)的知識,強調(diào)軟件開發(fā)新技術(shù),特別是對于軟件工程專業(yè)的學生,更應(yīng)該這么做。
4 教學實例
可將程序例子分為非算法型和算法型兩種類型。在介紹Java基本語法時,我們提倡用非算法型的例程,利于學生對例子程序的閱讀和理解。而在講授計算機典型問題,如排序、查找、遞歸時,則使用算法型的例程,以加強學生對一些典型問題的掌握。
在選擇例程時,以例程中是否含有JDK類作為篩選原則,目的在于能讓學生掌握更多的JDK類。
此外,在期中階段,可選擇一兩個游戲項目作為綜合的例程,如用于Java學習的Robocode游戲?qū)嶒烅椖?。Robocode是IBM的一位工程師MatNelson用Java語言所創(chuàng)造的機器戰(zhàn)斗仿真引擎,是一款專門為程序員設(shè)計的游戲半成品。利用該引擎,只要編寫幾行簡單的代碼,就可以創(chuàng)造出一個在屏幕上四處疾馳的機器人坦克,參加游戲?qū)?zhàn)[4]。這樣能增強例子的實用性和趣味性,調(diào)動學生學習Java的積極性。在此基礎(chǔ)上,再布置一個游戲項目,作為學生在課余時間的練兵題。
5 結(jié)束語
衍生于C++的Java語言,作為一種面世較晚的語言,它集中體現(xiàn)和充分利用了若干當代軟件技術(shù)新成果,如面向?qū)ο蟆⒍嗑€程、平臺無關(guān)等[9],使其擁有眾多優(yōu)秀的特性,從而成為面向?qū)ο筌浖_發(fā)的首選語言。
出于“Java程序設(shè)計”這門課的重要性和教學中存在的問題,本文提出了“Java程序設(shè)計”教學實施的諸多方面,并在作者施教的班級進行了多次實踐,實踐表明,上述教學思路是可行的,能在一定程度上提高教學效果。
下一步我們將在“Java程序設(shè)計”實踐教學和后續(xù)課程改革方面進行實踐探討。
作者多年從事Java教學和Java軟件開發(fā)工作,積累了一些教學經(jīng)驗,本文將它提練總結(jié),希望能給Java同仁一些啟示。
參考文獻:
[1] 秦學禮,汪迎,鄭淑紅.Java程序設(shè)計實用教程[M].清華大學出版社,2012.
[2] 劉正林等.Java技術(shù)基礎(chǔ)(第2版)[M].華中科技大學出版社,2004:30-40
[3] 印旻.Java語言與面向?qū)ο蟪绦蛟O(shè)計(第二版)[M].清華大學出版社,2007.
[4] 葉恒舟.Java程序設(shè)計教學探討[J].科技信息,2007.1:23-25
[5] 李純玉,胡麗娜.Java語言程序設(shè)計教學中的幾點思考[J].科技信息,2007.2:10-13
[6] 張延軍,喬德軍,溫炎耿等.構(gòu)建Java教學體系[J].邯鄲學院學報,2007.17(9):41-44
[7] 藍雯飛,鄭波盡.高級語言程序設(shè)計課程建設(shè)思路[J].計算機教育,2012.6:30-32
[8] 陸萍.淺議Java程序設(shè)計教學改革[J].電腦知識與技術(shù),2007.27:32-35
[9] 石瑞峰,邊琦,馮小龍等.Java程序設(shè)計教程[M].清華大學出版社,2012.