应用型本科院校计算机专业C++教学改革研究
2015-12-07武永成
武永成
摘要:C++面向对象程序设计是大多数本科院校计算机专业的必修课。本文以应用型本科院校计算机专业为背景,分析了当前C++教学过程中存在的一些问题,从教学内容和教学方法等方面提出了相应的改进办法。实践证明这些方法是有效的。
关键词:C++面向对象程序设计;计算机专业;教学改革
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2015)25-0138-02
C++面向对象程序设计是大多数本科院校计算机专业的必修课。面向对象程序设计(以C++和Java为主要代表)是与面向过程程序设计(以C语言为主要代表)完全不同的一种程序设计范型,是目前软件开发和程序设计的主要方法。C++面向对象程序设计以C++语言为载体,围绕面向对象程序设计的封装性、继承性和多态性,重点讲述C++面向对象程序设计的语法规则、编程方法和应用。
一、C++教学过程中存在的问题
高等院校的最重要的功能是培养人才。作为我国高等教育的重要组成部分,应用型本科院校的主要功能是培养符合经济社会发展需要的、具有一定创新精神的应用型人才。应用型本科院校中培养的应用型人才应具有较为扎实的基础知识、实践能力和创新精神,较强社会责任感的高级应用型人才;应该具有协调发展的知识、能力、素质,社会适应性较强,能够适应市场经济大潮并在其中奋勇前进的“好使顶用”的应用型人才;区域经济社会发展主战场应该是他们的拼搏之地,他们应该具有较强职业意识和区域意识,在地方应该能留得住、下得去、用得上。
计算机专业是一个以应用为主的专业,“C++面向对象程序设计”是一门实践性很强的课程。教师的教学方式应该为:在进行理论教学的同时,必须让学生在不断实践中来全面掌握面向对象的核心思想,以及多变灵活的编程方法与技巧。当前,教师在讲授本门课程时,一般采用传统方法:理论教学和实践操作相结合,课堂上教师讲授原理和知识,实践课时学生上机操作,完成一些实验题目,这种教学方式存在许多的问题,主要表现在以下三个个方面。
1.如前所述,C++面向对象程序设计,既涉及面向对象程序设计的三大特性(封装性、继承性和多态性),又涉及C++自身的语法规则,在授课的过程中,很多教师将教学的重点放在C++的语法规则等理论讲授上,该课程的考核方式是期末通过一次试卷考试来决定。很多学生认为只要期末考试考的高,就表明这门课学的好。
上述这种现象最大的问题是,一些理论学的好、分数考得高的同学,真正动手编程解决实际问题时,表现却差强人意。这就像一个学音乐的同学,理论学了很多,但却不会演奏自己的乐器。作者所在学校为地方本科院校,属于应用型本科院校范围。与传统的本科教育不同,应用型本科学校必须以需求为导向,以应用为根本。其主要任务是培养学生运用理论解决实际问题的操作技能,没有能解决实际问题的操作技能,所有的理论和知识都是纸上谈兵。
2.教学内容以教材为主,很少引入具有实际项目应用的例子。计算机技术发展很快,教材内容比较陈旧,落后于目前市场需求,无法达到满意的教学效果。
3.实践教学重视不够。实验内容设计针对性不强。实验指导书上的实验内容,许多是验证性的实验,对于一些设计性的实验,针对性和实用性不强,不能激发学生的兴趣和创新精神。有些学生也不太重视实际动手能力的培养,认为理解了相应的知识和概念就行了,至于编写程序、尤其是调试程序,又费时又费力,积极性不高。其实上机实验就是要求学生编写程序。衡量学生程序能力高低的一个重要指标就是调试程序能力。由于基础实验时学生没有打好相应的基础,到了综合性实验和课程设计,学生更觉得困难重重。
二、语法知识够用,重点在面向对象程序设计思想
理论教学上,重点应放在面向对象程序设计思想上。毕竟,它与C语言的面向过程的程序设计思想,有很大的不同。重点让学生理解类和对象的关系,成员变量和成员函数、构造函数和析构函数,封装性的实现,继承性的实现和多态性的实现。一些很细的语法规则,对象的复制与赋值、友元、多重继承、虚基类、用户自定义类型的输入输出等,则点到为止,不要花太多时间在课堂上讲授。在实际应用的过程中,用到该知识点时,学生会查阅相关资料自行解决即可。如讲授构造函数时,关键是讲明在面向对象程序设计中,为什么要构造函数?它是由面向对象程序设计的哪一个特性决定的?还要通过程序举例,说明为什么一个类在定义了默认的构造函数以外,通常还要定义带参数的构造函数;在讲授继承时,除了讲授派生类的定义方法外,关键是让学生理解,作为面向对象程序设计的主要特征之一,它不仅能一定程度减少代码的冗余性,更重要的是,它使得一个庞大的系统变得更条理清晰,便于管理;在讲授多态时,先要讲授子对象父对象的赋值兼容。而子对象父对象的赋值兼容规则可以使得通过父类型的指针或引用调用子类型的成员方法,这种特性可以大大提高大型软件程序设计的可扩展性;在讲授异常时,先通过程序举例的方式分析异常产生的原因,然后先指出面向过程的程序设计中是怎样处理异常的,再讲述面向对象的程序设计是如何处理异常的,以及C++的异常处理,通过对比的方式,使学生更好地掌握C++面向对象程序设计思想。
三、项目案例教学
在学生掌握了C++面向对象程序设计最基本的结构和方法后,一定要选取合适的项目案例进行教学。这些项目案例既要包含基本的知识点,又要有一定的实际应用背景,难度适中。如果整个课程讲完,都只是讲授一般教材上的例题,学生练习的也只是课后的基本知识点的习题,这样的教学效果肯定是不好的。学生学到的都是一些零散的知识,根本没有接触到真正的软件开发和程序设计的实践,根本没有提高解决实际问题的动手能力和创新能力。对于C++面向对象的程序设计和软件开发,只能算是知道一些皮毛。
例如,将一个小项目“图书管理系统”的C++实现贯穿在整个课程的教学过程中。分阶段逐步实现。先是学会建立相应的类和对象,建立类的构造函数和析构函数,确定类的成员变量,设计和实现类的成员函数。利用这些对象,进行相应数据的增、删、改和查询的功能。这时因为还没学C++的文件流,数据都放在内存中,用数组或链表进行存放。而当讲到C++的文件流时,相关的数据则是放在文件中,涉及文件的读、写操作。关键是有实际应用背景的项目案例,而不能是为讲授某个知识点而编造出的脱离实际的例子。只有这样,才能真正激发学生学习的兴趣。要知道,兴趣是最好得老师。endprint
四、重视和强化校内实践环节
由于种种原因,学生不是很重视编程实践,老师往往由于带的学生比较多,对于学生的实践环节,通常没有像重视课堂教学那样重视。很多学生即使是教材上的例子,要他们编辑调试出来,都很困难,碰到一点点问题,都调试不出来。问题的根本在于学生和教师对实践环节的不太重视。这样的学生,到了课程设计时,简直就是寸步难行。从验证性试验开始,就要督促学生多编程、多调试。
C++面向对象课程设计是对本课程的综合应用和实践的检验,对于学生真正掌握本门课程起着至关重要的作用。可以毫不夸张地说,学生课程设计的质量和水平,才真正反映本课程的教学效果。
首先课程设计的题目不能千篇一律,要有针对性。否则,学生根本不动脑筋,直接从网上复制粘贴下来。其次,应该真正落实学生课程设计的时间。许多课程设计都是安排在学期的期末,一般2周时间。但学生期末往往要准备各门课程的期末考试,包括C++本身的期末试卷考试,真正沉下心来做课程设计的不多。
五、加强校企合作的实训
完成C++面向对象程序设计的课程设计,应该说本门课程的基本教学任务完成。但是,如果认为学生现在就能用C++去到软件公司进行程序设计工作,则显然是不行的。C++语言实际软件开发中的应用非常广泛,如应用于游戏娱乐、桌面系统、基础软件、音频视频、网络通信等诸多领域,是世界上使用最广泛的编程语言之一。随着物联网技术的发展,C/C++技术在3G网络通信(移动网络、互联网等专用网络)、多媒体处理、智能识别等领域得到了进一步的推动和发展。每一个应用领域都有自身的一些特点和环境。使用的平台,windows平台用VC6.0或者vs2010,linux用GCC,不同的平台和环境,也有很大的不同。学校可以有针对性的在某些具体应用领域,与软件企业开展校企合作。学校通过与软件企业的合作,可以及时掌握软件行业的最新发展动态,对人才的最新需求,有针对性地培养人才。在企业软件工程师及学校教师的共同指导下,使学生在企业环境中进行项目实训、顶岗学习,培养学生技术能力、职业素质,积累项目开发的经验,培养学生分析问题、解决问题、总结问题的能力,实现与软件企业的真正零距离接触。与此同时,以顶岗实习时的实际项目为题,进行毕业设计,是一个非常好的进一步巩固和升华C++面向对象程序设计的方法。这样的论文有企业项目实际背景,技术较为先进,内容更加充实,有很好的实际应用价值。
六、结语
无论从理论和实践上讲,C++面向对象程序设计对于计算机专业的学生来说,都是十分重要的。文章在分析了当前C++面向对象程序设计教学过程中的一些不足,提出了在教学内容、教学方法上一些行之有效的办法。教学改革只有进行时,没有完成时。随着实际情况发生变化,教学改革也应该随之而变化,在今后的工作中,我们将不断探索、不断前进。
参考文献:
[1]李素若.C++面向对象程序设计[M].北京:中国水利水电出版社,2013
[2]丁智国,钱婕.面向对象程序设计课程教学改革[J].计算机教育,2011(9):9-12.
[3]伍维根,钟玉良,文忠波,等.应用型人才培养的探索与实践[J].教育发展研究,2007(21):53-55.endprint