面向对象程序设计课程研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计课程的研究
摘要:本文介绍了面向对象程序设计课程的主要核心内容,教材选取原则,以及在理论和实践教学中要讲究的教学方法。
关键词:教学方法;教学内容;面向对象程序设计;教材
中图分类号:tp311文献标识码:a文章编号:1007-9599 (2013) 07-0000-02
c++是一种高效而又实用的程序设计语言,它既可以进行过程化程序设计,也可以进行面向对象程序设计,因此成为了编程人员最广泛使用的工具。是我系电子信息、电子科学类本科生的专业选修课,通过该课程的学习,学生应该加深对结构化程序设计的理解和掌握面向对象程序设计中基本的概念、方法,在理论和实践上为后续软件课程的学习打下坚实基础。本文主要介绍该课程的核心内容安排,教材选取原则,以及在理论和实践教学中要讲究的教学方法。1教学内容安排,至少应该讲述的核心内容
我系面向对象程序设计课程是在c语言程序设计基础上开设的。学生已经掌握程序设计的三种基本结构,并且具有初步编程能力,因此面向对象程序设计教学中,在做好c到c++编程模式的快速转变之后,就可以围绕面向对象程序设计的三大特征(封装性、继承性和多态性)展开教学,让学生了解面向对象特性以及c++如何实现这三个特性,使学生掌握面向对象程序设计范型和一种面向对象的编程语言。该课程在我系开设48个学时,其主要核心内容[1]如下:
序号课程核心内容学时
1 基本数据类型及指针,内存空间分配方案。 2
2 函数的定义与参数传递。 2
3 类的定义,构造函数和析构函数。 2
4 对象定义和初始化。对象作为函数参数,指向对象的指针和对象的引用。 6
5 类的静态成员。 2
6 类的友元。 2
7 继承的基本概念,派生类的构造和析构。赋值兼容原则。
2
8 重载的概念。函数重载和运算符重载。8
9 虚函数与多态类。动态绑定的实现原理。8
10 纯虚函数与抽象类。 4
11 c++的输入输出流类库的结构。流类运算符重载。文件流与文件操作。 4
12 异常处理的基本语法。异常处理的其它用法。 2
13 软件重用的概念。c++模板与重用。面向对象设计模式与软件重用。 4
表1面向对象程序设计课程核心内容
在内容的选取上,不同的院校大同小异,那么我们要注意的是,在进入实质性教学前要重视预备知识的回顾与讲授[2],虽然学生有c语言程序设计的基础,但c是过程化的语言,关注的是功能的
划分和函数的实现,是一种和面向对象完全不同的编程范型。如果一开始就讲授类、对象等面向对象知识,没有一个合理的铺垫会很突兀,不易接受。其次,在c语言的学习过程中,函数、指针和结构体是重点也是难点,也是学生的薄弱环节,而这些在面向对象中会经常使用,所以不进行回顾就直接在面向对象的教学中使用必然会影响到教学效果。因此要重视课程之前应该掌握的预备知识的学习。主要包括五个方面[2]:引用;const关键词;函数重载;new 和delete;cin和cout。在函数的回顾中重点介绍参数的三种传递方式:值传递、地址传递和引用传递,并自然地过渡到函数重载。软件重用是一个很重要的概念,为软件的工程化提供了条件,也大大提高了系统建立的效率,面向对象的设计模式可以有效地实现软件复用,但它本身就是一门专业课,有一定的学时要求,若要系统地展开讲解不太现实,所以在课程的教学中,老师最好能做到深入浅出地描述一些模式,并渗透到具体地实例教学中,当然这对教师融会贯通的能力来说有一定的挑战性。
2改进教学方法
教学方法在教学环节中起着重要的作用,它决定着教学效果的好坏,所以好的、适用学生的教学方法可以帮助学生更好地理解概念,掌握方法。在该门课程教学课程中,我主要将以下几种教学方法结合在一起来使用。
2.1注重实例,并从实例出发,引出语法概念
教师根据知识要点选择合适的例子,这里的合适指的是既能反映
知识点又能引起学生的兴趣,先在课堂上提出要解决的问题,然后和学生一起分析,引导得出算法的流程图,再将算法的细节用计算机语言实现,这样对学生的启发更大,也比较容易理解和接受,抓住本质,以达到举一反三,触类旁通的效果。同时选择综合性的案例,在知识点教学后,让学生用使用所学的知识点去综合案例的子任务。
2.2充分利用形象思维,引导学生尽快转变思路,准确理解概念
[3]
比如在讲解“递归”概念时,可借助老和尚给小和尚讲故事,理解“递”和“归”的含义;再比如,利用地下工作者寻找密钥故事让学生理解利用指针间接访问变量值。教师应该理论联系实际,用事例来解释抽象概念,帮助学生建立新知识与已有知识体系的关联,对于抽象的概念或流程,可借助动画的形式来表现,可大大提高效率。
2.3坚持现场编程
本人在c语言程序教学中,坚持在课堂上编写示例程序,实践证明具有良好的教学效果。所以在c++的教学上也是适用的。在编程的过程中,学生可以直观地看到如何编写源代码、编译、链接和运行程序,同时培养学生良好的编程习惯,以缩格的方式书写代码,必要的注释,正确的命名等等。教师还要根据自身的经验,将容易出错的细节故意呈现出来,让学生来分析错误的原因,学会如何调试程序,使其掌握编译器常见的错误和警告信息的原因和处理方
法。通过耳濡目染可以让学生了解编写程序中所出现的各种困难和陷阱。之后在简单程序原型的基础上,逐渐深入,引申出新的问题,让学生触类旁通,在修改源代码的基础上,解决新的问题。
2.4重视程序调试
在学习过程中,学生遇到的较大困难之一就是在调试程序,当编译器报告了数十个错误,或代码编译通过,而结果却莫名其妙时,学生常常束手无策,久而久之丧失学习的动力和信心。所以,应当让学生学会一些调试方法。对于编译错误,我们可以通过output
窗口查看出错位置和出错原因,进行改正。而对于出现非预期结果,通常要利用debug窗口提供的工具来解决,例如用快捷键单步执行,设置断点,使用“variables”工具添加待观察的变量,使用“watch”来查看变量的值。必要的时候还可以观察寄存器、内存、堆栈和汇编。
2.5增加课程设计[5]
为了真正提高学生的编程能力和软件设计能力,我们可以考虑在课程中增加课程设计。课程设计以大作业的方式布置,在课程设计中,让学生用面向对象的方法设计一个具有一定难度的小型系统,学生可以以小组为单位,2-3人自由组合,相互合作学习,经过系统需求分析后建立模型、分析确定算法流程,最后编写程序,完成系统的测试和调试工作,并在实验报告中提供完整内容。以此促进学生全面掌握面向对象的思想和方法。提交大作业时,可以组织答辩,各小组派代表上台分析系统的设计思路、解释代码含义并接受