基于工程的面向对象程序设计课程教学的求索与实践

2012-11-15 04:50杨旺明
中国科技信息 2012年21期
关键词:面向对象程序设计实例

杨旺明

三峡大学 计算机与信息学院, 宜昌 443002

基于工程的面向对象程序设计课程教学的求索与实践

杨旺明

三峡大学 计算机与信息学院, 宜昌 443002

面向对象程序设计是工科学生必修专业基础课程。但由于其在面向对象思想和方法上的复杂性和抽象性,导致面向对象的教学效果不佳,存在着理论与实际应用相脱节的问题。本文在教学中通过工程实例系统讲解,解决了面向对象技术难于系统应用的实际问题,为面向对象程序设计教学提供了一种新的方案,取得很好的教学效果。

面向对象;工程实例;系统教学

object-oriented; engineering examples; system teaching

引言

近年,面向对象技术覆盖领域广泛,面向对象技术已经成为程序设计的主流。鉴于此,面向对象程序设计已成为计算机应用类高年级学生及研究生必修的一门专业。我国高校开设C++、Java等面向对象技术语言设计课程。这些课程的主要教学目标希望实现学生从面向过程编程思想向主流面向对象(OO)思想的转变,掌握面向对象编程思想和方法。然而,多年教学实践表明,很多学生学完该课程后未能达到预期教学目标。一些学生可能在笔试中可以考出不错成绩,但在课程设计和项目实习等一些实践环节中,面对一些实际问题时,很多学生搞不清该如何下手,实践动手能力差。 结果,面向对象技术市场需求日益增多的同时,企业却抱怨招聘不到合适的掌握面向对象技术的学生。究其原因,主要有以下几点:其一,教师在讲授程序设计课程时喜欢照本宣科,缺少对学生动手能力的培养教学实例,学生也就成了“纸上谈兵”;其二, 教材缺少系统教学实例。很多学生在学习过程中能理解及掌握教材中的一些教学案例,但这些教学实例无法成为一个系统体系,导致所学知识无法结合实际项目加以融会贯通。如何能使用面向对象技术解决实际问题是许多高校老师的研究课题。本文以教研项目为背景,创造性的利用工程应用实例来进行教学,在面向对象程序设计的教学中进行尝试和实践,取得了很好的效果。

1 相关知识点

面向对象程序设计课程包含的知识点非常多且比较抽象化。其中,有I/O流、Vector容器以及运算符的重载等一些知识点的教学,绝大多数的教材中一般是针对性的设计一些简单的实例。这样,学习这些实例难以解决实际问题。那么,如何使得学生能灵活运用所学的知识呢?针对这个知识点教学,本文创新性的结合工程实例,提出了如何利用面向对象(OO)的思想和方法去解决工程应用问题,从而使学生能运用所学的OO技术,结合I/O流、Vector容器以及运算符的重载等知识点,很顺利的编写程序实现工程问题中的相应功能。

2 实例的引入

为了便于学习和讨论,我们将学生划分成几个小组,每个小组由一名组长负责。首先,在提出问题阶段,我们给出了工程实际中的原型数据。对于该原型数据,我们首先让学生对原型数据进行分析和讨论。通过讨论和学习,学生逐渐就明白对该原型数据进行格式化,理解了如何利用OO中类的设计来实现该原型数据中基础元素。在提出问题阶段,教师一定要把问题的正规化条理化。正规化要求教师把提出的问题做成幻灯片,在讲解的时候,学生便于清晰阅读,更重要的是它可以作为学生课后查阅资料的依据;条理化要求教师把所需要用到知识点列举出来,便于学生对所提出的问题结合相关的知识点。接着,通过相关理论及教材实例学习,再结合实例数据,做到理论联系实际。最后,学习完相关知识后,要求学生利用一周的课余时间,通过查阅相关资料,认真学习,实现相应功能。具体工程问题的描述为:给定工程原型数据集如表1所示。

在分析问题阶段,要求每个小组于每周固定时间的集中讨论汇报本小组对问题的理解。如何从该数据集文件中读数据,如何存放数据,如何处理数据等。带着对对问题存在的疑惑去寻找解决问题方法取得了不错的效果。

在解决问题方法,为了保证教学点与实例一致连贯性,采用问题与教学相关引导的方法。若知识点相关,则采用同一实例进行扩展,即程序代码相近,但针对不同知识点做局部改变扩展,使学生能快速理解实例,并专注于新的教学点。接着适当地对实例的归纳、对比、类比等方法去阐述教学知识点。每讲完一次课程,都为学生总结本次课程所学的知识点,提示下次课涉及的前序知识点,以及与下堂课有直接关系的前序实例,并布置与课堂实例的算法相似的程序作业,要求学生在课余根据相应知识点进行实例自学,让学生能通过所学的知识的直接迁移来完成作业。这样通过系统学习并练习相应实例,达到巩固和提高的目的。最后,也是最关键的,将前面所学的实例按提出问题、分析问题及解决问题步骤,将知识点进行贯通和连接,改进程序,层层推进至最终完成问题。

表1

这样伴随教学内容和进度,通过对同一问题进行按阶梯进行深化,一个复杂的综合实例分解成为若干个教学内容相关的小实例,最后又组装成一个大的应用系统程序,从而让学生系统全面地学习和掌握面向对象程序架构与程序设计思想。

3 解决方案

研究性学习是以问题为载体的一种全新的学习方式。它着力于学生的学,鼓励学生以类似科学研究的方式,进行主动探索[1]。

3.1 数据的格式化

