提高高职学生Java语言编程能力的探索和实践
2019-03-20欧阳桂秀
□欧阳桂秀
Java语言程序设计是计算机软件技术、网络技术、移动应用开发等专业开设的一门专业必修课。学习该课程的目的是使学生掌握面向对象的编程思想和编程方法,具备编写简单的面向对象程序的能力。Java课程为后续课程JSP、Android手机程序设计打下重要基础。本文主要研究提高学生面向对象程序的教学方法,以切实提高学生编写面向对象程序的能力。
一、Java程序设计课程教学中存在的问题
课堂教学仍然以教师讲授为主,以教师为中心教学,学生是被动学习,学生更多时候是把书上的例题输入验证,独立完成课后编程题比较困难。教学效果不好。
多数高职院校在大一第一学期开设了《C语言程序设计》课程,学生有了面向过程的编程思维模式。虽然Java语言的数据类型、选择结构、循环结构的语法和C语言基本相同,但是在学习Java面向对象程序设计时,需要改变思维模式,由面向过程的编程思维模式转变为面向对象的编程思维模式。
考核方式,期末考试成绩占主要部分,有的学校还是笔试,在纸上答题。考核题型还是传统的选择题、判断题、阅读程序题、编程题,编程题只占考试题型的20%左右,无法通过考试的编程题来判断一个学生真正的编程能力如何。
二、启发式教学法和课程案例设计
(一)启发式教学法的好处。让学生从最简单的实际案例入手,理解Java面向对象程序设计的语法结构。在教学过程中,以学生为中心,进行启发式教学,启发学生的编程思想,给学生营造一个主动学习的环境。
(二)启发式教学法在Java教学中的应用。在学生学习面向对象程序时,教师重点讲解类、对象、继承和接口的知识点。在讲解类的声明的语法时,强调类的声明包括成员变量、构造方法和成员方法。然后,让学生动手编程。
教师先给出矩形类的编程题目“矩形有长宽属性,成员方法完成的功能是计算矩形的面积”,让学生尝试编程。此时,大部分同学只知道类的声明的理论知识,不知道怎样编写实际的程序,需要教师的引导和启发。教师给出部分程序,让学生模仿已有程序,完成整个程序,创建矩形类。
矩形的部分程序如下:
public class Rectangle {
/*
Rectangle类的私有成员变量有:
a:double型,代表长。
b:double型,代表宽。
*/
private double a;
//添加代码,声明成员变量b
//Rectangle( ):构造方法。默认的a、b的值分别是6和5。
public Rectangle( )
{
a=6;
//添加代码,b的默认值是5
}
//Rectangle(double length,double width):分别用两个形式参数len、width对成员变量a、b进行初始化。
public Rectangle(double length,double width)
{ a=length;
//添加代码,用形式参数width对成员变量b进行初始化。
}
public double area( )//公有成员方法:计算矩形的面积
{ return a*b; }
public void display( )//公有成员方法:输出矩形的长、宽和面积。
{
System.out.println(“长=”+a);
//添加代码,输出矩形的宽
System.out.println(“面积=”+area( ));
}
}
成员变量,教师已经给出怎样定义“长”这个成员变量,启发学生完成定义“宽”这个成员变量。带参数的构造方法,教师给出的代码是把形式参数length赋值给成员变量a,启发学生利用形式参数width对成员变量b进行初始化。公有成员方法display( ),输出了长的具体值,启发学生输出宽的具体值。最终,学生在教师的启发下,完成了整个程序,创建了矩形类。
接着,教师介绍声明和创建对象的语法。讲解测试类中怎样声明创建矩形类的对象。此时,教师给出测试类的完整程序,让学生运行该测试类。
测试类如下:
public class UseRect {
public static void main(String[] args) {
//创建Rectangle类的对象,并调用定义的成员方法。
Rectangle r=new Rectangle(9,5);
r.display( );
}
}
学生在补充完成矩形类之后,运行测试类,看到了运行结果,有了成就感。启发式教学法激发了学生的学习兴趣。教师趁热打铁,要求学生在测试类中声明和创建矩形类的其它对象,调用成员方法,计算这些新矩形的面积。教师说明矩形类是我们头脑中想象的矩形,它有长、宽属性;每一个矩形类的对象,就是实际在纸上可以画出来的具体的矩形,由于长和宽不同,矩形的面积不同。
学生通过完成矩形类的题目,感性地理解了类的声明、对象的创建的语法格式,进一步理解了面向对象的编程思想。
在此基础上,进一步拓展思路,让学生模仿矩形类,编写圆类。矩形类有长和宽属性,可以声明为成员变量。启发学生,圆有什么静态特征可以声明为成员变量?矩形类,计算矩形的面积作为成员方法。启发学生,圆类,成员方法的功能是什么?学生模仿已有类(矩形类),写一个新的类(圆类)。让学生循序渐进地掌握声明类、创建对象、调用成员方法等面向对象程序设计的基本编程方法。加强学生“从无到有,由浅入深”的学习体验,增强学生的编程信心,提高学生的编程能力。
接下来,给出同一类的题目:(1)梯形、三角形、正方形类,计算面积;(2)长方体、圆柱体、球体类,计算体积。学生分别选择(1)、(2)中至少一题,完成编程。把题目要求放在蓝墨云班课的活动里,让学生在课余时间完成编程。
以上,通过编写矩形类、圆类等同一类型的平面几何图形类、立体几何图形类,学生熟练掌握了这种同一类型的类的编程。另外,让学生课余时间编写一个自定义的类,该类有成员变量、构造方法、成员方法。这个自定义的类,不能与之前讲过的例题、习题相同。这是一道发散思维的题,没有唯一答案,学生可以自由发挥,提高了学生的创造力。
编程,由简单到复杂,由易到难,循序渐进地提高了学生的编程能力,培养了学生主动学习能力。
三、提高学生编程能力的其它途径的探索和实践
提高学生调试程序的能力。学生编程,经常会出现语法错误,面对英文出错信息,学生往往束手无措,这时教师应该给予讲解,说明英文出错信息的中文大意、关键词以及出现错误的原因,教给学生调试程序的方法。这样,学生能较快地排除错误,使程序尽快顺利运行,也增强了学生的编程信心。学生对遇到的编程错误进行总结,以后遇到类似的编程错误,就能很快解决,提高学生自主学习的能力。
理论实践一体化教学,课堂教学与实践教学全部在机房完成,边讲边练,学生一人一机,增加了学生的编程时间,下课之前学生通过电子教室提交这次课的编程题以及运行结果的截图,提高机房的教学质量。
增加课余时间的编程训练。在蓝墨云班课上添加活动,活动的内容是每章补充的编程题,让学生在课余时间完成,设置活动截止时间,增加学生的编程紧迫感,使每个学生都能参与到编程实践中来。进一步提高学生的编程能力。
改变期末考试的考核形式,由笔试改为上机考试,上机考试题型是程序填空题和编程题。考试成绩,期末成绩占总成绩的60%,平时上机、网上云班课活动的编程题完成情况占总成绩的40%。学生看到课程主要考核的是编程能力,自然会在平时有意识地加强编程能力的训练。
四、结语
教师要善于抓住学生学习的特点,合理安排教学内容,循序渐进,逐步提高学生的编程水平。“理论与实践相结合”、“课内与课外相结合”,通过由易到难、多种途径的编程训练,学生的编程能力得到很大提高,学生逐渐培养起自主学习的能力。