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