C++面向对象程序设计实践教学改革探讨*

2015-08-16 09:34张会
关键词:面向对象结点程序设计

张会

(攀枝花学院 数学与计算机学院,四川 攀枝花617000)

C++面向对象程序设计实践教学改革探讨*

张会

(攀枝花学院 数学与计算机学院,四川 攀枝花617000)

针对“C++面向对象程序设计”课程教学中存在的问题,提出了包括验证型、设计型、综合型的多样型实践教学改革实施方案,该方案有效的提高了学生的学习兴趣及综合编程能力。

程序设计;验证型;设计型

引言

《C++面向对象程序设计》是计算机专业的一门专业基础课,其主要目的是培养学生采用面向对象思维编写程序,为后续软件开发类课程打下坚实基础。该门课程是实践性较强的一门课程,要求学生学完本门课程后能独立编写应用程序,本文就《C++面向对象程序设计》实践教学中存在的问题进行分析并提出了多样型实验教学模式的改革探讨。

1 存在的问题

1.1 学生面向过程编程思想根深蒂固,难于转变

很多高校都是先开设C语言程序设计课程,再开设面向对象程序设计的C++程序设计课程。学生在学习C++程序设计时难以从面向过程编程转化为面向对象编程思维,而很多教师忽略此情况,只注重照搬书本讲解概念,导致学生学完C++程序设计课程后,仍采用结构化程序设计方法的编程思想,未达到面向对象程序设计教学之目的。

1.2 学生在学习过程中未形成面向对象的知识体系

在C++程序设计课程中,教学内容主要包括类、对象、继承、多态、抽象、接口、异常、I/O流、运算符重载等。学生学习完C++课程后,脑海中未形成一个完整的知识体系结构,无法将各内容有机的关联起来,更无法将各知识点灵活应用于上机实践,编写出一个具有创新水平的应用程序。

1.3 不注重提高学生的编程能力

学生知识体系不健全,各知识点孤立,片面,无法灵活运用所学知识解决实际问题,因此在编写程序过程中显得特别被动,只会为了验证一个知识点而编写程序。老师要求学生编写综合型实践项目,学生不会主动思考独立编写程序而只会一味等待老师编写的参考程序。而后再照搬参考程序,因此学生丧失了主动编写程序的能力,无法达到举一反三,灵活运用各知识点于实际编程中的能力,当然也就无法设计出一个易用性、扩展性和复用性强的程序,因此编程能力无法得到有效的提高。

1.4 上机实践项目类型单一

由于C++程序设计理论教学中的概念知识点较多,因此与之配套的实践项目多是验证型实验,所设计的题目基本上都是为了验证某一个或多个知识点而设计的实验项目,从而使学生感觉对所学语法或知识点较茫然,不知如何用所学知识解决实际问题,使学生觉得学无所用。

2 教学改革的措施和方法

2.1 让学生清楚面向对象程序设计与面向过程程序设计间的关系

基于对象的编程更符合人的思维模式,其具有封装性、继承性和多态性的特点,因此易于扩展和复用[1]。面向对象编程是将属性和操作封装成一个类,再通过类实例化的主体调用类中定义的方法对属性变量进行操作。如家用洗衣机将内部结构相对于用户进行封装隐藏,通过使用对外的接口按钮来启动、设置和停止洗衣功能。

面向过程编程的核心是编写解决某个问题的程序段,如C中的函数。函数是程序执行时产生的一种行为,但面向过程函数没有行为主体,不符合自然界中的主体行为规律,即某一行为是由某一主体(对象)所产生。如编写一个max()函数,该函数不从属于任何一个主体,可以直接调用,不符合自然界中主体发出操作的规律,不利于程序的扩展和维护。面向对象编程比较接近人们表达事物和解决问题的思维方法,其编程的核心围绕对象,一切行为属性均从属于某一特定的对象。

面向对象编程需要编写类中封装的方法体,即写一个小算法,同时面向对象编程注重怎样合理、有效地组织类,对象。因此教学中应把结构化程序设计与面向对象程序设计有机地结合起来,并注意与结构化程序设计方法相比较,注重面向对象程序设计思想的传授,引导学生程序设计思维的转变[2]。

2.2 理论联系实践,学生在实践中形成面向对象的知识体系

学生在理论教学中学习的知识点片面、孤立,不通过实践环节,无法将其有效组合在一起,形成知识体系结构,不能有效地应用所学知识点,易遗忘,易产生所学知识无用的想法,因此只有在掌握基本知识点的基础上,进行一些综合项目的训练,才能真正提高学生利用所学知识解决问题的能力,才能对实际中需解决的问题触类旁通,举一反三,因此项目实践与课堂教学缺一不可,不能厚此鄙薄[3]。

验证型实验只是为了让学生熟悉基本概念,基本语法,建立C++基本的知识框架,但无法让学生灵活使用所学习相关知识点,因此,笔者在实践教学过程,采用验证型实验+设计型实验搭配组合,让学生实践一个验证型实验后,再让学生做一个设计型实验项目。学生在实践过程中强化理论教学中的知识点,同时形成有用的知识链。如在学完类、对象相关概念后,安排学生先做实验教材中的验证型实验,再做一个贪吃蛇游戏或一个小的系统如职工工资管理系统之类的设计型实验,此类设计型实验中融合类及对象的相关用法。学生在做设计型实验时是在验证型实验的基础更进一步的学习,既巩固了验证型实验中的知识点,同时也提高了学生的编程能力,使学生能够体会到学以致用的乐趣,从而可以极大的调动学生的学习主动性和积极性。下面举例说明。

