基于游戏开发的Java程序设计课程教学改革研究
2014-05-04罗恩韬
罗恩韬
摘要:针对高校Java程序设计课程的开设和实际开发联系不紧密的矛盾,提出在理论教学过程中穿插讲解游戏项目,同时在教学内容、教学过程、教学情境3个方面总结对这门课程的教学改革过程,探讨在课程教学中,如何培养学生的理论结合应用能力、程序分析能力、项目工程开发能力。
关键词:Java程序设计;教学内容改革;教学过程改革;教学情境改革
0、引言
Java程序设计语言是目前高校计算机专业学生的必修课程之一。目前高校计算机专业学生的理论学习和实际应用编程能力的矛盾尤为突出。因此如何解决这一矛盾是目前国内高校计算机专业教师研究的重点。文献[1]提出了Java系列课程的教学改革,且在课程建设上有较多的改革,但是在改革过程中没有引进具体的项目开发。文献[2]在Java课程的教学过程中引进了项目教学法,是一个比较新的突破,但是并没有与学生进行互动同步开发。文献[3]提出了面向应用型人才培养的教学改革方法,但是缺少具体的实施过程。文献[4]主要对教学内容进行了较大的改革,但是依旧偏向理论教学。因此本文结合以上文献的研究经验,提出结合游戏开发的Java程序设计课程的教学改革,解决学生以往面向对象思想建立困难、理论联系实际开发能力差的矛盾,同时在开发过程中增强学生的提出问题、分析问题、解决问题的能力。
1、研究重点
面向对象编程主要是一种很强的实践性技能,不是单纯地依靠课堂讲授就可以让学生掌握,而单一的、无项目结合的实践课程也仅仅只能让学生掌握相关的语法,并不能了解整个面向对象思想的开发技巧,因此一旦学生面对真正意义的应用时,就很难将实际的开发模块或者软件进行逻辑抽象,按照类、方法、对象、构造函数、初始化、访问权限等属性进行逻辑拆分。同时在面对具体业务设计的时候,学生的开发思路就会陷入困惑,不知道从哪里人手,而如果按照以往传统的教学模式,这些技能的掌握是比较难以解决的。那么如何才能使学生掌握这样的开发能力和编程技巧呢?这是本课程教学改革的研究重点。
在Java程序设计课程开设之前,学生一般都学习过C/C++课程,而在C/C++程序语言已经系统地讲授过类、重载、多态、异常等内容。因此如果单纯地按照教材的编写章节进行课堂授课,就不会有较好的学习效果。目前国内很多高校实践课时虽然在24学时以上,但是依然没有用一个完整的项目将理论知识串联起来,忽略了学生实际技能的培养,导致学生学习知识与技能实践的脱节。因此本文结合学生的学习过程和本课程的特点,提出了理论和实践并行的教学方式,利用在实际项目中穿插并行讲授面向对象的知识,从而取得较好的学习效果。
2、Tava教学内容改革
根据上述问题,湖南科技学院计算机与通信工程系正在对Java程序设计这门课程进行教学改革。改革后的理论教学和实践教学总课时为56课时,但是和以往分为课堂讲授和实践上机不同的是,我们所有课程的开设均在机房进行,教学老师全程进行Java编程平台Eclipse的编程教学,而对于理论教学内容,主要侧重以下章节的讲授:Java的单继承和接口、消息监听、容器、线程、多态、10流、网络编程、图形用户界面等部分,相对弱化了Java的变量、常量、重载、重写、构造函数等章节的理论教学(这部分的理论教学会在实践开发项目中进行强化)。而实践教学则通过一个游戏开发的项目穿插应用了上述理论知识,同时对没有重点讲授的理论知识进行了补足。最重要的是整个游戏项目贯穿了面向对象的编程思想。
3、教学过程改革
教学过程的改革主要体现在以下几个方面。
(1)首先从类的教学开始深入,因为Java程序设计课程开设的时候,学生们一般都是先修了c或c++语言,因此对基本的语法和面向对象概念有了一定的认识。在类的学习过程中,我们会结合GUI图形用户界面编程这一章的内容进行窗口的设计,同时直接使用Eclipse开发平台进行开发,使学生迅速进入可视化开发环境中。
(2)经过初步的GUI图形用户界面的学习和开发,在实际代码的编写过程中,让学生迅速掌握类的设计、成员的定义、构造函数的生成、成员的访问属性、Get和Set方法的设计,同时在进行创建对象的时候,举例讲授ToString()方法和Equals( )方法的使用,在类的设计里就会用到成员变量、局部变量、堆、栈等基础知识。这样会让学生系统地了解Java程序设计这门课的基础知识。
(3)熟悉Eclipse开发平台的使用。在C/C++语言中,我们通常使用VC开发平台,但是在以往的实践课程中,每次课的学习进行编程练习的代码不超过100行,并且前后实验课之间没有必然的联系,因此学生在实践操作中对知识点的掌握相对孤立,不能融会贯通。因此在本次教学改革中,我们设计的前后实验课之间的代码是累进的,在逻辑上是紧密结合的。随着代码开发的深入,学生会对开发平台的各种功能了解的更准确更详细,包括包、类的创建、异常的调试、Tomcat服务器的配置、后台数据库的绑定、多视图的协同工作等。在这一部分的锻炼中,学生会从以前单纯的书本了解的面向对象的知识过渡到实际的面向对象编程和面向对象思想的建立,而这一步非常关键。
(4)每次实践开课的时候,要做到目的明确,重点突出,同理论知识紧密联系。这样不仅可以让学生集中精力参与到实践过程中来,也可以保证学生在课堂上拥有活跃的思维。同时与学生一同开发分析,便于学生掌握解决问题的思路,掌握分析问题和解决问题的方法。而在今后遇到更加复杂的问题时,学生也可以举一反三。
(5)课后实践拓展。课后我们以小组的方式由学生根据当天课程内容自行选择某模块进行扩展。每一个模块的代码量通常在500行左右,通过这样的方式,学生巩固了上课的内容。因为他们要设计一个新的模块,就必须要考虑到和已经开发成功代码之间的衔接和调用关系。学生之间的合作也增加了他们的沟通和合作能力,这样的锻炼对于以后进入公司进行项目的合作开发有很大的价值。endprint
4、教学情景改革
为配合以上教学过程的改革,我们在教学情景上也做了相应的调整。在这里我们主要引入游戏项目来增加学生的学习兴趣。教学情景的改革通过游戏项目的迭代开发,累计代码量在3000行左右,拓展代码在5000行左右,在编程规范、注释方面进行了严格的要求,为培养学生良好的编程习惯打下了基础。在项目中结合几种常见的有效教学方法,增强学生的学习效果,做到教学相长。
1)项目演示法。
在第一节实验课的时候,教师会将完整的项目开发的最终版本在课堂上演示,增强学生的学习兴趣,同时在课堂上鼓励学生,只要每次上课同教师进行同步开发,就一定可以完成该游戏的编程。
2)同步开发法。
在Java编程语言教学以往的实践课程中,主要由教师进行讲授,然后安排实验任务。由学生自己完成,这样虽然一定程度上鼓励了学生利用自己的主观能动性进行学习,但是也存在部分学生因为不能完成而产生畏难和放弃的思想。因此,本课程改革为利用教师和学生同步开发的方法,教师在教师机上编程,学生在学生机上同步开发。这样教师可以监控每个学生的学习情况,学生也可以跟上教师的教学思路和编程思想,从而在课程结束的时候,每个学生都可以开发出这个游戏,也就自然而然地掌握了编程规范和开发技巧。
案例的部分代码如下:
import Java,awt,Color;
import Java.awt.Graphics;
public class Bomb{
imx;inty;Test tc;
int step=O:
boolean b_live=true;
//引入炸弹的生命
int radius[]=
{20,4,8,16,32,64,127,31,12,5,1};
//定义炸弹的半径
publicBomb(imx,int y,Testtc){
this.x=x;this.y=y;this.tc=tc;
/*
*此处放一个钩子的用处
*是为了在子弹类里面便于
*将新增加的炸弹加到Test类
*里面的danyaoku的容器之中
*/
}
public void bdraw(Graphics g){
if(b_live=false){
return;
}
if(step=radius.1ength){
step=O;
b_live=false;
}
Color c=g.getColor( );
g.setColor(Color.RED);
g.fillOval(x,y,radius[step],radius[step]);
g.setColor(c);
step++;
}
}
3)阶段拓展法。
每进行一个阶段的开发,教师就会给出一个同步项目,在功能模块上有所改动,由学生自行根据前期的开发过程进行模拟开发,这样不仅拓展学生的思路,也巩固了学生的学期成果。
4)漏洞分析法。
最后,在教学中讲解一些常见的代码漏洞,主要是解决非语法错误所造成的逻辑问题,通过这种方式把解决问题的整个过程呈现给学生,最终达到让学生掌握如何发现问题、分析问题、解决问题的方法和了解最核心系统的整体架构。
5、结语
笔者结合近几年Java程序设计课程的教学经验,在教学过程中主要让教师通过引进开发项目的教学手段增加学生的直观感受和学习兴趣。实践证明,经过教学改革后,学生的面向对象的设计思想增强,在程序设计的过程中,其发现问题、分析问题和解决问题的能力得到了大幅度的提高。endprint