APP下载

模块化项目驱动在“java程序设计”课程教学中的应用

2011-01-01陈力琼吉梅

职业时空 2011年2期

  摘要:java程序设计对计算机相关专业的学生是一门非常重要且实践性很强的课程,文章针对传统授课方式所产生的一系列问题,提出了模块化项目驱动的授课新模式,并详细介绍了这种新的授课方式在具体实施中的应用及效果。
  关键词:java程序设计;模块教学;项目驱动
  
  Java是1995年由Sun公司组织开发的一种编程语言。时至今日,Java已经发展为一个覆盖面广、效率高、易用性强的技术平台,它不仅可以用来开发大型的桌面应用程序,而且特别适合于Internet的应用开发,是一门正在被广泛使用的编程语言。[1]
  在整门课程设计中,要体现以就业为导向,以能力为本位——按照“实际、实用和实践”的教育思想,坚持“学中做,做中悟”的原则,以理解、编程和应用[2]为教学目标,通过理论课和实验课的结合,让学生积极主动地参与到课程的学习中[3]。
  一、传统教学存在的问题
  java程序设计是实践性非常强的一门课程,一般由理论课和实验课组成。在传统教学中,理论课会分章节介绍java语言及相关技术,教师都是先从概念上开始讲解,比如什么是类,什么是多线程,什么是JDBC,然后针对程序片段来介绍相关语法和编程规范,如类的声明中可以包含成员变量和成员方法,多线程可以有继承和接口实现两种方式,用java对数据库操作必须有哪几个步骤,最后通过一些小的实例让学生结合实际掌握相关技术的用法,如何用类及其相关特性来声明员工和管理者,如何用多线程实现多窗口售票,如何用数据库保存用户信息等等。同时在实验课上,教师会针对每个章节的知识点让学生通过练习进一步熟悉java语言的一些特性及用法,锻炼独立编程和解决问题的能力。但是这种当前普遍采取的教学方式,还存在以下不足:
  (1)课堂教学形式陈旧,都是以教师为中心进行灌输式的教学,导致学生上课注意力很难集中,师生之间缺乏互动,课堂效果不理想。
  (2)这门课程涉及知识点多,但各个章节内容比较分散,连贯性差,不同的知识点相对独立,难以让学生对java语言形成一个整体的感受,部分学生在学后面的知识点时,前面的内容已经忘掉,会影响后续课程的展开。
  (3)学完整门课程后,学生只感觉多学了一门编程语言,学习成就感和成果激励性差,很难体会java语言在解决实际问题中的功效,更无法将其应用在实际的项目中,一定程度上影响到学生将来的就业。
  (4)虽然实验课的设置让学生有了动手编程的机会,但往往是教师为了让学生掌握理论课中的概念和java语法,实验课前生搬硬套地出一些题目,实验课中学生只是为了完成任务而做实验,动力不足,主观能动性差,缺乏真正参与项目的成就感。
  (5)传统的卷面测试也使部分学生产生了只要背背知识点通过考试就行、实践无所谓的错误观念,忽视了学生课程学习能力的培养。
  二、授课方案分析
  为了解决传统教学问题,通过对java程序设计课程的反复研究及日常的教学实践,我们总结了一套针对本门课程的模块化项目驱动授课方案,方案如下:
  1.方案总体思路
  对于学生而言,相比已学过的面向过程的编程语言,java涉及的内容比较多,学起来比较困难,为了打消学生畏惧心理,提高学生的编程兴趣和动手能力,使学生能循序渐进地掌握java语言相关技术,可将java课程分成以下三个模块来讲解:(1)基础篇——java基本语法,面向对象编程;(2)提高篇——java类库、多线程和数据库操作;(3)应用篇——桌面应用程序和web项目的开发。
  三个模块由简入深,从基础到应用构成一个完整的课程体系,前面的模块学不好不但会影响到后续课程,且会影响学生的学习积极性。所以在分模块教学的同时,也要注意课程的连贯性。为了激发学生学习的热情,增强学生的自信心并体会学习过程中带来的成就感,课程将采取项目驱动教学法,结合理论课和实验课,将一个简单的学生管理系统贯穿课程的始终。从基础语法到面向对象的概念和特性、以及后面的网络、多线程和数据库等高级操作,直至用JavaEE相关技术完成一个完整的应用系统。通过这种授课方式让学生对抽象的编程语言有更形象的感受,这不但有助于学生对新知识的接受和记忆,同时也可以让每个学生都参与到课程的学习中,师生交互和学生的主观能动性都大大增强。
  2.课程的具体安排
  (1)基础篇教学。基础篇的目的除了让学生掌握java语言在数据类型、表达式、程序流程等几方面和其他编程语言的异同,更重要的是让学生学会用面向对象的编程思想解决实际问题。这一部分的教学重点应该让学生在理解类和对象的概念的同时掌握面向对象的抽象、封装、继承、多态等特性。
  针对温州医学院的学生管理系统,可以用“学生类”封装学生信息,每个学生是一个对象,通过这种方式让学生理解类和对象的概念,并明白抽象和封装的含义。在介绍具体语法时,可以分析学生的姓名、性别等实例属性及学校、在校人数等类属性的区别和定义方式,同时涉及入校、毕业、转专业等方法的实现。课堂中还可以通过创建学生对象并模拟学生行为的方式来让学生理解相关原理并掌握编程规范。
  在讲继承时,在“学生类”的基础上,理解本科生和研究生是学生的子类,重用学生共性的基础上,本科生和研究生有各自特定的专业和研究方向。另外,在某些行为上有区别于父类的实现方式,如毕业时获取的学位不同等。通过这个项目让学生理解继承在java中的应用。
  学生在校可以参与很多活动,如注册缴费、选课、奖学金评定等,不同的活动涉及一系列的行为,可以为这些活动定义相应的接口,并在已有的类中实现多个接口。同样是学生,但由于学历或身份不同,某些行为实现也不同,可以借此让学生理解多态在实际项目中的应用。在实验课中根据学生参与的各类活动编写相关接口,并完善项目中涉及的类。
  (2)提高篇教学。提高篇的目的是让学生掌握java语言的一些实用的高级操作,重点是java基础类库、多线程、数据库操作的原理和相关技术。这一部分可以在基础篇搭建的类的框架基础上针对某些特定功能继续展开。
  Java基础类库涉及字符串、数学运算、集合操作等很多常用功能,在项目中可以通过在学生的成绩计算、排名、统计等成员方法中讲解java API的使用。多线程在学生管理系统中的应用十分广泛,课堂上可以学生选课为例子,模拟多个学生同时选课,保证每门选课课程的时间及人数来向学生讲解在java中使用多线程编程的机制和方法。数据库的操作对后面开发学生管理的应用软件或网站十分关键。课堂上,让学生理解学生信息管理系统的所有数据都应该保存在数据库中。包括学生信息、选课信息等都可通过JDBC的特定步骤实现记录的增删改查。
  (3)应用篇教学。经过上面两个部分的学习,通过理论课上的讲解和实验课中的实践,整个项目涉及的类已经基本完成,相应的方法也都已经实现,接下来在应用篇中重点是向用户介绍java在桌面和web应用程序领域中的应用。
  无论是讲解java桌面程序的图形界面还是javaEE动态网页技术,教师都应该先引导学生根据项目的类型规划工程(Project),将之前的所有程序引入到合适的目录中。在这个基础上以学生注册或选课为例,讲解图形界面或网页开发中涉及到的问题,如果是图形界面就要讲解用户交互时所使用的控件及相关事件,如果是动态网页,则要重点介绍servlet和jsp的运行原理及页面对象在网站中的使用。将之前的测试方法替换成真正的界面或网页,通过和用户的交互,调用之前编好的类,完成业务方法的处理和数据的操作。
  3.方案小结
  以上介绍了模块化项目驱动在java程序设计这门课程中的具体实施方法,将整个课程分成三个模块来讲解。第一模块主要讲解面向对象编程及其语法,建立项目中涉及到的接口和类,理清类和类之间的继承或组合关系,对于其中的一些成员方法,可以暂时用简单的几句测试代码代替,即,在第一模块中建立项目中类的框架。第二模块主要利用java的API来解决项目中涉及到的运算、多线程、数据库等关键问题,在已有类框架的基础上,根据实际问题完善类的成员方法,即,在第二模块中完成类的实现。第三模块引入已有类,并编写用户交互界面,在特定事件发生时调用类的方法完成一个简单的学生管理系统。课程的教学步骤如图1所示。
  三、结语
  模块化的讲解让学生对java涉及的领域有清晰的认识。用一个学生熟悉的项目将所有模块联系起来,可以让学生从被动地学转化为主动地做,学生学习课程的过程也转变为参与项目的过程,这使得理论课和实验课联系更加紧密,教学效果显著提高。实践证明,通过这种授课方式,学生对java这门编程语言的掌握程度远远超过传统教学方式下的教学效果,不但理论知识学得扎实,学习兴趣和实践能力都得到了显著提高。
  参考文献:
  [1] 郑莉.计算机入门语言讲什么?[J].计算机教育,2006,(7):25-26.
  [2] 孔宇强,郑志材,张晶.基于实践能力的“java语言程序设计”课程改革与探析[J].才智,2009,(3).
  [3] 招启东.项目实训在Java课程教学中的应用[J].时代教育,2008,(9):279.