温州大学课程教案
- 学院:计算机科学与学院
- 课程名称:面向对象程序设计B
- 学时:54
教材:C++面向对象程序设计
- 授课教师:陈忠克
- 授课对象:计算机本科
第一课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
面向对象程序设计概述
4. 本授课单元教学目标:
让学生了解计算机程序设计语言的发展;理解面向对象的概念和方法;理解程序的开发过程和面向对象程序的开发过程。
5. 本授课单元教学重点和难点:
面向对象的方法
6. 本授课单元教学过程设计:
- 基础知识
- 参考书
- 如何学习C++和面向对象编程
- 结构化的程序设计
- 面向对象程序设计基本原理
- 面向对象的三个特点
- 面向对象程序设计的作用
- 计算机语言的发展
- 程序设计范式
- 程序执行方式
- 为什么选择C++
- C++语言的发展历史
- C++开发环境
- 常用集成开发环境
- C++程序开发流程
第二课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++面向过程程序设计1:从C语言到C++
4. 本授课单元教学目标:
让学生掌握C++与C语言的不同,包括注释、输入输出、命名空间。
5. 本授课单元教学重点和难点:
- 重点:C++输入输出
- 难点:命名空间
6. 本授课单元教学过程设计:
- 简单的C++程序实例
- 第一个C++程序 输出Hello world
- 第二个C++程序 求两数之和
- 第三个C++程序 求两个数中较大的一个
- 引出C++的新的注释风格
- 引出名字空间语法,为什么需要名字空间
- 引出C++的头文件习惯
- 引出C++的输入输出,介绍相对于C语言输入输出的好处
- 练习使用C++的输入输出
第三课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++面向过程程序设计:引用
4. 本授课单元教学目标:
掌握引用类型的使用,理解函数的引用参数传递,返回引用类型
5. 本授课单元教学重点和难点:
- 重点:引用参数传递
- 难点:引用返回类型
6. 本授课单元教学过程设计:
- 引用的定义
- 由swap函数引出引用参数的定义和用途
- 引用返回类型的定义和用途
- const引用的定义和用途
- 定义常量
- 强制类型转换
- bool类型
- 定义变量
- 结构体
第四课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++面向过程程序设计:函数
4. 本授课单元教学目标:
掌握内联函数、带缺省参数的函数的语法和适用场合;掌握函数重载的用途、定义。
5. 本授课单元教学重点和难点:
- 重点:函数重载、缺省参数
- 难点:
6. 本授课单元教学过程设计:
- 函数的声明与定义
- 由带参数宏引出内联函数
- 由很多参数的函数引出代缺省参数的函数
- 重载函数
第五课
1. 授课时间:
2课时
2. 授课类型:
理论课
3. 授课题目:
C++面向过程程序设计:其它语法
4. 本授课单元教学目标:
掌握C++内存分配、bool类型、string类型、变量定义规则、新型强制类型转换语法、const常量定义。
5. 本授课单元教学重点和难点:
- 重点:string类型
- 难点:内存分配
6. 本授课单元教学过程设计:
- 介绍const常量定义
- 介绍bool类型
- 介绍四种强制类型转换
- 介绍C++变量可以在多种地方定义
- 对比C语言和C++语言的内存分配
- 对比C语言的字符串和C++的string类
第六课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++基于对象程序设计:类和对象
4. 本授课单元教学目标:
掌握面向对象程序设计的基本概念,牢固掌握类的声明,类成员的访问控制,类的成员函数,对象的声明等类与对象的基本语法内容
5. 本授课单元教学重点和难点:
重点:成员函数 难点:成员函数、访问权限
6. 本授课单元教学过程设计:
- 用例子说明C语言中定义自定义类型的方法:用C语言结构体定义自定义类型,用函数实现操作结构体的方法
- 将C语言的结构体和操作结构体的函数结合在一起,引出C++类的概念
- 举例说明C++类的语法
- 举例说明对象的定义方法
- 练习类和对象的使用
- 举例说明类成员的访问权限控制
第七课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++基于对象程序设计:对象的构造和析构
4. 本授课单元教学目标:
牢固掌握构造函数和析构函数,拷贝构造函数的概念和写法
5. 本授课单元教学重点和难点:
- 重点:构造函数
- 难点:拷贝构造函数
6. 本授课单元教学过程设计:
- 举例说明构造函数的作用
- 介绍构造函数的定义语法
- 举例说明构造函数可以重载
- 举例说明调用构造函数定义对象的方法
- 组合对象的构造
- 举例说明对象的析构函数的作用
- 举例说明拷贝构造函数的作用
- 练习构造函数、拷贝构造函数、析构函数的使用
第八课
1. 授课时间:
2课时
2. 授课类型:
理论课
3. 授课题目:
C++基于对象程序设计:类和对象的其它方面
4. 本授课单元教学目标:
牢固掌握静态数据成员的定义,掌握静态成员函数的定义和使用;理解并掌握友元函数和友元类,friend保留字;理解并掌握常引用、常对象和常成员函数。
5. 本授课单元教学重点和难点:
- 重点:
- 难点:静态成员
6. 本授课单元教学过程设计:
- 举例说明静态数据成员的用途
- 举例说明静态成员函数的用途
- 练习使用静态成员
- 举例说明友员函数的作用
- 举例说明友员类的作用
- 举例说明常成员函数的用法
- 举例说明常对象的用法
第九课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++面向对象程序设计:继承
4. 本授课单元教学目标:
掌握派生类的声明,派生的访问控制;理解派生类的构造和析构函数。
5. 本授课单元教学重点和难点:
- 重点:继承的概念,派生类定义方法,派生类的构造
- 难点:派生类的权限
6. 本授课单元教学过程设计:
- 举实例说明继承的概念
- 派生类的定义方法
- 举例说明派生类的初始化方法,构造函数的定义
- 举例说明派生类的析构函数
- 举例说明派生类的权限控制
第十课
1. 授课时间:
2课时
2. 授课类型:
理论课
3. 授课题目:
C++面向对象程序设计:多继承
4. 本授课单元教学目标:
掌握多基类的派生类的声明,掌握虚基类的定义
5. 本授课单元教学重点和难点:
- 重点:
- 难点:虚基类的构造
6. 本授课单元教学过程设计:
- 举实例说明多继承的定义方法
- 举例说明虚基类的用途和使用方法
- 虚基类的构造方法
第十一课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++面向对象程序设计:虚函数
4. 本授课单元教学目标:
掌握多态的概念,掌握虚函数的定义
5. 本授课单元教学重点和难点:
- 重点:虚函数
- 难点:虚析构函数
6. 本授课单元教学过程设计:
- 举例说明多态的概念
- 举例说明多态的实现方法,引出虚函数
- 说明实现多态的必备条件
- 练习使用虚函数
- 介绍虚析构函数的用途
第十二课
1. 授课时间:
2课时
2. 授课类型:
理论课
3. 授课题目:
C++面向对象程序设计:纯虚函数
4. 本授课单元教学目标:
掌握纯虚函数的定义,掌握抽象类的概念
5. 本授课单元教学重点和难点:
- 重点:纯虚函数
- 难点:
6. 本授课单元教学过程设计:
- 举例说明纯虚函数的用途
- 介绍抽象类的概念
- 介绍接口类的概念
- 介绍面向对象的设计方法
第十三课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++运算符重载:运算符重载概述
4. 本授课单元教学目标:
5. 本授课单元教学重点和难点:
- 重点:
- 难点:二元运算符和一元运算符的区别
6. 本授课单元教学过程设计:
- 没有运算符重载的情况下,类是使用的(complex类、string类)
- 定义运算符后,类的使用得到简化
- 定义运算符的一般规则
- 定义二元运算符的规则
- 定义一元运算符的规则
- 使用运算符重载的完整的例子(complex类)
- 练习:定义分数类
第十四课
1. 授课时间:
4课时
2. 授课类型:
理论课
3. 授课题目:
C++运算符重载:特殊运算符重载
4. 本授课单元教学目标:
掌握模板函数、模板类的定义和用途。
5. 本授课单元教学重点和难点:
- 重点:模板函数、模板类
- 难点
6. 本授课单元教学过程设计:
- <<和>>运算符的重载
- = 运算符的重载
- 类型转换 运算符的重载
- [ ] 运算符的重载
- () 运算符的重载
- ++和-- 运算符的重载
-> 运算符的重载
- new, delete 运算符的重载
- string类的例子
第十五课
1. 授课时间:
2课时
2. 授课类型:
理论课
3. 授课题目:
C++泛型程序设计
4. 本授课单元教学目标:
掌握模板函数、模板类的定义和用途。
5. 本授课单元教学重点和难点:
- 重点:模板函数、模板类
- 难点:函数模板参数的推导
6. 本授课单元教学过程设计:
- 为什么需要函数模板
- 函数模板如何定义
- 函数模板如何使用
- 函数模板出现歧异
- 函数模板的重载
- 为什么需要类模板
- 类模板如何定义
- 类模板如何使用
第十六课
1. 授课时间:
2课时
2. 授课类型:
理论课
3. 授课题目:
C++标准库:输入输出流库
4. 本授课单元教学目标:
掌握基本的文件流和字符串流的使用
5. 本授课单元教学重点和难点:
- 重点:流的概念,文件操作
- 难点:字符串流的使用
6. 本授课单元教学过程设计:
- 文件输入流ofstream使用举例
- 文件输出流ifstream使用举例
- 字符串输出流ostringstream使用举例
- 字符串输出流istringstream使用举例
第十七课
1. 授课时间:
2课时
2. 授课类型:
理论课
3. 授课题目:
C++标准库:容器
4. 本授课单元教学目标:
掌握简单容器的使用
5. 本授课单元教学重点和难点:
重点:vector和list的使用 难点:跌代子的理解和使用
6. 本授课单元教学过程设计:
- vector的使用举例
- 用vector作为栈使用的例子
- list的使用举例
- 常用泛型函数的使用举例