案例教学法在《Java程序设计》课程中的应用研究
2017-03-31郭燕莎郭燕妮
郭燕莎+郭燕妮
摘 要:在“Java程序设计”课程教学过程中,拓展和实践了案例教学法。以熟悉的学生和不同形状的特征(属性)、行为(方法)作为连贯性案例引入面向对象新概念的理论教学和巩固性练习中,让学生在循序渐进掌握新理论的同时,达到知识间的融会贯通。整个课堂过程融教、学、练于一体,获得了良好的教学效果。
关键词关键词:案例教学法;Java程序设计;面向对象;连贯性设计;任务驱动;对比分析
DOIDOI:10.11907/rjdk.161603
中图分类号:G433
文献标识码:A 文章编号:1672-7800(2016)008-0192-03
0 引言
作为“技本”生源(技校特招学生,五年制本科)的计算机专业学生,虽在技校期间已学过C语言,但基础并不扎实,且课堂理解力不强。“Java程序设计”是“技本”学生入学后接触的一门面向对象语言,与C语言相比,新增了抽象的面向对象概念。纵观当前的Java语言教材,通常都是针对每个新概念先列出语法,再用小程序片段解释每部分含义,虽浅显易懂,但并不具有连续性,且忽略了新旧概念间的过渡与联系。而且学生即使在课堂教学中理解了课程内容,仍无法独立完成解题任务[1]。
如何让“技本”学生自然地从面向过程的编程思路过渡到面向对象的编程思维,不仅关系到对于本门课程的理解和掌握,而且将影响后续相关知识和技能的学习[2]。基于此,笔者在“Java程序设计”课程的理论教学中,扩展性地应用和实践了案例教学法,使学生在连贯性的案例教学中逐渐了解、熟悉和掌握面向对象编程的核心思想。
1 案例教学法
案例教学法指在教学过程中,根据教学目标,教师设计具体的情境或事件,引导学生进行思考、分析和讨论,在解决问题的同时,进一步加深对理论知识的理解与掌握的一种教学方法。其实施过程包括3个基本环节:①案例设计。学生熟悉的案例素材是课堂教学的关键,既便于理解,又有助于学生深入分析与进行信息挖掘;②教学过程设计与管理。不再是传统的教师“满堂灌”和学生“被动接受”,而是采用“以学生为主导”和“教师适当引导”的教学模式,鼓励学生独立思考、分析和解决问题,强调师生间的双向交流与互动;③案例总结。基于案例的知识点讲授后,教师要有针对性地进行归纳总结,以延续当前案例并扩展到下一个知识点[3,4]。
当前,案例教学法是实践性课程的教学方法之一,但教师在课堂教学中主要是根据教材提供的案例程序讲授知识点[5,6],并未进行适当的案例设计和拓展。虽相比于枯燥的纯理论授课,案例程序有助于学生形象地理解相关定义和语法,但面对每个知识点的孤立程序片段,学生仍是见点(知识点)不见面(知识点间的联系)。因此,笔者在“Java程序设计”课程的理论教学(以“类、对象、继承、多态和抽象类”为例)中,搜集了学生熟悉的素材,精心设计了连贯性案例,并循序渐进地导入、讲授和练习,使学生在掌握知识点的同时,也能理解知识点间的联系。
2 案例教学法连贯性设计
(1)连贯性案例导入。
对于抽象的面向对象概念,熟悉的案例分析胜过单纯的概念解释,而渐进式的连贯性案例则强化了不同概念间的联系。同时,在连贯性的例程中又分别采用前后一致的对比颜色来标注不同的类别成员,这些都有助于学生由浅入深、循序渐进地理解和掌握面向对象的编程思想。
(2)师生互动与启发式的课堂教学。
课堂中,教师不再唱“独角戏”,而是转变为引导者。教学过程如下:导入案例—分析特征和解决方案—讨论结果和分析原因—总结过程并进行启发—引出新概念—讲授知识点—巩固练习。尽可能地让学生参与到每个环节中,一方面可充分调动学生积极性,另一方面也遵循了学生的认知规律。感性分析更有利于学生对知识点的理解和掌握。
(3)辅以任务驱动的连贯性练习。
根据德国心理学家艾宾浩斯提出的记忆遗忘曲线可知,刚学习完的东西可保存100%的记忆量,如不抓紧复习,一天之后只剩下25%的記忆量,故及时加以巩固练习对于延缓遗忘至关重要。同时,结合“眼过千遍不如手动一遍”的原则,每个新概念讲授后,要让学生进行连贯性的巩固练习。
整个教学过程以渐进式的连贯性案例为主线,将教、学、练融于一体。在教师的引导下,学生积极参与讨论分析,进而自然地过渡到新概念学习;随后,教师讲授和总结知识点;最后,学生进行连贯性的案例练习以巩固所学内容。期间,将教师的“满堂灌”讲授转换为师生共同分析讨论,将学生的被动接受转换为任务驱动下的主动思考和积极实践[7,8]。
3 案例教学法应用
在教学过程中,分别以统计学生情况和求解不同形状的面积与周长为例进行理论教学和巩固练习,让学生在潜移默化中学习新知识、掌握新技能。
3.1 理论教学
(1)类和对象
导入案例:统计一个班级中每个学生的姓名、年龄、性别、班级、学院、各科成绩、总成绩、最高分和最低分。
讨论解决方案:每个学生必须调用已经定义好的求解总成绩、最高分和最低分的函数,传参之后进行计算(C语言的求解方式)。
分析结果:每个学生的特征(姓名、年龄、性别、班级、学院、科目)和行为(总成绩、最高分和最低分)一样,差别在于针对不同“行为”传递的参数不同,其计算结果也不同。
启发:既然“学生”具有相同的特征和行为,是否可以定义成一个“学生”模版?那每个具体的“学生”又将如何表示?
引出新概念——类和对象:类是一组具有相同特性(属性)和相同行为(方法)事物的概括,对象则是每个存在的事物(如具体学生:张三)[9]。
讲授知识点:类、属性、方法和对象的定义与应用,并分别用不同颜色标注(红色:类或对象名称,绿色:属性,蓝色:方法)。对照表1,用相应颜色给出“学生”和“张三”的定义与测试语句。醒目一致的对比标识有助于学生分类理解和掌握。
(2)继承
导入案例:“班委”作为班级的管理层“学生”,具有哪些特征和行为?这些特征和行为融合为“类”应该如何定义?
讨论解决方案:班委的特征和行为包括姓名、年龄、性别、班级、学院、职务、各科成绩、班委成绩、总成绩、最高分和最低分。
分析结果:“班委”与“学生”的大部分特征一致,只是“班委”增加了“职务”和“班委成绩”,两者的大部分行为也一致,只是在计算“总成绩”时需加上“班委成绩”。
启发:“班委”是否应根据这些特征和行为重新定义类呢?既然与“学生”类差别不大,是否可以引用“学生”类中定义的属性和方法?
引出新概念——继承:一种由已存在的类(“学生”——父类)创建一个或几个子类(“班委”——子类)的机制[9]。
讲授知识点:继承的定义与实现,通过不同颜色的类别标识对比性地讲授“可利用(绿色未加粗的属性和蓝色未加粗的方法)”、“可添加(绿色加粗的属性:sJ(职务),sC(班委成绩))”和“可修改(蓝色加粗的方法)”父类中定义的属性和方法,如表1所示。
(3)多态
“多态”是面向对象编程技术中最为灵活的特性,体现在对象变量多态、多态方法和多态参数3个方面[9]。本次课的理论教学以“学生(父类)”、“班委(子类)”和“学院”(以“学生”和“班委”为参数新增类)为例进行导入、分析和讲授。表2展示了具体过程。
(4)抽象类
导入案例:一个班的“学生”可分为“普通学生”和“班委”两类,由“继承”的学习可知,统计总成绩时,“班委”相比于“学生”增加了“班委成绩”,故定义“班委”类时重写了父类“学生”中计算总成绩的方法。现需构建“学生(父类)”、“普通学生(子类)”和“班委(子类)”3个类,要求完成“普通学生”和“班委”的成绩统计。
讨论解决方案:按照“类”的定义语法构建这三个类,发现“学生”和“普通学生”类一样,但“班委”相比于“普通学生”增加了“职务”和“班委成绩”两个属性,且统计总成绩的方式不同。
启发:既然“普通学生”和“班委”计算总成绩的方式不同,那是否只需在这两个子类中分别统计总成绩,而在“学生”类中可省去具体计算方法?
引出新概念——抽象类:具有一个或多个抽象方法(只定义未实现,子类继承时根据实际情况实现该抽象方法)的类[9]。
讲授知识点:抽象类的定义、子类的实现及应用。
3.2 巩固练习
为了加深对面向对象新概念的理解和掌握,理论教学之后,以计算“不同形状”的周长与面积为例,同样设计了连贯性的题目,让学生循序渐进地进行巩固练习。图1展示了具体过程。
4 结语
根据对“Java程序设计”课程的教学探索,笔者在面向对象新概念的理论教学中设计了连贯性案例,并以此为主线进行循序渐进地讲授和巩固性练习。此外,整个过程还融入了师生互动、启发式教学、对比分析(不同颜色标注不同类别成员)和任务驱动等教学方法,在加深学生对新知识的理解和掌握的同时,也促进了新旧知识间的融会贯通。其中,学生熟悉的案例是课堂教学的首选,笔者在教学过程中以“学生”、计算“不同形状”的周长与面积为例,将其递增式地引入,这既遵循了学生“循序渐进、由浅入深、从感性到理性”的认知规律,又强化了学生对面向对象思想的理解和领悟,为后续实践操作奠定了良好的理论基础。
参考文献:
[1] 尤垂桔,孙丽丽,惠苗.案例增量式教学法的程序设计课程教学探索[J].课程教育研究,2015(30):145-146.
[2] 赵晓峰.高职院校Java程序设计教学模式研究[J].软件导刊,2007(1):114-115.
[3] 陈媛媛.案例教学法在教学中的运用[J].无锡南洋学院学报,2008,7(4):30-33.
[4] 贺桂娇.浅谈“案例”教学法在vb教学中的应用[J].科技经济市场,2006(9):221-222.
[5] 程建軍,陈晓云,马志新.程序设计语言课程的增量式教学法改革与实践[J].吉林大学学报:信息科学版,2005(23):36-40.
[6] 王刚.增量式教学在高职Java Me游戏设计课程中的实践[J].软件导刊,2011(10):182-183.
[7] 廖荻.连贯性项目教学法在《统计基础知识》课程中的应用[J].职业教育研究,2012(10):84-86.
[8] 范银平.任务驱动教学法在高校计算机教学中的应用[J].统计与管理,2013(6):160-161.
[9] 邱加永.Java程序开发实用教程[M].北京:清华大学出版社,2014.
(责任编辑:黄 健)