第一部分 理论知识 3
章1章 面向对象程序设计的基础知识 3
1.1 程序设计思想的发展 3
1.1.1 程序设计方法的发展 3
1.1.2 面向机器的语言 4
1.1.3 面向过程的语言 4
1.1.4 面向对象的语言 4
1.1.5 用于编写可视化程序的语言 5
1.2 面向对象程序设计的基本概念 5
1.2.1 对象 5
1.2.2 类 5
1.2.3 面向对象程序设计的三大特性 6
1.3 C++语言的基本程序结构 7
1.3.1 C++语言简介 7
1.3.2 C++的基本程序结构 8
1.3.3 C++的程序运行 9
1.4 面向对象程序设计过程 9
1.5 习题1 10
第2章 VC++ 6.0开发环境简介 12
2.1 安装Visual C++ 12
2.2 Visual C++ 6.0工作平台 14
2.2.1 Visual C++ 6.0基本用户界面 14
2.2.2 菜单命令简介 15
2.2.3 工具栏简介 20
2.3 编译与运行控制台工程 22
2.4 其他C++程序编辑环境简介 24
2.4.1 DEV 24
2.4.2 Visual C++ 20XX 27
2.5 习题2 29
第3章 C++语言初步 31
3.1 基本数据类型 31
3.1.1 数据类型概述 31
3.1.2 常用数据类型应用 32
3.1.3 保留字与标识符 34
3.1.4 变量 35
3.1.5 常量 36
3.1.6 构造数据类型 38
3.2 表达式与类型转换 41
3.2.1 表达式 41
3.2.2 自动类型转换 41
3.2.3 强制类型转换 42
3.3 指针 42
3.3.1 指针的定义与使用 42
3.3.2 指针与数组 45
3.3.3 指针运算 46
3.3.4 动态内存申请 47
3.4 基本控制结构 50
3.4.1 简单的输入/输出语句 50
3.4.2 条件语句 51
3.4.3 循环语句 52
3.4.4 转移语句 55
3.5 函数 57
3.5.1 普通函数定义 58
3.5.2 普通函数的调用机制 60
3.5.3 函数与引用 62
3.5.4 函数与const 64
3.5.5 内联函数 65
3.5.6 带有缺省参数的函数 66
3.6 习题3 67
第4章 类与对象 70
4.1 类 70
4.1.1 类的定义 70
4.1.2 类的实现 72
4.2 对象 72
4.2.1 对象的创建 72
4.2.2 this指针与对象的封装 74
4.2.3 类的定义与头文件 75
4.3 构造函数 76
4.3.1 对象的初始化方法 76
4.3.2 构造函数的定义 77
4.3.3 构造函数的调用 77
4.3.4 缺省构造函数 79
4.3.5 复制构造函数 81
4.4 析构函数 82
4.5 构造函数与类型转换 85
4.6 友元 87
4.6.1 友元函数 87
4.6.2 友元类 88
4.6.3 友元的使用 89
4.7 static成员 92
4.7.1 静态成员的定义与使用 92
4.7.2 静态成员综合实例 93
4.8 对象成员 94
4.8.1 对象成员的概念 94
4.8.2 对象成员的初始化 95
4.9 const与volatile 97
4.9.1 const型数据成员与volatile型数据成员 97
4.9.2 返回c_v的成员函数 98
4.9.3 const成员与volatile成员 98
4.10 习题4 99
第5章 继承与派生 102
5.1 继承的基本概念 102
5.2 单一继承 103
5.2.1 单一继承定义格式 103
5.2.2 赋值兼容性 105
5.3 继承与构造函数、析构函数 106
5.4 派生类 107
5.4.1 保护成员 107
5.4.2 派生类成员的访问控制 109
5.5 多重继承 109
5.5.1 多重继承的语法形式 110
5.5.2 二义性及其支配规则 111
5.6 虚基类 112
5.6.1 重复继承 112
5.6.2 虚基类的概念 114
5.7 优化类层次设计 115
5.7.1 抽象与具体 115
5.7.2 封装与开放 118
5.7.3 继承与组合 118
5.7.4 综合实例 119
5.8 继承与类库 123
5.9 习题5 124
第6章 多态性 127
6.1 多态性的基本概念 127
6.1.1 程序的多态性 127
6.1.2 函数调用捆绑 128
6.2 函数重载 128
6.2.1 普通函数重载 128
6.2.2 函数重载的注意事项 129
6.2.3 成员函数的重载 130
6.3 运算符重载 131
6.3.1 “=”的重载 131
6.3.2 “++”的重载 133
6.3.3 “[]”的重载 135
6.4 特殊运算符重载 136
6.4.1 类型符重载 136
6.4.2 运算符重载规则 138
6.5 虚函数 138
6.5.1 虚函数的概念 138
6.5.2 虚函数的使用 140
6.5.3 重载、覆盖和虚函数机制的区别 142
6.6 纯虚函数与抽象类 143
6.6.1 纯虚函数 143
6.6.2 抽象类 145
6.6.3 多态数据结构 146
6.7 虚析构函数 151
6.8 习题6 152
第7章 模板 154
7.1 模板的概念 154
7.1.1 引入模板的意义 154
7.1.2 定义模板的方法 155
7.2 函数模板 155
7.2.1 函数模板的定义与实例化 155
7.2.2 函数模板的重载 157
7.3 类模板 158
7.3.1 类模板的定义 158
7.3.2 类模板的实例化 160
7.3.3 多参数类模板 161
7.4 模板与继承 162
7.4.1 类模板的继承与派生 162
7.4.2 类模板与继承的关系 164
7.5 习题7 164
第8章 输入/输出流 167
8.1 C++的流类库 167
8.1.1 流类库的基本结构 167
8.1.2 支持文件的流类体系 168
8.1.3 支持字符串的流类体系 169
8.2 重载流的插入与提取 169
8.2.1 重载流的插入操作 169
8.2.2 重载流的提取操作 170
8.2.3 重载流的完整实例 170
8.3 格式化输入与输出 172
8.3.1 使用ios类的成员函数 172
8.3.2 格式化输入/输出函数 174
8.4 文件操作 175
8.4.1 文件的打开与关闭 175
8.4.2 文本文件操作 176
8.4.3 二进制文件操作 178
8.4.4 随机文件操作 179
8.5 流的错误处理 180
8.6 习题8 181
第9章 异常处理 183
9.1 异常处理机制 183
9.1.1 异常处理概述 183
9.1.2 异常处理的实现 184
9.1.3 异常处理的过程 185
9.2 异常处理基本方法 185
9.2.1 异常处理示例 185
9.2.2 捕获所有的异常 186
9.2.3 异常处理中的构造与析构函数 187
9.2.4 异常说明的函数原型 188
9.3 习题9 189
第10章 面向对象程序设计方法 191
10.1 面向对象程序设计过程 191
10.1.1 面向对象的程序 191
10.1.2 面向对象的程序设计步骤 191
10.1.3 构造一个解题模型 192
10.1.4 标识对象 192
10.1.5 标识对象间的关系 193
10.1.6 建立对象的类描述 193
10.1.7 实现各个对象 194
10.2 实例讨论 194
10.2.1 构造一个解题模型 194
10.2.2 标识对象 195
10.2.3 标识对象间的关系 195
10.2.4 建立对象的类描述 196
10.2.5 实现各个对象 199
10.3 习题10 208
第11章 标准建模语言及其应用 209
11.1 标准建模语言概述 209
11.1.1 标准建模语言的发展 209
11.1.2 标准建模语言的主要特点 210
11.1.3 标准建模语言的内容 210
11.1.4 标准建模语言的应用领域 211
11.2 UML的模型、视图与系统架构建模 212
11.2.1 9种图及其功能 212
11.2.2 视图 213
11.2.3 UML中的模型元素 213
11.3 用例建模 215
11.3.1 用例模型 215
11.3.2 角色 216
11.3.3 用例 217
11.4 类和对象建模 219
11.4.1 类和对象 219
11.4.2 关系 220
11.4.3 约束与派生 226
11.4.4 包 227
11.4.5 模板 227
11.5 动态建模 228
11.5.1 消息 228
11.5.2 状态图 229
11.5.3 顺序图 232
11.5.4 合作图 234
11.5.5 活动图 235
11.6 物理体系结构建模 236
11.6.1 逻辑体系结构 236
11.6.2 物理体系结构 236
11.6.3 构件图 237
11.6.4 配置图 238
11.7 使用UML的过程 239
11.7.1 UML过程的基础 239
11.7.2 面向对象方法的一般过程 240
11.7.3 Rational的统一过程 241
11.8 习题11 244
第二部分 实验 249
实验1 面向对象程序设计的基础知识 249
实验2 C++语言初步 254
实验3 类与对象 270
实验4 继承与派生 279
实验5 多态性 286
实验6 模板 295
实验7 输入/输出流 300
实验8 异常处理 310
附录A 习题参考答案 314
参考文献 319