摘 要:面向对象技术作为一种流行的软件开发方法,因其信息隐蔽、可复用、易修改、易扩充等优点广泛应用于实际的程序设计开发中。针对传统的以知识体系为核心的课堂教学模式使得学生学习的积极、主动性不够,学生不能真正领会面向对象的分析及设计思想等问题,本文提出了案例教学法和任务驱动教学法相结合的新的教学方法。实践证明,应用新教学法在有效提高学生的兴趣和能力的同时提高了面向对象程序设计课程的教学效果。
关键词:面向对象;教学方法;案例;任务驱动
Abstract: As a popular software development method, object-oriented technology has been widely applied in the actual design and development process, owing to its information hiding, reusable, easy to modify, and easy expansion. In order to solve the problems that students’ initiative and enthusiasm is not enough and students not master the idea of object-oriented analysis and design method in traditional teaching, a new teaching method that combining case with task-driven in the process of teaching has been proposed. Practice show that the new method was applied in teaching of object-oriented programming, achieve the purpose of stimulating students study interests and ability and improving teaching effectiveness.
Key words: object-oriented; teaching method; case; task -driven
1 引言
面向对象程序设计方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们设计开发出数据抽象程度高的程序,充分体现了面向对象程序设计中信息隐蔽、可复用、易修改、易扩充等特性。因该门课程理论性强,教师在教学过程中发现:学生在一学期的学习中很难将面向对象的设计思想真正融会贯通于项目设计实践环节,实践教学往往只能停留在C++语法层面或者某一些知识点的简单应用层面,学生也觉得这门课程很难理解掌握,甚至有学生发出“学习“类”,真累!”的感叹。
针对面向对象程序设计特点和在教学过程中存在的这些问题,突破传统教学过程中仅仅传授知识的瓶颈,达到传递思想之目的。滨州学院信息工程系的教师通过多年的探索实践,在教学模式及实践教学环节方面进行了一系列的教学改革,将案例教学法引入课堂教学同时,在学期末的课程设计及实践教学环节中采用任务驱动的教学方式, 迫使学生将面向对象的设计思想和设计方法应用于项目实践中。学生在深入理解课程核心思想的同时逐步培养学生理论联系实际的能力及开发创新的能力。
2 案例教学法在面向对象程序设计中的应用
2.1 面向对象程序设计中的教学方法
传统的以讲课为主的教学模式,是从中世纪的欧洲大学演化而来的一种教学方式。此法沿袭已久,在我们的大学教学中普遍存在。当然,近年来随着技术的发展,已普遍将多媒体等技术融和到传统的讲课中来,在图像、文字、声音的共同作用下使教学更直观性,更能突出重点,吸引学生的注意力和兴趣,扩充知识量,但这些并没有从根本上改变在知识单向传授过程中存在的传授、灌输知识为主的显著缺点。
首创于哈福大学的案例教学法被界定为:一种教师和学生共同参与,针对实际的案例问题进行讨论的教学方法。由于案例教学不再一味强调教师在教学过程中的本位思想,而是将学生的主体性及探索性也纳入到教学过程中来,学生通过参与针对实际案例问题开展的学习讨论,创造力及解决实际问题的能力得到发展,从而达到培养应用型人才之目的。
2.2 面向对象程序设计教学案例设计
案例教学作为一种教学方法,应用于面向对象程序设计的教学过程中时,教师除了要充分考虑让学生重点认知、理解的类和对象、指针及动态内存管理、继承与派生、多态性等课程重点内容引入解决实际问题的案例中来之外,还要引导学生积极参与,主动思考案例问题的设计与实现过程。因此教师在准备案例时除了要有明确的认知或者体验及理解目标之外,还要考虑案例的实用性及趣味性,从而激发学生的学习兴趣,促使学生由被动接受知识变主动学习思考。
在多年的教学实践过程中,将面向对象的知识点集成形成了几个成功的典型教学案例,现介绍如下:
1、为了学习类的定义及对象的使用,设计了饲养电子宠物猫案例,此案例集成了面向对成程序设计中的抽象与封装特性。在案例的分析及设计过程中采用测试驱动的设计方法,渐进式的增加类构造函数及体现宠物猫行为特征的成员函数并进行测试,使学生循序渐进的去体验对宠物猫的属性及行为特征进行抽象与封装,从而领会面向对象程序设计中的相关思想。
2、C++中的动态内存管理技术一直是课程中的难点,为了使学生理解,设计了编写字符串类的案例,此案例集成了构造函数、拷贝构造函数、析构函数、运算符重载、浅拷贝和深拷贝等知识点。学生通过参与案例的分析、设计及测试过程掌握集成知识点的同时,理解案例类中封装的指针成员在动态内存管理中的作用。通过此案例的学习,学生能够初步领略C++集成开发环境的UI库(如Visual C++的MFC)背后隐藏的智慧,进一步体验封装机制带来的优点。
3、为了增加案例的趣味性。一是将公有继承、基类及派生类的定义等知识点集成在一个诙谐幽默的校园故事案例中,学生通过参与案例中person类、student类及teacher类的分析、设计及测试过程轻松掌握面向对象程序设计中继承的思想。二是将继承、抽象类、虚函数及运行时多态等知识点集成于一个交互式绘图程序案例,让学生以一种可视化的方式来辅助理解面向对象程序设计中的虚函数及运行时多态的思想。
2.3 案例教学的成效及不足之处
以上案例教学的设计目标重点侧重面向对象核心思想的理解。在教学实施过程中发现有些同学,尤其是编程基础欠缺的同学掌握起来非常困难。于是造成基础掌握好的那部分同学能参与案例的分析与设计过程中来,达到了应用面向对象思想分析问题和解决实际问题的教学目标。而基础差的那部分同学只是将其它同学或者教师最终讲解的解决方案上机测试一下,这样“囫囵吞枣”式的案例教学效果自然很差。最终的结果是学生两极分化严重,为了改变这一状况信息工程系的教师又尝试将任务驱动教学法结合进来。
3 任务驱动教学法在面向对象程序设计中的应用
任务驱动教学法是以任务驱动,以某个实例为先导,进而提出问题,引导学生思考,通过学和做,培养学生分析问题和解决问题的能力。任务驱动教学法强调,学生的学习活动必须与任务或问题相结合,以探索问题来引导和维持学习者的学习兴趣和动机,创建真实的教学环境,让学生带着真实的任务学习,以使学生拥有学习的主动权[文献]。
3.1 教师将任务驱动教学法引入面向对象程序设计的课堂教学
将任务驱动教学法引入面向对象程序设计的课堂教学中来。首先,教师要设计好任务内容,任务内容一般为课堂教学中的新知识与案例分割细化后的某一测试功能的结合。例如在学习类的定义及对象的使用时,仅就构造函数这一知识点。可布置学生在完成宠物猫案例的属性封装后,在构造函数定义前后,分别完成测试宠物猫对象在计算机内存中占有的存储空间大小及存储空间中的内容任务。其次,在任务的具体实施过程中,教师在理论课讲授完新知识后就将任务布置下去,要求学生课下思考后在上机实验课上完成任务。在学生上机的过程中教师一方面要加强过程监控,比如抽查部分同学的课下准备情况,另一方面教师可以根据学生上机完成任务的情况作有针对性的辅导讲解。
3.2 将任务驱动教学法引入面向对象程序设计的课堂教学的好处
将任务驱动教学法引入面向对象程序设计的课堂教学中来后,由于每节课所授新知识有限结合分解后的案例形成的任务较小也不难,学生一般能在上机实验课内完成,符合学生的认知特点。再者,将每一章节的基础知识及关键思想讲授结束后,再结合设计好的若干个小到中等任务的实施帮助学生去理解消化这些知识及思想。这样一来,不仅有利于学生主动学习习惯的养成,更使学生在学习新知识的同时逐步去领会案例中集成的面向对象的核心思想,进而有效地激发学生的学习潜能及创新精神。
4 总结
面向对象程序设计是一门重要的编程基础课程,其教学目标是让学生在理解和掌握面向对象程序设计(OOP)的基本思想及基本概念基础上培养和提高学生应用面向对象程序设计方法及思想解决实际问题能力。为了达到以上目标,在教学过程中本着先易后难的原则,先利用任务驱动法将面向对象程序设计的基础知识点与案例分割细化的某个功能相结合形成每一次上机实验课的任务,而将某一阶段的任务整合后再实施案例教学,学生将会更易领会案例中蕴含的设计思想及方法。同时,在面向对象程序设计教学过程中应用任务驱动法和案例教学法,学生的主观能动性大大加强,学生在教学过程中的主体地位有所加强,逐步培养和提高了学生主动学习、主动思考及团结协作的能力。为学生以后的学习研究及实践应用打下良好的基础。
参考文献
原创文章,作者:sowenn,如若转载,请注明出处:https://www.diyilunwen.com/lwfw/jiaoxue/7874.html