第1章 计算机与程序设计 1
1.1 计算机的基本结构 1
1.1.1 计算机硬件的基本组成 1
1.1.2 计算机的工作过程 4
1.2 程序设计语言 5
1.3 面向过程程序设计 8
1.3.1 模块化 8
1.3.2 抽象 9
1.3.3 信息隐藏和局部化 10
1.3.4 模块独立 10
1.3.5 结构程序设计技术 11
1.4 小结 12
习题 13
第2章 面向对象方法学引论 14
2.1 面向对象方法学概述 14
2.1.1 面向对象方法学导论 14
2.1.2 面向对象方法概述 15
2.1.3 面向对象方法的主要优点 17
2.1.4 喷泉模型 20
2.2 面向对象的概念 21
2.2.1 对象 21
2.2.2 其他概念 24
2.3 面向对象建模 27
2.4 对象模型 29
2.4.1 类图的基本符号 29
2.4.2 表示关系的符号 31
2.5 动态模型 35
2.5.1 状态 35
2.5.2 事件 36
2.5.3 符号 36
2.5.4 例子 37
2.6 功能模型 38
2.6.1 用例图 38
2.6.2 用例建模 40
2.7 3种模型之间的关系 41
2.8 小结 42
习题 43
第3章 一个面向对象的C++程序实例 44
3.1 面向对象分析与设计 44
3.1.1 需求陈述 44
3.1.2 面向对象分析 44
3.1.3 面向对象设计 45
3.2 用C++实现 47
3.2.1 定义类 48
3.2.2 声明数据成员 49
3.2.3 声明和定义成员函数 50
3.2.4 完整的C++程序 51
3.2.5 运行C++程序 55
3.3 小结 56
习题 57
第4章 数据成员 58
4.1 数据类型 58
4.1.1 基本数据类型 58
4.1.2 复合数据类型 61
4.1.3 指针和引用 65
4.2 const数据成员 72
4.3 静态数据成员 73
4.4 动态数据成员与对象生存期 75
4.4.1 动态数据成员 75
4.4.2 对象生存期与数据成员作用域 77
4.5 小结 78
习题 79
第5章 成员函数 81
5.1 成员函数的概念 81
5.2 算法描述 81
5.2.1 算法的概念 81
5.2.2 算法的表示 82
5.3 成员函数的定义与调用 83
5.3.1 成员函数的定义 83
5.3.2 成员函数的调用 84
5.3.3 函数指针与回调函数 85
5.3.4 内联函数 88
5.4 运算符和表达式 89
5.4.1 运算符及运算符优先级 89
5.4.2 表达式 91
5.4.3 数据类型的转换 94
5.5 控制结构 96
5.5.1 顺序结构 96
5.5.2 选择结构(又称分支结构) 96
5.5.3 循环结构 101
5.5.4 递归 106
5.6 函数参数的传递机制 107
5.6.1 值调用 107
5.6.2 引用调用 109
5.7 函数的参数 110
5.7.1 函数参数的求值顺序 110
5.7.2 数组作为函数参数 111
5.7.3 带默认值的函数 113
5.8 静态成员函数 114
5.9 函数的重载 115
5.10 两种特殊函数 117
5.10.1 构造函数 117
5.10.2 析构函数 118
5.11 用计算机求解智力游戏 118
5.12 小结 119
习题 120
第6章 封装性 123
6.1 C++中的类与对象 123
6.1.1 定义类的语法 123
6.1.2 定义类的例子 125
6.1.3 声明和使用对象 127
6.2 封装的好处 129
6.3 对象成员 132
6.4 const对象和const成员 134
6.4.1 const对象和只读成员函数 134
6.4.2 const对象成员 135
6.5 对象数组 136
6.6 自引用指针(this) 138
6.7 友元 141
6.8 小结 144
习题 145
第7章 继承性 147
7.1 继承的好处 147
7.2 C++定义派生类的语法 150
7.2.1 定义派生类的语法 150
7.2.2 访问权修饰符 150
7.3 基类成员的访问属性 152
7.3.1 同名成员 152
7.3.2 静态成员 154
7.3.3 访问声明 156
7.4 派生类对象的初始化 159
7.5 多重继承 161
7.5.1 语法 161
7.5.2 同名引出的二义性 162
7.5.3 公共基类带来的二义性 163
7.5.4 虚基类 165
7.6 基类与派生类之间的转换 167
7.6.1 赋值兼容规则 168
7.6.2 赋值兼容规则应用举例 169
7.7 小结 171
习题 172
第8章 重载 175
8.1 重载的好处 175
8.2 对运算符重载的限制 178
8.3 运算符重载的语法 180
8.3.1 用成员函数重载运算符 180
8.3.2 用成员函数重载运算符之例 181
8.3.3 用友元函数重载运算符 184
8.3.4 用友元函数重载运算符之例 184
8.4 重载赋值运算符 187
8.4.1 指针悬挂问题 187
8.4.2 重载赋值运算符解决指针悬挂问题 189
8.5 重载++和--运算符 190
8.6 重载运算符的规则 191
8.7 类类型转换 193
8.7.1 用构造函数完成类类型转换 193
8.7.2 类类型转换函数 195
8.8 小结 197
习题 198
第9章 多态性 202
9.1 静态联编与动态联编 202
9.1.1 静态联编 202
9.1.2 动态联编 205
9.2 虚函数的声明与使用 206
9.2.1 声明虚函数 206
9.2.2 使用虚函数 207
9.2.3 动态联编的实现 209
9.3 虚函数应用实例之一 210
9.4 纯虚函数 212
9.5 虚函数应用实例之二 213
9.6 多态性带来的好处 218
9.7 小结 220
习题 221
第10章 I/O流 224
10.1 C++流库概述 224
10.2 预定义类型的输入/输出 226
10.2.1 istream流类 226
10.2.2 ostream流类 227
10.2.3 输入运算符 227
10.2.4 输出运算符 229
10.3 格式控制 230
10.3.1 用ios类成员函数控制格式 230
10.3.2 用控制符控制格式 233
10.4 自定义类型的输入/输出 236
10.4.1 重载输入运算符 236
10.4.2 重载输出运算符 237
10.5 文件的输入/输出 238
10.5.1 面向文件的流类 239
10.5.2 文件的读写 240
10.6 小结 244
习题 245
第11章 模板 247
11.1 从类属到模板 247
11.1.1 无约束类属 247
11.1.2 约束类属 248
11.2 函数模板与模板函数 249
11.2.1 概念 249
11.2.2 重载 250
11.3 类模板与模板类 252
11.3.1 定义类模板 252
11.3.2 使用类模板 253
11.3.3 类模板的派生 254
11.4 模板应用实例 255
11.4.1 用类模板实现类属链表 255
11.4.2 派生出集合类模板和集合类 258
11.5 小结 259
习题 260
第12章 异常处理 262
12.1 异常的概念 262
12.2 异常处理的基本思想 262
12.3 C++异常处理的实现 263
12.3.1 异常处理的语法 263
12.3.2 异常的实现步骤与简单实例 264
12.3.3 使用异常处理机制的规则 266
12.4 异常抛出与捕获的对应关系 266
12.5 标准程序库异常处理 271
12.6 小结 273
习题 273
第13章 面向对象程序设计方法的应用实例 274
13.1 需求 274
13.2 分析 274
13.2.1 定义问题域 274
13.2.2 分析并抽象出与监测有关的类 275
13.2.3 描述与监测有关的类之间的关系 276
13.2.4 分析与抽象出与显示有关的类 277
13.2.5 分析与抽象出与运行机制有关的类 277
13.2.6 综合出系统的初步对象模型 279
13.3 设计 280
13.3.1 系统构架 280
13.3.2 系统的详细对象模型 281
13.3.3 确定机制 282
13.3.4 定义与计时器相关类 282
13.3.5 定义管理监测类的容器类 283
13.3.6 综合出系统的运行机制 285
13.3.7 制定完善细化功能模块的顺序 285
13.3.8 定义与监测有关的类 286
13.4 小结 288
习题 289
第14章 基于Windows的面向对象语言——VC++ 290
14.1 Windows的编程模式 290
14.2 Microsoft基础类库(MFC)及应用程序框架 293
14.3 Microsoft基础类库的消息映射 301
14.4 VC++的文档-视图模型 301
14.5 VC++程序设计实例 303
14.5.1 面向对象分析 304
14.5.2 面向对象设计 306
14.6 小结 311
习题 311
第15章 基于Windows的面向对象语言——Java 312
15.1 Java的特点 312
15.2 Java简介 315
15.2.1 Java中类的定义 315
15.2.2 Java类中的数据与方法 315
15.2.3 Java中的继承性 317
15.2.4 Java中的多态性 317
15.3 Java与C++的区别 318
15.4 JVM的概念与规范 320
15.4.1 JVM的概念 320
15.4.2 JVM的规范 320
15.5 Java的应用 321
15.6 小结 327
习题 327
附录A 常用库函数一览表 328
附录B ASCII码表注解 330
附录C 键盘常用键对应ASCII码 331
附录D ASCII基表 333
附录E ASCII扩展表 334
参考文献 335