摘要:本文闡述了Java編程語言教學方法的一些特點,同時詳細討論了該課程教學的基本內(nèi)容和教學難點。
關(guān)鍵詞:Java語言;教學方法;教學重點
中圖分類號:G642文獻標識碼:B
1教學方法的探索
1.1側(cè)重啟發(fā)編程思想
學習一種編程語言,最重要的是掌握編程思想,找到編程感覺,而不是死記硬背語言本身。多數(shù)情況下,一旦掌握編程思想,面對新的編程語言時,只需要簡單了解該語言的語法特點就可以即學即用。編程思想是在反復的實踐、觀察、分析、比較、總結(jié)中潛移默化積累的。因些教師在講解中注意內(nèi)容不要形式化、教條化、概念化、提綱化。首先要培養(yǎng)學生解決實際問題的能力,然后引導學生如何用程序來表現(xiàn)。要把程序的組織結(jié)構(gòu)、語句含義、運行流程和實際問題對應起來。教師可以讓學生先解決一些簡單的實際問題,掌握編程的一些常用結(jié)構(gòu)和方法。然后邊學邊用,學生熟練掌握編程技術(shù)后,就可以獨立編程了。
1.2設(shè)計實例激發(fā)興趣
在教學實踐中,筆者認識到學生能夠自己動手解決實際問題是他們學習的最直接動力,是激發(fā)學習興趣的根源所在。現(xiàn)在絕大多數(shù)Java語言教學重心仍停留在語法、函數(shù)、控件的介紹上,極大地挫傷了學生學習的興趣,更談不上對能力的培養(yǎng)。我們課堂教學中將語言的語法知識和其他知識點按主題劃分成單元,每個主題準備多個實例和練習。實例盡量實用,這樣既可提高學生的學習興趣,又能學以致用;同時實例也要簡單,容易理解,但如是很實用的實例,復雜點也無關(guān),直接給出公式或算法就行。主題的安排要注意循序漸進、前后銜接,要防止知識點過分集中以減少學生的負擔。實例的講解以編程思路為主線,遇到知識點要學生參看相關(guān)幫助。如為了能使學生掌握面向?qū)ο缶幊痰乃悸罚驅(qū)W生提出開發(fā)復數(shù)加減程序的要求。這個程序要用到復數(shù)這種數(shù)據(jù)類型,假設(shè)沒有現(xiàn)成的,故先得自己開發(fā)復數(shù)類,然后用自然語言中的概念和個體解釋類和對象的概念。之后,定義復數(shù)類,定義它的方法時只定義加減運算,并告訴學生也可想得遠一點把乘除運算也定義在內(nèi)。最后,用這個類實現(xiàn)復數(shù)加減程序。
在實際教學中將學習內(nèi)容劃分為輸入輸出及算術(shù)和比較運算、循環(huán)和數(shù)組、隨機函數(shù)、類的定義與使用、GUI與事件偵聽、時鐘、錯誤的處理等幾個主題,分別設(shè)計輸入一個實數(shù)輸出它的相反數(shù)或特定結(jié)果;某個范圍內(nèi)的數(shù)(可有某一特征如奇偶性)的累加或累積、計算復利、多學生多門課的成績統(tǒng)計、多推銷員多產(chǎn)品的酬金統(tǒng)計;模擬擲硬幣、擲骰子、飄雪花隨機數(shù)生成過程;輸入一段明文輸出一段密文的加密程序和相反過程的解密程序、簡易計算器界面設(shè)計、電費計算等;可以使學生在實踐中快速掌握Java編程的基本方法和面向?qū)ο缶幊趟悸罚邆湓O(shè)計交互式Java圖形界面程序的基礎(chǔ),學會重復和批量數(shù)據(jù)的處理和異常處理等實用功能。這樣用程序代碼實例來講解有關(guān)知識點的方法深受學生歡迎,而且會讓學生記憶深刻,達到事半功倍的效果。
1.3利用對比加深理解
對比的目的是理解隱藏在程序語而背后的設(shè)計哲理,使我們知道對于一個問題的解決,為什么在此語言中是這樣一種解決方案,而在彼語言中又是那樣一種解決方案?這樣思考會讓我們更好地掌握編程語言的精髓。
通過與C++的對比,可以使學生更好地理解Java的設(shè)計哲理,使學生不但明白Java是如何做的,還可以進一步使學生知道Java“為什么”這么做,例如我們可通過兩種語言之間編程效率與執(zhí)行效率的對比,通過兩種語言在各自的改革、發(fā)展中所采取的方式來進行對比,讓學生通過對比學習加深對Java的理解。
在編程效率與執(zhí)行效率的對比中,Java是一種講求編程效率的語言,盡量降低程序員編程的復雜性,降低設(shè)計穩(wěn)定、安全的程序代碼所產(chǎn)生的時間和困難度是Java語言的最終設(shè)計目標。像Java把線程、網(wǎng)絡(luò)編程等復雜而非常重要的工作包裝起來提供給程序員使用,就是Java技術(shù)特點的一個很好表現(xiàn);而C++則是講求執(zhí)行效率,它認為程分體現(xiàn)了Java和C++之間的差異。在對函數(shù)多態(tài)性的處理上,多態(tài)函數(shù)調(diào)用與非多態(tài)函數(shù)調(diào)用相比,效率比較低。C++中是有選擇的進行多態(tài),只有庫函數(shù)才能多態(tài),以此保證程序的靈活性,保證程序的執(zhí)行效率;而在Java中,除標為“final”的函數(shù)外都可以多態(tài),因此Java程序員不必為選擇哪個函數(shù)而多費心思。
1.4多閱讀經(jīng)典多動手實踐
學習Java編程語言要經(jīng)常閱讀一些經(jīng)典的書籍和源碼,對自我提高、開闊視野非常有幫助。有選擇地推薦學生課余閱讀《Java 2編程詳解》、《Java 2從入門到精通》,更深的如《Thinking in Java》、《Java2核心技術(shù)卷一,二》、《Java2圖形設(shè)計 卷1:AWT 卷2:Swing-Graphic Java 1.2》等。但要想真正把別人的東西消化掉,一定要親自動手實現(xiàn)其中一些關(guān)鍵例程,體會一下自己的思路與經(jīng)典源碼的差距,從而提高獨立分析問題和解決問題的能力。
多組織學生自己動手模擬項目的開發(fā)過程,由于面向?qū)ο蟮某绦蛟O(shè)計是典型的自頂向下程序設(shè)計方法,因此教師在指導學生動手寫程序之前,應該使學生明白,設(shè)計一個應用程序首先要確定程序的總體結(jié)構(gòu),分析所要解決的問題需要使用哪些類;然后用抽象類搭建程序框架,考慮這些類在Java已有的類庫中是否已經(jīng)存在,它們的構(gòu)造方法以及類方法的名字、功能及形參表如何;如果只存在類似的類,是否可以考慮通過繼承的辦法,由其子類完成所需要的功能,輸入輸出界面采用哪種形式,如何布局;最后準備初始化數(shù)據(jù),并通過創(chuàng)建類對象完成程序功能。經(jīng)過寫一個較完整程序的訓練,學生一方面可以學習程序設(shè)計的方法;另一方面經(jīng)過逐層分解,各自承擔一小部分的編碼,共同完成一個程序設(shè)計任務。這樣,既使學生掌握了程序設(shè)計方法,又培養(yǎng)了他們開發(fā)軟件的團隊精神。
2Java教學重點
對于Java程序設(shè)計的教學,應該注重以下兩個方面的內(nèi)容。
2.1Java的語法教學
語法學習是任何語言的必經(jīng)階段,很難想象連語法都不熟悉如何進行程序設(shè)計。Java的語法和C以及C++的語法非常類似,這一部分的學習學生基本上不會感到很大的壓力。絕大多數(shù)的Java書籍主要的內(nèi)容都是Java的語法。在進行語法教學時,要求學生重點理解以下內(nèi)容:數(shù)據(jù)類型、操作符、控制流程、類、類的繼承、接口以及接口的實現(xiàn)、包以及包的使用、異常處理、線程等。為了加深對Java基本語法的掌握,在進行教學和學生上機練習時,要求學生用Windows下的記事本編寫代碼。如果一開始就利用集成開發(fā)環(huán)境進行教學,不利于學生對基本語法的掌握。在此階段還有一個非常重要的訓練就是要求用Java編譯器Javac.exe去檢查語法錯誤,這樣可以很快提高學生對基本語法的掌握。Java語法教學的基本目標是對Java的基本語法有一個整體認識,能讀懂源代碼,能夠?qū)懗龊唵蔚腏ava程序。很多教師不注重讀程序的教學,讀程序首先要理出程序的結(jié)構(gòu),然后才能夠理解程序的功能,這也是進行語法教學的有效環(huán)節(jié)。
2.2Java基本類庫的學習
有相當部分教師認為Java的基本類庫不需要學習,因為可以隨時查看Java API的資料或者利用集成開發(fā)環(huán)境下的聯(lián)機幫助。根據(jù)多年的開發(fā)經(jīng)歷和教學實踐來看,學生應該對基本類庫有個整體了解,然后需要熟練掌握Java類庫中的兩個包:Java.lang和Java.util。這兩個包提供的是Java編程要用到的基本類,需要理清楚這些類或接口的繼承關(guān)系、主要功能。在教學中要注意總結(jié)相關(guān)類的區(qū)別,如String、String-Buffer、StringTokenizer這三個類有什么差別?FileInput-Stream和FileReader有什么區(qū)別?它們繼承了哪些類,實現(xiàn)了哪些接口呢?
例如有這樣的一個練習:編寫一個計算9+99+999+…的第10項到第20項之和的Java應用程序。部分學生在解決這個問題時采用如下的程序:
public class ComputeSum
{
public static void main(String args[])
{
long sum=0,j=9999999999;
for(int i=10;i<21;i++)
{
sum=sum+j;
j=j*10+9;
}
System.out.println (“總和為”+sum);
}
}
很顯然,這是對Java的數(shù)據(jù)類型掌握的不熟悉,對Java的基本類庫也不清楚。上述程序中的結(jié)果利用長整型是無法存放的,因為結(jié)果太大。
3結(jié)束語
Java語言是一門能很快帶給學生學有所成感覺的課程,老師應該力求把一些理論和實踐經(jīng)驗通俗地講出來,使學生體驗軟件開發(fā)的樂趣,本文所淺談的幾點體會在教學實踐中收到了很好的效果,對于計算機而言有語言類的課程是相通的,因此本文的幾點經(jīng)驗值得在其他相近課程中嘗試。
參考文獻:
[1] 張孝祥. Java就業(yè)培訓教程[M]. 北京:清華大學出版社,2003.
[2] 閻菲,陳利等. Java程序設(shè)計教程[M]. 北京:中國水利水電出版社,2004.
[3] 張華. 課程與教學論[M]. 上海教育出版社,2000.