经过对上述原型数据集的分析和讨论,为了便于文件的读入和数据的处理,我们将上述文件格式化为相应的三个文件,并且对文件的数据进行规范化处理。其基本规范化操作是去掉多余的符号,空行等一些无用的数据,这样做的目的是便于程序编写。

3.2 类的设计

针对教材的定义和讲解,我们根据原型数据的分析,我们可以定义三个基类:class BaseValue;class Substation;class Unit;这些类的数据成员可以参照文件中数据字段来进行设计。通过这样的分析和引导,学生对类的分析和设计就有明确认识和理解。

3.3 文件的读入及Vector的应用

为了能方便的从文件中获取数据,需要利用Vector及对象的思想方法。为此,我们使用3个对应的的vector容器:vector vbv;vector vss;vector vu;之后我们利用流对象,结合vector,从文件中获取数据后存储在相应的vector中。代码如下:

图1

为了能顺利将读的数据对象化,我们需要在对应的类中设计构造函数,以实现对象的创建。代码如下:

图2

3.4 文件的写出及Vector的应用

在程序中对数据进行处理完毕后需要对结果进行保存。为了让结果可以按自己设计的格式进行保存,我们引入静态多态知识点,讲解运算符重载,结合该实例,需要对析取运算符进行重载。通过该运算符的重载,学生在该实例实践中明白了静态多态的含义和作用。我们引导学生进行编码测试,代码如下:

图3

确定好输出格式后,就可以用输出流输出到文件中了。由于重载了插入运算符》》,所以在程序就能很方便的对数据进行输出。主要代码如下:

图4

4 教学效果

工程实例虽然着眼点在于转变学生学的方式,但却是通过转变教师教学的观念和教学行为的方式来实现的。在本课程中进行的工程实例学习过程中,教师主要是学习的组织者、参与者和引导者,通过该实例来激发学生的学习本课程的兴趣,培养他们的创新意识和动手能力。在学习过程中,每一位学生都是通过亲身实践,运用书本上的理论知识及课堂上所讲授知识,结合实例进行编码并获取直接经验。经过一个学期的训练,参加实例学习的学生,其编程技能特别是系统开发能力明显得到提高。

这样的教学,不仅同学们编程能力逐步得到了提高,而且也逐渐表现出极大兴趣和热情。并且,在相互学习和讨论的过程中,大家也逐渐认识团队作用。团队成员之间如何有效合作与交流也得到了很大的锻炼。大部分同学经过训练,现在不仅能编写出结构清晰、可读性好的代码,还能将自己实践中的经验与心得与他人分享和探讨。此外,通过实例教学法在期末考试中的程序设计题答起来也得心应手,进入学院工作室也能更快的融合到工作室的团队中去。

5 结语

面向对象程序设计作为我们计算机学院及兄弟学院各相关专业必修的一门专业基础课,对各相关专业学生后续专业课程的学习乃至培养应用型人才的目标都起着至关重要的作用。本文研究目标旨在改革现有的面向对象程序设计课程教学内容与模式,以培养高素质的创新型人才为出发点,切实提高学生的OO开发能力和动手实践能力,进而保证该课程教学的高质量并保持高校培养人才面向市场的特色。为达到这个目的,我们采用工程实例教学模式。工程实例教学法将教学内容与工程实际紧密结合,采用当今工程中的实例数据集,结合相关教学内容及知识点,对教材知识点进行适当的调整和扩充。这种教学模式极大地使学生学习兴趣极大化,将充分调动学生的主观能动性,进而提高学生的动手能力和创新能力,力求使学生符合当今岗位需求,并为后续课程的学习和研究打下基础。改进教学方法。实践证明,工程实例教学法适合面向对象程序设计教学,可以在今后的教学中大力推广。并且,教师还可以借助面向对象程序设计课程这个平台,采用工程数据集,鼓励更多的学生团队参与,加大力度实施实例系统。我们认为,该教学模式还可以广泛应用于其他实践性较强课程,以全面提升学生的整体素质。

[1]贾晓霞,吴际,李郭欢.面向Java的对象行为建模及可视化方法.计算机工程,Vol.33 No.18;2007: 48~50.

[2]朱振元,朱承.对象技术与抽象数据类型的实现.计算机工程, Vol.33 No.15.,2007.88-90

[3]张席,王志强. 国内外Java教学模式的比较和探讨. 计算机教育, 2007.1.44~47.

[4]周启海.论对象程序设计同构化教学教改与教育创新.计算机科学,2003vol.30,183-184

Quest and Practice Based on Engineering in Teaching Object-Oriented

Yang Wangming
Collage of Computer and Information Technology, China Three Gorges University, Yichang 443002, China

Object-oriented programming is the foundation courses of engineering students in compulsory professional. But, Due to its complexity and abstraction of think and methods in objectoriented, resulting in ineffective teaching objectoriented, there are theoretical and practical application of disjointed. Teaching engineering examples to explain practical problems to solve difficult systems application of object-oriented technology, a new program to provide for the teaching of object-oriented programming, made a very good teaching effect.

TP393

A

10.3969/j.issn.1001-8972.2012.21.117

猜你喜欢
面向对象程序设计实例
GEE平台下利用物候特征进行面向对象的水稻种植分布提取
医学专业“Python程序设计”课程教学改革总结与思考
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
面向对象方法在水蓄冷PLC编程中应用分析
高职高专院校C语言程序设计教学改革探索
基于面向对象的车辆管理软件的研制与开发
面向对象的SoS体系结构建模方法及应用
完形填空Ⅱ
完形填空Ⅰ