“面向对象程序设计与C++”教学中的问题与思考

时间:2022-10-06 08:35:32

“面向对象程序设计与C++”教学中的问题与思考

文章编号:1672-5913(2008)06-0081-02

摘要:本文以大学本科计算机科学与技术专业学生为对象,总结分析了“面向对象程序设计与C++”课程教学及实验环节中存在的问题,并提出一些解决方法和建议。

关键词:面向对象技术;C++;教学;学习方法

中图分类号:G642

文献标识码:B

“面向对象程序设计与C++”课程不仅是高校计算机科学与技术专业大学生学习C++的一门必修课,而且在一些非计算机专业中也常作为选修课,还受到许多计算机专业人士及程序设计人员的青睐。但是,由于课程的抽象性、复杂性,加之学习方法的问题,使得一些学生感觉非常吃力。本文根据笔者亲身教学经验和讲授过程中出现的问题,讨论相应的解决方法和学习建议,希望能起到抛砖引玉的作用。

1复习不到位

该课程一般在大学二年级开设,因此学生的学习态度都比较端正、积极。在课堂上能够集中精力,认真听课,并参与互动。但是在课下工作不到位,主要表现是前导课程的知识遗忘和新讲授内容复习的不够及时。

我们知道,C++中的基础知识中很大一部分源于其前导课程C语言。C的语法在C++中是兼容的,C++是更高级的支持面向对象技术的C,很多知识点都是相同,如语句的基本结构、各种类型的指针等。可能由于隔了一个学期,记忆不够扎实,加上新内容没有复习到位,导致接受更多的新知识时,理解困难。学习的过程应该是发挥主观能动性,加工研磨现有知识并为已所用的过程。

俗话说“温故而知新”,课程的基础知识务必应该做到及时记忆,尽可能多地理解消化。因为很多时候,一些知识点可能需要反复理解才能慢慢吃透。例如,对于多态性的认识、类型兼容规则的理解和运用等。

2抽象问题能力较差

“面向对象程序设计与C++”课程中的主要概念之一就是“类”,因此需要掌握的基本技能之一就是依据所要解决的问题,按照客观事物的特点进行数据抽象和功能抽象,如图1。

图1 面向对象程序设计中对类进行抽象的过程

教学过程中发现大部分学生可以做到合理规划,但个别细节部分考虑不周,甚至有误。例如,设计“矩形类”中计算面积的成员函数时,形式参数的确定问题。仔细考虑,不难判断出该函数不需要从外界获得信息,只要从内部获得私有数据成员长和宽进行计算即可。但个别学生所设计的成员函数需要从外界获得长和宽,显然不合理,一则破坏了类的封装性,二则无法保护数据。类似这样的问题,应从勤于思考,循序渐进,提炼问题本质,培养抽象能力方面着手解决。

3复杂程序的组织思路不清晰

根据教学进度安排,课程伊始就会从软件工程的角度介绍面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的维护(OOSM)等软件开发过程的五个阶段。

可能由于教材例题以及习题比较简单,所以在上机实验时大部分学生是直接进入了OOP阶段,对着计算机屏幕编程。而一旦遇到复杂问题就无所适从,不知如何下手。解决方法是进行详细的OOA和OOD,充分利用UML进行设计,OOP阶段只按照OOA阶段中制定好的设计步骤编写代码。UML与程序设计语言无关,不但可用于表示C++中的类和类间的关系,而且适用于以面向对象技术来描述任何类型的系统。通过课程学习,应当会用UML分析类和类间关系,并掌握绘制UML图的一种专业软件,如Visio 2003、Rational Rose、或SkyDesigner等。

4程序调试能力弱

性能良好的程序和软件不可能一蹴而就,没有错误,因此调试是程序员最基本的技能之一。按照出错原因,可将之分为两类:一类是程序编译错误,此时可根据output窗口提示的出错位置和出错原因改正,并且每更正一处错误就重新编译一次;另一类是程序逻辑错误,这种错误需要通过认真分析,先定位错误,再改正之。在Visual C++ 6.0环境下,解决方法是利用Debug窗口中提供的工具,功能分别包括:重新开始、中止程序、中断执行、应用更改;进入下一语句、跳入、跳过、跳出、执行到光标处;快速观察变量;观察变量、观察寄存器、观察内存、观察堆栈和汇编等。

需要注意的是,在第二类错误的调试过程中,程序员应该比计算机清楚某一时刻程序的运行状态,做到事先就心中有数,然后有顺序地逐步检验,才能定位错误、解决错误。

5不规范的编程习惯

典型的表现之一是所编写的程序格式混乱,没有缩进或乱缩进。正确的缩进方法应该是“Tab”键的形式,这样做出来的缩进位置是固定不变的,不能用空格代替。在Visual C++ 6.0环境下,还可借助智能缩进工具,方法是选中需要缩进部分,然后在主菜单“Edit”中选择“Advanced”,点击“Format Selection”或者快捷键“Alt+F8”。严格规范的程序代码层次清晰,一目了然,可以降低代码出错率,例如能够有效避免括号不配对等低级问题,也便于后期的程序维护与修改工作。

另一个典型表现是程序没有注释或者注释全是废弃的代码。虽然在编译和执行时注释会被忽略,注释本身不会增加可执行文件的大小,但是注释的目的是方便代码的阅读和代码维护。因此,一定要按照统一的规范来书写足够的注释,尤其在相对复杂的程序设计问题和大型项目研发中注释及说明文档更加必不可少。现行的代码规范要求注释量应占到程序代码比例的20%左右,即100行程序中包含20行注释。注释可以书写在代码中的任意位置,但是一般写在代码的开始处或者结束处。Visual C++ 6.0中,正确的注释方法是以“//”为起始的行注释和“/*….*/”为起止符的多行注释。最后,修改程序代码时,一定要更新注释,同时建议记录相应的修改日期和程序修改人。

参考文献

[1] 郑莉.C++语言程序设计[M]. 北京:清华大学出版社.

上一篇:计算机毕业设计课程教学模式的探索 下一篇:软件工程教学中的团队学习模式研究