《面向对象程序设计》教学大纲
课程性质
专业必修课
课程名称
析构方法
面向对象程序设计(C++)
课程编号
*04073
适用专业
计算机科学与技术/软件工程
开课学期
第2学期
总学时
64
理论
52
学分数
4
实践
12
一、课程性质与目标
面向对象程序设计以标准C++为编程语言进行面向对象编程思维的培养,该课程属于专业必修课。通过本课程的学习,学生应实现如下目标:
1.知识目标:面向对象软件开发方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化的程序数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性。本课程主要介绍面向对象程序设计的方法和C++语言的基本特点。以C++语言中的面向对象机制为主。
学习者在学习过程中可以通过大量的程序实例和相关练习,逐步掌握C++的面向过程和面向对象的功能,重点掌握面向对象程序设计的基本知识和基本技能。
2.能力目标:具备用标准C++语言进行一般程序设计的能力,能阅读基本的标准C++代码 ,能初步具备面向对象程序设计的思想,初步学会使用面向对象中的封装、继承、聚合/组合、多态、模板等机制,学会使用常用的STL容器和算法。
3.素质目标:使学生掌握基础的C++语法,感受面向对象程序设计的魅力。除了注重程序的正确性和算法效率之外,在思想上也应重视程序的结构合理性、封装性、可读性、可复用性和可维护性。培养学生学习程序设计的细心和耐心,培养学生坚韧不拔,攀登技术高峰的优秀品质。同时让部分优秀的学生热爱上湖南省大学生程序设计竞赛,体会ACM程序设计竞赛的魅力。
二、课程教学基本要求
课程可进行适量预习; 课中应该认真听课,参与教学过程中的互动、回答问题及联系实际编程; 课后积极做好复习、认真完成作业及课程设计相关实践教学的环节。对部分优秀学生,
引入一定量的知名程序设计在线评测系统(如POJ等)中的简单题目,进行面向对象编程,并在线提交验证正确性与时间、空间效率,同时注重代码的封装性、可读性、可复用性。
三、教学内容与学时分配
课程教学内容与学时分配
序号
教学模块
主要教学内容
学时
1
课程导论
面向过程程序设计的特点和不足
2课时
面向对象程序设计的特点和优势
C++语言的特点、优势和对面向对象的支持
面向对象软件开发过程
信息在计算机中的表示与存储
课程的用途、学习要求与建议,考核方式说明
2
C++的数据类型、运算符、表达式
C++程序实例及C++程序组成
4课时
变量和常量
数据类型、运算符和表达式
IO流、提取运算符与插入运算符简介
格式控制简介
自定义数据类型
C++中数据类型的转换
3
C++的控制结构
选择结构
2课时
循环结构
各种控制结构的嵌套
4
函数
函数的定义、函数的调用及参数传递
4课时
函数的递归调用
内联函数
带默认值形参的函数
函数的重载
C++常用系统函数
5
类和对象
类和对象的概念和定义
6课时
对类成员的访问权限
成员变量和成员函数
构造函数、默认构造函数、复制构造函数、析构函数
成员函数与构造函数的重载
聚合与组合
UML类图(选讲)
结构体
共用体(选讲)
用构造函数定义类型转换
对象作为函数参数和返回值的情况
综合实例(选讲)
6
数据封装与对象生灭
标识符的作用域、生存期和可见性
4课时
对象的静态生存期和动态生存期
静态数据成员和静态成员函数
友元函数和友元类
常对象、常成员函数和常引用
多文件结构、外部变量与外部函数
编译预处理指令
综合实例(选讲)
7
数组、指针与字符串
数组的声明、初始化、使用及存储特点
4课时
数组作为函数参数的情况
对象数组
内存空间的访问形式
指针变量的声明与使用、&运算符和*运算符
指针的赋值和其他运算
用指针处理数组元素
指针数组
指针作为函数参数和返回值的情况
指向函数的指针
对象指针
动态内存分配和回收
深复制与浅复制
字符串
常用字符串处理函数
string类及其使用
综合实例(选讲)
8
继承与派生
类的继承与派生
4课时
公有继承、私有继承、保护继承的访问控制
派生类的构造函数和析构函数
虚基类与作用域分类符
虚基类及其派生类的构造函数
派生类对象的内存布局
基类向派生类的转换及安全问题
综合实例(选讲)
9
多态
多态的类型与实现
6课时
运算符重载的概念和性质
运算符重载为成员函数
运算符重载为友元函数
虚函数与重写机制
虚析构函数的特点
纯虚函数和抽象类
运行时动态识别RTTI
虚函数动态绑定的实现原理(选讲)
综合实例(选讲)
10
泛型编程与模板
泛型程序设计的概念
4课时
函数模板及其应用
类模板及其应用
模板的实例化机制
模板的特殊实现
体类的概念(选讲)
体内数据的组织(选讲)
综合实例(选讲)
11
C++标准模板库STL
标准模板库STL的概念和组成
6课时
操作区间的概念
函数对象与函数适配器
STL不可变序列算法
STL可变序列算法
STL排序与查算法
STL数值算法
容器的基本功能与分类
STL顺序容器:vector、list、dequeue
STL线性关联容器:stack、queue、priority_queue
STL树形关联容器:set、multiset、map、multimap
迭代器
综合实例(选讲)