杜春
摘要:目前,Java這門課是各大高校計(jì)算機(jī)專業(yè)的專業(yè)必修課,對(duì)于學(xué)生今后工作或者繼續(xù)深造都是非常重要的。如何學(xué)好這門課,提高學(xué)生的學(xué)習(xí)興趣成為重點(diǎn)。由于以前java的課程都是以教師課堂講授和上機(jī)實(shí)驗(yàn)課,這樣的教學(xué)方式讓學(xué)生學(xué)起來(lái)非常的枯燥,缺乏興趣。而且實(shí)驗(yàn)課也流于形式,練習(xí)的題目都太基礎(chǔ),根本不能有效地提高學(xué)生編寫(xiě)程序的水平。該文主要探討以案例的方式來(lái)講解java這門課,從而使學(xué)生能更好地掌握使用java理論知識(shí)解決實(shí)際問(wèn)題的能力,讓學(xué)生更積極地學(xué)習(xí)這門課程。
關(guān)鍵詞:Java;教學(xué)方式;案例;探討
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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語(yǔ)言程序設(shè)計(jì)》是一門計(jì)算機(jī)專業(yè)的專業(yè)必修課,也是各大專院校計(jì)算機(jī)專業(yè)都開(kāi)設(shè)的課程。但是在教學(xué)過(guò)程中,太注重理論而忽視了實(shí)踐操作的教學(xué)[1],學(xué)生上課能聽(tīng)懂,但實(shí)際編程應(yīng)用程序時(shí)卻不知從何入手,正由于這些現(xiàn)狀,本文對(duì)《Java語(yǔ)言程序設(shè)計(jì)》這門課提出了以案例驅(qū)動(dòng)的形式來(lái)實(shí)施教學(xué)【3】,將所學(xué)知識(shí)融入案例中,以提高學(xué)生的學(xué)習(xí)積極性和提高學(xué)生實(shí)際編程水平。
1 Java教學(xué)現(xiàn)狀
目前是信息化時(shí)代,網(wǎng)絡(luò)信息的傳輸已經(jīng)在我們生活中起著很重要的作用,而Java語(yǔ)言作為一門網(wǎng)絡(luò)編程語(yǔ)言,對(duì)于計(jì)算機(jī)專業(yè)的學(xué)生來(lái)說(shuō)就顯得舉足輕重。經(jīng)過(guò)幾年的Java教學(xué)后,總結(jié)出了一些經(jīng)驗(yàn),發(fā)現(xiàn)Java教學(xué)仍存在一些問(wèn)題。灌輸式的教學(xué)方法還在被普遍的使用[3]。由于教學(xué)的填鴨式灌輸知識(shí)的方式,不利于學(xué)生缺乏創(chuàng)新意識(shí)的培養(yǎng)以及發(fā)揮學(xué)生的想象力,同時(shí)也降低了學(xué)生學(xué)習(xí)的積極性,因而教學(xué)效果不是很理想,因此本文提出了一種以案例驅(qū)動(dòng)的Java教學(xué)方式。
2 案例教學(xué)改革
基于案例的Java教學(xué)方法是把各章節(jié)知識(shí)點(diǎn)以案例的形式進(jìn)行講解,具體分為以下5個(gè)模塊,如圖1所示。
2.1 Greenfoot小游戲
Greenfoot是一款游戲工具軟件[4],采用圖形化的界面來(lái)開(kāi)發(fā)游戲,是一種所見(jiàn)即所得的開(kāi)發(fā)工具。在“類和對(duì)象”這一章節(jié),將使用Greenfoot軟件來(lái)講解游戲的開(kāi)發(fā),意在讓學(xué)生能將所學(xué)理論知識(shí)運(yùn)用到實(shí)際的開(kāi)發(fā)中,并能以開(kāi)發(fā)小游戲的形式來(lái)激發(fā)學(xué)生的學(xué)習(xí)積極性,達(dá)到學(xué)與玩結(jié)合的教學(xué)效果。如圖2所示,是一個(gè)青蛙吃蟲(chóng)子的小游戲。
通過(guò)Greenfoot工具來(lái)開(kāi)發(fā)小游戲,能使學(xué)生更易更深入地理解類和對(duì)象的概念,以及如何在游戲中通過(guò)創(chuàng)建類的方法來(lái)使角色移動(dòng)或旋轉(zhuǎn)等。在該游戲中我們創(chuàng)建了一只青蛙和一些蟲(chóng)子,并分別為青蛙和蟲(chóng)子都設(shè)置了一些方法,比如它們都具有移動(dòng)和旋轉(zhuǎn)的方法。其中當(dāng)青蛙遇到蟲(chóng)子之后,
2.2 GUI
隨著計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)越來(lái)越平民化、傻瓜化,這主要?dú)w功于圖形用戶界面的使用和普及。GUI的英文全稱是Graphics User Interface,即圖形化用戶界面,因特有的親和力和易用性普遍受到人們的歡迎。本章將使用一個(gè)計(jì)算器案例來(lái)進(jìn)行講解,如圖3所示。
該計(jì)算器外部是使用一個(gè)JFrame窗口,內(nèi)部使用了兩個(gè)面板,這兩個(gè)面板上下放置,上面一個(gè)面板中有一個(gè)輸入框,和一個(gè)按鈕,輸入框用來(lái)輸入用戶輸入的運(yùn)算數(shù)和運(yùn)算符,當(dāng)用戶輸入數(shù)據(jù)后,點(diǎn)擊按鈕就會(huì)計(jì)算出結(jié)果顯示到最右邊的一個(gè)文件標(biāo)簽控件上。上面的面板采用的是橫向的線性布局,從左往右分別是一個(gè)文本框、按鈕和一個(gè)文本標(biāo)簽。下面的面板采用4行4列的格子布局,用來(lái)放置10個(gè)數(shù)字按鈕和加、減、乘、除、取余運(yùn)算符以及一個(gè)清除按鈕。當(dāng)然本案例還使用了事件響應(yīng),事件響應(yīng)主要是依靠類ActionListenner接口來(lái)實(shí)現(xiàn)的,主要代碼如下:
public class Caculator extends JFrame implements ActionListener
/*實(shí)現(xiàn)ActionListener接口*/
{
@Override
public void actionPerformed(ActionEvent e)/*重寫(xiě)actionPerformed方法*/
{
/*完成事件的功能代碼*/
}
}
2.3 文件操作
在java中,文件操作主要是通過(guò)輸入和輸出類來(lái)實(shí)現(xiàn)的[5]。一個(gè)完整的應(yīng)用程序應(yīng)該由輸入、處理、輸出3個(gè)部分組成。針對(duì)輸入與輸出,Java語(yǔ)言提供了專門用于文件操作和輸入/輸出功能的包java.io,該包是Java語(yǔ)言的核心包之一,其中包含許多類和接口,有大量的方法用來(lái)訪問(wèn)文件系統(tǒng)、創(chuàng)建文件和目錄、讀取文件信息、處理文件的數(shù)據(jù)以及存儲(chǔ)數(shù)據(jù)到文件中。本章將使用一個(gè)貪吃蛇游戲來(lái)進(jìn)行講解,游戲界面如圖4所示。
本案例中采用了文件來(lái)保存玩家每一關(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; /*文件對(duì)象*/
public static BufferedReader br=null; /*文件緩沖輸入流*/
public static BufferedWriter bw=null; /*文件緩沖輸出流*/
public void createFile() throws IOException
{
file1=new File("C:\\Windows\\score.txt"); /*創(chuàng)建一個(gè)文件*/
if(!file1.exists()) /*如果文件不存在,就創(chuàng)建一個(gè)*/
{
try {
file1.createNewFile();
}
catch (IOException e) /*捕獲異常*/
{
e.printStackTrace();
}
}
}
2.4 多線程編程
進(jìn)程一般是對(duì)操作系統(tǒng)而言的。例如,你打開(kāi)word編輯文檔,同時(shí)打開(kāi)郵箱收取郵件,這時(shí)系統(tǒng)內(nèi)有兩個(gè)進(jìn)程在運(yùn)行,即多個(gè)程序在同一時(shí)間執(zhí)行多個(gè)任務(wù)。線程是比進(jìn)程還小的單位,一個(gè)進(jìn)程可以包含一個(gè)或多個(gè)線程。線程是對(duì)某一程序而言的。如上例,當(dāng)打開(kāi)郵箱收新郵件的同時(shí),還可以看已經(jīng)下載的郵件,這兩件事沒(méi)有相互干擾,那么我們說(shuō)此時(shí)這一程序中至少有兩個(gè)線程在運(yùn)行[6]。即每一個(gè)程序在同一時(shí)間內(nèi)執(zhí)行多個(gè)任務(wù)。 本章將采用一個(gè)射擊游戲來(lái)進(jìn)行講解,游戲的界面如圖5所示。
本射擊游戲中有一架玩家的飛機(jī)和許多架敵機(jī)。玩家的飛機(jī)和敵機(jī)都同時(shí)在移動(dòng),而且玩家飛機(jī)發(fā)出的子彈也是同時(shí)在移動(dòng),所以玩家的飛機(jī)、敵機(jī)和子彈都是分別是一個(gè)線程,故這里采用了多線程技術(shù),主要代碼如下:
public class test extends Frame implements Runnable,ActionListener {
/*主程序,游戲的主界面*/
private static plane p; /* 玩家飛機(jī)*/
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(); /*音樂(lè)類*/
public static boolean status=true;/*為true表示正在運(yùn)行,false表示暫停*/
public static boolean died=false; /* false表示飛機(jī)是活的,值為true表示飛機(jī)掛了,游戲結(jié)束*/
creatEnemy ce; /* 動(dòng)態(tài)產(chǎn)生敵機(jī)群*/
private MenuBar mb; /* 菜單欄*/
private Menu menu,menu1,menu2; /* 菜單*/
private MenuItem mi1,mi2,mi3,mi4; /* 子菜單*/
public test(){ /*構(gòu)造函數(shù),對(duì)玩家的飛機(jī)進(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ò)編程在如今的分布式計(jì)算機(jī)時(shí)代扮演著重要的角色[7],我們用到的應(yīng)用程序或多或少都需要一些其他進(jìn)程的支持或協(xié)助,這些進(jìn)程可能運(yùn)行在本地也可能運(yùn)行在其他計(jì)算機(jī)上,這就需要應(yīng)用程序能夠支持網(wǎng)絡(luò)編程[2]。在現(xiàn)實(shí)生活中,比如網(wǎng)上購(gòu)物、QQ聊天、網(wǎng)絡(luò)銀行交易等都涉及到網(wǎng)絡(luò)編程。本章我們將采用一個(gè)網(wǎng)絡(luò)五子棋游戲的案例來(lái)進(jìn)行相關(guān)知識(shí)的講解,五子棋游戲的界面如圖6所示。
3 結(jié)論
Java語(yǔ)言是一門理論與實(shí)踐并重的課程,對(duì)于應(yīng)用型本科學(xué)生來(lái)說(shuō),既要夯實(shí)理論基礎(chǔ),又要重視實(shí)踐開(kāi)發(fā),將理論與實(shí)踐相結(jié)合,只有這樣才能提升學(xué)生的編程水平。對(duì)于這樣一門編程語(yǔ)言課,傳統(tǒng)的填鴨式的教學(xué)方式并不能很好的調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性和興趣,只有采用以案例的方式,將學(xué)與玩緊密結(jié)合才能讓學(xué)生在玩中學(xué),在學(xué)中玩,主動(dòng)地去學(xué)習(xí),這樣能提高教學(xué)效果。我們的總體目標(biāo)是,針對(duì)程序設(shè)計(jì)能力培養(yǎng)的啟蒙入門、發(fā)展提高和開(kāi)發(fā)、應(yīng)用三個(gè)階段[8],讓學(xué)生能學(xué)以致用,達(dá)到舉一反三,理論與實(shí)踐相結(jié)合。經(jīng)過(guò)使用這種案例教學(xué)的方式以后,學(xué)生的成績(jī)明顯得到了提高,學(xué)習(xí)態(tài)度也有了很顯明的變化,以下是按普通教學(xué)方式和案例驅(qū)動(dòng)方式教學(xué)的對(duì)比,如表1所示。
參考文獻(xiàn):
[1] 孫麒,韓永華,莊巧莉.基于創(chuàng)新能力培養(yǎng)的Java教學(xué)改革[J].電氣電子教學(xué)學(xué)報(bào),2017(5):50-52.
[2] 強(qiáng)小利,藍(lán)雯飛.面向計(jì)算思維的Java程序設(shè)計(jì)課程教學(xué)探討[J].計(jì)算機(jī)時(shí)代,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] 時(shí)雷,虎曉紅,席磊,張浩. Java程序設(shè)計(jì)課程教學(xué)分析[J].計(jì)算機(jī)教育,2010(14):104-106.
[7] 王巖,黃嵐,杜偉. Java課程教學(xué)體系構(gòu)建探索[J].計(jì)算機(jī)教育,2013(18):83-86.
[8] 朱恒,偉張琦. Java課程教學(xué)改革的研究與探索[J].時(shí)代農(nóng)機(jī),2017(11):204.
【通聯(lián)編輯:王力】