第一部分 面向对象技术 1
第一章 面向对象的基本概念和特征 1
1.1 引言 1
1.2 抽象数据类型 1
目录 1
1.3 对象 2
1.4 消息和方法 3
1.5 类和类层次 4
1.6 继承性 7
1.7 封装性 9
1.8 多态性与动态聚束 10
第二章 面向对象分析 12
2.1 面向对象的问题求解 12
2.3 处理复杂问题的基本原则 13
2.2 系统分析的挑战 13
2.4 面向对象分析模型 15
2.4.1 确定类—&—对象 15
2.4.2 确定结构 17
2.4.3 定义主题 18
2.4.4 定义属性 19
2.4.5 定义方法 21
第三章 面向对象设计 24
3.1 面向对象设计模型 24
3.1.1 问题域 24
3.1.2 人机交互 25
3.1.3 任务管理 25
3.2 面向对象设计范式 26
3.1.4 数据管理 26
3.3.1 过程和数据 28
3.3.2 实体与实体间的关系 28
3.3 划分软件为类 28
3.3.3 数据模型 29
3.3.4 增加实体功能 29
3.4 设计类的准则 31
3.5 设计类层次 31
3.5.1 子类作为一种设计方法 31
3.5.2 子类用于特化 32
3.5.3 子类用于泛化 32
3.5.4 子类用于组合 33
3.5.5 子类用于实现 33
3.6.1 表示法的连续性 34
3.6 面向对象实现 34
3.6.2 面向对象语言 35
3.6.3 程序设计语言的影响 35
第二部分 C++语言 37
第四章 C++概述 37
4.1 C++的发展历史 37
4.2 C++对C的非面向对象扩充 38
4.3 C++对C的面向对象扩充 41
第五章 C++语言基础 44
5.1 C++的一些基本原则 44
5.2 注释 46
5.3 常量、类型和声明 46
5.3.1 常量 46
5.3.2 数据类型 47
5.3.3 声明 48
5.4 C++的运算符 49
5.5 引用 52
5.6 new和delete 53
5.7 指针 55
5.8 const说明符 62
5.9 sizeof(char) 64
5.10 结构和联合 64
5.11 匿名联合 64
5.12 枚举类型 65
5.13 C++的函数 65
5.13.1 main() 65
5.13.2 函数原型 66
5.13.4 内联函数 67
5.13.3 函数头 67
5.13.5 缺省参数 69
5.13.6 参数个数不定的函数 71
5.13.7 指向函数的指针和类属 71
5.14 重载 77
5.14.1 函数名的重载 77
5.14.2 重载函数的使用声明 78
5.14.3 运算符的重载 79
5.14.4 关于运算符重载的一些问题 83
5.14.5 单目运算符 84
5.15 C++系统的文件和物理组织 85
5.14.10 函数调用运算符 85
5.14.9 下标运算符 85
5.14.8 成员存取运算符 85
5.14.7 赋值运算符 85
5.14.6 双目运算符 85
第六章 类和方法 87
6.1 C++的类简介 87
6.1.1 类的定义 87
6.1.2 对象 90
6.1.3 数据成员和实例变量 90
6.1.4 隐式对象 90
6.1.5 类的作用域 91
6.1.6 存取说明符 91
6.2 方法 93
6.2.1 方法的定义 93
6.2.2 运算符方法 94
6.2.3 内联方法 95
6.3 构造函数和析构函数 96
6.3.1 构造函数 96
10.5 过程的封装 1 97
6.3.2 拷贝构造函数 98
6.3.3 构造函数和成员对象 99
6.3.4 析构函数 100
6.4 赋值运算符 101
6.5 转换 101
6.6 临时对象和“隐藏”方法调用 103
6.7 静态成员 103
6.8 动态对象以及new和delete的重新定义 105
6.9 对象数组和常量对象 106
6.10 友元 107
7.1 派生类 111
第七章 派生类和继承 111
7.2 类的保护部分 115
7.3 类的转换 117
7.4 父类带有构造函数的派生类 118
7.5 多重继承和虚拟父类 120
7.6 一个派生类的例子 129
第八章 多态性和虚拟函数 137
8.1 多态性 137
8.1.1 举例:动物园的管理 137
8.1.2 多态性的引入 145
8.1.3 增加一种新的动物 150
8.2 虚拟函数 151
8.3 抽象父类 152
8.4 使用多态性的一个例子——有限状态机 153
第九章 C++的I/O类库 161
9.1 为什么C++要有自己的I/O系统 161
9.2 C++的流 162
9.2.1 C++的预定义流 162
9.2.2 流的插入 162
9.2.3 流的提取 163
9.3 C++的流类 164
9.4 创建自己的插入/提取操作符 164
9.4.1 重载插入符 164
9.4.2 重载提取符 167
9.5.1 用iso的成员函数实现格式化的输入/输出 169
9.5 格式化I/O 169
9.5.2 使用控制器函数 173
9.5.3 建立自己的控制器函数 174
9.6 文件I/O 179
9.6.1 打开、关闭文件 179
9.6.2 读/写文本文件 181
9.6.3 二进制文件I/O 182
9.6.4 检测EOF 185
9.6.5 随机访问 185
第十章 战略 188
10.1 设计 188
10.4 把类作为过程 189
10.3 建立具有创造性的类 189
10.2 建立类层次 189
10.6 组成 198
10.7 传播 199
10.8 隐含 199
10.9 修改 200
第十一章 战术 201
11.1 异常处理 201
11.2 单实例对象 201
11.3 类中静态成员的初始化 203
11.4 裁制动态内存管理程序 205
11.5 特定类的new和delete 208
11.6 对象和文件 210
12.1.1 包容类 212
12.1 表 212
第三部分 常用算法 212
第十二章 基本数据结构 212
12.1.2 单向链表 214
12.1.3 双向链表 216
12.1.4 堆栈和队列 223
12.1.5 工作表类 228
12.1.6 综合表类 231
12.2 数组 235
12.2.1 数组类 235
12.2.2 有界数组类 238
12.2.3 动态数组 239
12.2.4 类属数组 241
12.3.2 实现 243
12.3 二叉树 243
12.3.1 定义 243
12.3.3 类属二叉树 247
12.4 哈希表 250
12.4.1 定义 250
12.4.2 桶的数目 251
12.4.3 选择哈希函数 251
12.4.4 接口实现 252
12.4.5 扩展接口 254
12.4.6 类属哈希表 255
12.4.7 建立哈希表 256
13.2 定义位集合 258
13.3 位集合类 258
13.1 什么是集合 258
第十三章 集合 258
13.4 字符集合类 266
13.5 位格类 268
第十四章 动态串类 270
14.1 类定义 270
14.2 异常处理 272
14.3 方法 273
第四部分 实例研究 283
第十五章 离散事件仿真系统 283
15.1 系统分析 283
15.2 高层设计 284
15.3 低层设计 290
15.4 系统实现 291
15.5 系统的维护性 309
第十六章 信息管理系统 316
16.1 框架结构 316
16.2 设计框架结构的方法 317
16.2.1 类 317
16.2.2 单元(实体) 318
16.2.3 槽和继承性 318
16.3 系统分析与设计 319
16.4 系统实现 321
第十七章 面向对象的窗口系统 358
17.1 窗口的定义 358
17.2 显示器 359
17.3 类Screen 359
17.4 类Window 369
参考文献 395