杜春
摘要:目前,Java這門課是各大高校計算機專業(yè)的專業(yè)必修課,對于學(xué)生今后工作或者繼續(xù)深造都是非常重要的。如何學(xué)好這門課,提高學(xué)生的學(xué)習(xí)興趣成為重點。由于以前java的課程都是以教師課堂講授和上機實驗課,這樣的教學(xué)方式讓學(xué)生學(xué)起來非常的枯燥,缺乏興趣。而且實驗課也流于形式,練習(xí)的題目都太基礎(chǔ),根本不能有效地提高學(xué)生編寫程序的水平。該文主要探討以案例的方式來講解java這門課,從而使學(xué)生能更好地掌握使用java理論知識解決實際問題的能力,讓學(xué)生更積極地學(xué)習(xí)這門課程。
關(guān)鍵詞:Java;教學(xué)方式;案例;探討
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)28-0123-03
The Discussion of Case based Java Teaching
DU Chun
(Jinjiang College,Sichuan University,Meishan 620860,China)
Abstract: At present, Java is a major compulsory course for computer majors in Colleges and universities, and it is very important for students to work in the future or continue to upgrade. How to learn this course and improve students' interest in learning has become the focus. Since the previous Java courses are taught by teachers and computer lab classes, such teaching methods make students learn very boring, lack of interest. And the experimental class is also formalized, the exercises are too basic, can not effectively improve the level of students to write programs. This article mainly discusses the way of case study to explain the java course, so that students can better grasp the ability to use Java theory to solve practical problems, so that students can learn the course more actively.
Key words: java; Teaching methods;case;discussion
《Java語言程序設(shè)計》是一門計算機專業(yè)的專業(yè)必修課,也是各大專院校計算機專業(yè)都開設(shè)的課程。但是在教學(xué)過程中,太注重理論而忽視了實踐操作的教學(xué)[1],學(xué)生上課能聽懂,但實際編程應(yīng)用程序時卻不知從何入手,正由于這些現(xiàn)狀,本文對《Java語言程序設(shè)計》這門課提出了以案例驅(qū)動的形式來實施教學(xué)【3】,將所學(xué)知識融入案例中,以提高學(xué)生的學(xué)習(xí)積極性和提高學(xué)生實際編程水平。
1 Java教學(xué)現(xiàn)狀
目前是信息化時代,網(wǎng)絡(luò)信息的傳輸已經(jīng)在我們生活中起著很重要的作用,而Java語言作為一門網(wǎng)絡(luò)編程語言,對于計算機專業(yè)的學(xué)生來說就顯得舉足輕重。經(jīng)過幾年的Java教學(xué)后,總結(jié)出了一些經(jīng)驗,發(fā)現(xiàn)Java教學(xué)仍存在一些問題。灌輸式的教學(xué)方法還在被普遍的使用[3]。由于教學(xué)的填鴨式灌輸知識的方式,不利于學(xué)生缺乏創(chuàng)新意識的培養(yǎng)以及發(fā)揮學(xué)生的想象力,同時也降低了學(xué)生學(xué)習(xí)的積極性,因而教學(xué)效果不是很理想,因此本文提出了一種以案例驅(qū)動的Java教學(xué)方式。
2 案例教學(xué)改革
基于案例的Java教學(xué)方法是把各章節(jié)知識點以案例的形式進(jìn)行講解,具體分為以下5個模塊,如圖1所示。
2.1 Greenfoot小游戲
Greenfoot是一款游戲工具軟件[4],采用圖形化的界面來開發(fā)游戲,是一種所見即所得的開發(fā)工具。在“類和對象”這一章節(jié),將使用Greenfoot軟件來講解游戲的開發(fā),意在讓學(xué)生能將所學(xué)理論知識運用到實際的開發(fā)中,并能以開發(fā)小游戲的形式來激發(fā)學(xué)生的學(xué)習(xí)積極性,達(dá)到學(xué)與玩結(jié)合的教學(xué)效果。如圖2所示,是一個青蛙吃蟲子的小游戲。
通過Greenfoot工具來開發(fā)小游戲,能使學(xué)生更易更深入地理解類和對象的概念,以及如何在游戲中通過創(chuàng)建類的方法來使角色移動或旋轉(zhuǎn)等。在該游戲中我們創(chuàng)建了一只青蛙和一些蟲子,并分別為青蛙和蟲子都設(shè)置了一些方法,比如它們都具有移動和旋轉(zhuǎn)的方法。其中當(dāng)青蛙遇到蟲子之后,
2.2 GUI
隨著計算機技術(shù)的發(fā)展,計算機越來越平民化、傻瓜化,這主要歸功于圖形用戶界面的使用和普及。GUI的英文全稱是Graphics User Interface,即圖形化用戶界面,因特有的親和力和易用性普遍受到人們的歡迎。本章將使用一個計算器案例來進(jìn)行講解,如圖3所示。
該計算器外部是使用一個JFrame窗口,內(nèi)部使用了兩個面板,這兩個面板上下放置,上面一個面板中有一個輸入框,和一個按鈕,輸入框用來輸入用戶輸入的運算數(shù)和運算符,當(dāng)用戶輸入數(shù)據(jù)后,點擊按鈕就會計算出結(jié)果顯示到最右邊的一個文件標(biāo)簽控件上。上面的面板采用的是橫向的線性布局,從左往右分別是一個文本框、按鈕和一個文本標(biāo)簽。下面的面板采用4行4列的格子布局,用來放置10個數(shù)字按鈕和加、減、乘、除、取余運算符以及一個清除按鈕。當(dāng)然本案例還使用了事件響應(yīng),事件響應(yīng)主要是依靠類ActionListenner接口來實現(xiàn)的,主要代碼如下:
public class Caculator extends JFrame implements ActionListener
/*實現(xiàn)ActionListener接口*/
{
@Override
public void actionPerformed(ActionEvent e)/*重寫actionPerformed方法*/
{
/*完成事件的功能代碼*/
}
}
2.3 文件操作
在java中,文件操作主要是通過輸入和輸出類來實現(xiàn)的[5]。一個完整的應(yīng)用程序應(yīng)該由輸入、處理、輸出3個部分組成。針對輸入與輸出,Java語言提供了專門用于文件操作和輸入/輸出功能的包java.io,該包是Java語言的核心包之一,其中包含許多類和接口,有大量的方法用來訪問文件系統(tǒng)、創(chuàng)建文件和目錄、讀取文件信息、處理文件的數(shù)據(jù)以及存儲數(shù)據(jù)到文件中。本章將使用一個貪吃蛇游戲來進(jìn)行講解,游戲界面如圖4所示。
本案例中采用了文件來保存玩家每一關(guān)的得分記錄。主要代碼如下:
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class Fileopt extends Thread{
public static File file1; /*文件對象*/
public static BufferedReader br=null; /*文件緩沖輸入流*/
public static BufferedWriter bw=null; /*文件緩沖輸出流*/
public void createFile() throws IOException
{
file1=new File("C:\\Windows\\score.txt"); /*創(chuàng)建一個文件*/
if(!file1.exists()) /*如果文件不存在,就創(chuàng)建一個*/
{
try {
file1.createNewFile();
}
catch (IOException e) /*捕獲異常*/
{
e.printStackTrace();
}
}
}
2.4 多線程編程
進(jìn)程一般是對操作系統(tǒng)而言的。例如,你打開word編輯文檔,同時打開郵箱收取郵件,這時系統(tǒng)內(nèi)有兩個進(jìn)程在運行,即多個程序在同一時間執(zhí)行多個任務(wù)。線程是比進(jìn)程還小的單位,一個進(jìn)程可以包含一個或多個線程。線程是對某一程序而言的。如上例,當(dāng)打開郵箱收新郵件的同時,還可以看已經(jīng)下載的郵件,這兩件事沒有相互干擾,那么我們說此時這一程序中至少有兩個線程在運行[6]。即每一個程序在同一時間內(nèi)執(zhí)行多個任務(wù)。 本章將采用一個射擊游戲來進(jìn)行講解,游戲的界面如圖5所示。
本射擊游戲中有一架玩家的飛機和許多架敵機。玩家的飛機和敵機都同時在移動,而且玩家飛機發(fā)出的子彈也是同時在移動,所以玩家的飛機、敵機和子彈都是分別是一個線程,故這里采用了多線程技術(shù),主要代碼如下:
public class test extends Frame implements Runnable,ActionListener {
/*主程序,游戲的主界面*/
private static plane p; /* 玩家飛機*/
static ArrayList
static ArrayList
public static Image map1; /* 地圖1*/
public static Image map2; /* 地圖2*/
public static int map1Y; /* 地圖1的y坐標(biāo)*/
public static int map2Y; /* 地圖2的y坐標(biāo)*/
static Music music=new Music(); /*音樂類*/
public static boolean status=true;/*為true表示正在運行,false表示暫停*/
public static boolean died=false; /* false表示飛機是活的,值為true表示飛機掛了,游戲結(jié)束*/
creatEnemy ce; /* 動態(tài)產(chǎn)生敵機群*/
private MenuBar mb; /* 菜單欄*/
private Menu menu,menu1,menu2; /* 菜單*/
private MenuItem mi1,mi2,mi3,mi4; /* 子菜單*/
public test(){ /*構(gòu)造函數(shù),對玩家的飛機進(jìn)行初始化*/ p=new plane(500,500);
ce=new creatEnemy();
Thread thce=new Thread(ce);
thce.start();}
2.5 網(wǎng)絡(luò)編程
網(wǎng)絡(luò)編程在如今的分布式計算機時代扮演著重要的角色[7],我們用到的應(yīng)用程序或多或少都需要一些其他進(jìn)程的支持或協(xié)助,這些進(jìn)程可能運行在本地也可能運行在其他計算機上,這就需要應(yīng)用程序能夠支持網(wǎng)絡(luò)編程[2]。在現(xiàn)實生活中,比如網(wǎng)上購物、QQ聊天、網(wǎng)絡(luò)銀行交易等都涉及到網(wǎng)絡(luò)編程。本章我們將采用一個網(wǎng)絡(luò)五子棋游戲的案例來進(jìn)行相關(guān)知識的講解,五子棋游戲的界面如圖6所示。
3 結(jié)論
Java語言是一門理論與實踐并重的課程,對于應(yīng)用型本科學(xué)生來說,既要夯實理論基礎(chǔ),又要重視實踐開發(fā),將理論與實踐相結(jié)合,只有這樣才能提升學(xué)生的編程水平。對于這樣一門編程語言課,傳統(tǒng)的填鴨式的教學(xué)方式并不能很好的調(diào)動學(xué)生的學(xué)習(xí)積極性和興趣,只有采用以案例的方式,將學(xué)與玩緊密結(jié)合才能讓學(xué)生在玩中學(xué),在學(xué)中玩,主動地去學(xué)習(xí),這樣能提高教學(xué)效果。我們的總體目標(biāo)是,針對程序設(shè)計能力培養(yǎng)的啟蒙入門、發(fā)展提高和開發(fā)、應(yīng)用三個階段[8],讓學(xué)生能學(xué)以致用,達(dá)到舉一反三,理論與實踐相結(jié)合。經(jīng)過使用這種案例教學(xué)的方式以后,學(xué)生的成績明顯得到了提高,學(xué)習(xí)態(tài)度也有了很顯明的變化,以下是按普通教學(xué)方式和案例驅(qū)動方式教學(xué)的對比,如表1所示。
參考文獻(xiàn):
[1] 孫麒,韓永華,莊巧莉.基于創(chuàng)新能力培養(yǎng)的Java教學(xué)改革[J].電氣電子教學(xué)學(xué)報,2017(5):50-52.
[2] 強小利,藍(lán)雯飛.面向計算思維的Java程序設(shè)計課程教學(xué)探討[J].計算機時代,2015(5):87-89.
[3]王英存.JAVA 教學(xué)方法改進(jìn)探討[J]. 教育現(xiàn)代化,2018,5(21):63-64.
[4] 王寶妍,劉喬佳.Java教學(xué)改革探討[J].信息系統(tǒng)工程,2015(8):151.
[5] 龍艷彬,張學(xué)東,王亞偉,等.Java教學(xué)改革探討[J].課程教育究,2013(25):136-137.
[6] 時雷,虎曉紅,席磊,張浩. Java程序設(shè)計課程教學(xué)分析[J].計算機教育,2010(14):104-106.
[7] 王巖,黃嵐,杜偉. Java課程教學(xué)體系構(gòu)建探索[J].計算機教育,2013(18):83-86.
[8] 朱恒,偉張琦. Java課程教學(xué)改革的研究與探索[J].時代農(nóng)機,2017(11):204.
【通聯(lián)編輯:王力】