贪吃蛇游戏是学生在学完类、对象概念且做了一个验证型实验后,所设计的一个设计型实验,以使学生把所学知识及时运用于实践中,从而提高学生的学习兴趣。贪吃蛇游戏中类的设计主要由围墙类,蛇身结点类,食物类实现。围墙类用一个二维数组来实现,封装在墙类中的操作包括初始化外墙和输出外墙。墙类(Fence类)的声明如下:

蛇身结点(ShakNode)类,类中包括蛇身结点在墙内的坐标x,y值,蛇用类中定义的prior,next指针将蛇身结点连接,使用链表是为方便插入删除蛇身结点。定义get_x(),get_y()两个方法用于获得蛇头结点在墙内的x,y坐标。add_head()在蛇移动或吃到食物时,蛇头部插入一个节点。delete_tail()蛇移动过程中,为使蛇看起来在移动,在蛇头部插入一个结点时,尾部删除一个结点。moving()方法通过调用add_head()及delet_tail()方 法 使 蛇 动 起 来 ,change_direction(char)根据键盘上的上下左右键操作来确定蛇身的移动方向,蛇身结点类声明如下,该类中包含了蛇身结点的操作和属性变量的声明:

食物类(Food),Food类操作当食物被蛇在移动过程中吃掉后,通过get_food()随机生成一个食物,其位置在墙内的任一位置,食物的位置值存放于food_x,food_y值中。Food类声明如下:

在此实验中既涉及到算法的分析,即如何让蛇在围墙中动起来,如何随机产生食物,如何让蛇吃食物的算法分析,同时也需要学生考虑定义哪些类,及定义类中的属性和方法。通过该实验项目的练习后,学生对类和对象的使用有了更具体的认识,体会到了学有所用的乐趣,也明白了学习不只停留在对所学知识点验证的层面上。

学生学完类的继承、抽象、虚函数后,可以让学生做一个职工工资管理系统让学生将类、继承、抽象、虚函数等知识点灵活而很自然的运用于所编写的系统中。

学生学完友元函数,运算符重载,输入输出流、文件等相关知识后,实践一个复数计算器设计型类的实验项目。复数计算器要求有:①能进行加减乘除,自增,自减,关系运算(比较复数模的大小)。②输入重载函数,输入形如a+bi的复数,给实部虚部正确赋值,输入有误时,在程序中进行异常判断。③记录下不同用户使用计算器的情况,以文件的形式保存在计算机内。根据计算器功能的描述,需要声明两个类,声明形式如下:

复数计算器例子是一包含了友元函数,运算符重载,输入输出流、文件等知识点的一个综合实例,从而巩固实验教材上的验证型实验,同时也提高了学生的学习兴趣。

2.3 上机实践实验需要项目多样化,注重提高学生的编程能力

为使C++课程的实验教学达到预期目标,就必须重视实验教学内容的丰富性,启发性以及整个实验课题的系统性[4]。因此与C++程序设计课程相配套的实验不能只局限于验证型实验,需要有设计型,综合型实验项目,让学生通过实验达到知识结构的系统性,同时体会到学有所用,从而使学生有成就感。为使学生所学知识点形成体系结构,在学生学习完一定的知识点后实践一个验证型实验,再实践一个设计型实验,对相关知识进行巩固,在设计实验时一定要考虑到趣味性及实用性。在C++程序设计教学结束时,再做一个综合型实验包含整个C++相关知识点的综合型实验。笔者在实践教学过程的实验项目设计如下:

表1 C++程序设计实践教学安排表

3 结束语

通过笔者多次在所授班级中实践,采用多样型实验教学模式,教学效果和教学质量有了显著的提高。所授课的学生参加期末考试及各类比赛如ACM大赛,均取得了很好的成绩。采用验证实验+设计型实验的实践教学模式既丰富了教学内容,也极大的提高了学生学习的主动性和创新性,能积极的采用面向对象程序设计思想进行编程,解决实际问题,从而有效的提高了学生的编程能力。

注释及参考文献:

[1]耿祥义,张跃平.Java面向对象程序设计[M].第2版.北京:清华大学出版社,2013.

[2]张本成,龚伟.面向对象程序设计教学改革探讨[J].内蒙古师范大学学报,2008(1):134-136.

[3]鲁丽,张采芳.面向对象程序设计课程实践教学改革的探讨[J].电脑知识与技术,2013(3)::285-286.

[4]赵晓,王丽丽.C++面向对象程序设计多样型实验探究[J].Computer Era,2013(7):46-47.

Discussion on Experiment forC++Object-oriented Programming

ZHANG Hui
(School of Mathematics and Computer Science,Panzhihua University,Panzhihua,Sichuan 617000)

According to teaching problems of“C++object oriented programming”course,this paper puts forward the scheme of the teaching reform practice of biodiversity,including verification type,design type, comprehensive experiment,and gives the implementation method.This scheme effectively improves the students' learning interest and comprehensive ability of programming.

programming;verification type;design type

TP311.1-4

A

1673-1891(2015)01-0151-03

2014-10-10

四川省教育厅理工科一般项目(项目编号:14ZB0407)。

张会(1980-),女,四川射洪人,讲师,硕士,研究方向:计算机应用,应用程序开发。

猜你喜欢
面向对象结点程序设计
LEACH 算法应用于矿井无线通信的路由算法研究
基于八数码问题的搜索算法的研究
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
面向对象Web开发编程语言的的评估方法
峰丛洼地农作物面向对象信息提取规则集
基于面向对象的车辆管理软件的研制与开发
PLC梯形图程序设计技巧及应用
面向对象的SoS体系结构建模方法及应用