理论篇 3
第1章 绪论 3
1.1 面向对象思想的由来 3
1.2 面向对象程序设计 4
1.3 面向对象程序设计语言 5
1.4 面向对象方法在大型程序设计中的应用 7
1.5 面向对象程序设计范型 8
1.6 面向对象方法的思维科学基础 8
1.6.1 建立模型 9
1.6.2 抽象思维的方法 10
练习题 10
2.1.1 对象的定义 12
2.1 对象 12
第2章 面向对象的基本概念 12
2.1.2 对象的划分 13
2.1.3 对象的状态 13
2.1.4 对象的特性 14
2.2 消息 14
2.2.1 什么是消息 14
2.2.2 公有消息和私有消息 15
2.2.3 特定于对象的消息 16
2.2.4 消息序列 16
2.3 类 17
2.3.1 类的定义 17
2.3.2 类与实例的关系 17
练习题 18
2.3.3 类的确定与描述 18
3.1 封装性 19
3.1.1 什么是封装 19
3.1.2 什么是协议 19
第3章 面向对象系统的特性 19
3.1.3 面向对象系统的封装性 20
3.2 继承性 20
3.2.1 继承的引入 20
3.2.2 继承的分类 21
3.2.3 继承与封装的关系 21
3.2.4 继承与委托的关系 22
3.2.5 类的层次 22
3.2.7 面向对象系统的继承性 23
3.2.6 单继承与多继承 23
3.3 多态性 24
3.3.1 重载的概念 24
3.3.2 虚函数的概念 24
3.3.3 抽象类的概念 25
3.3.4 面向对象系统的多态性 25
练习题 25
第4章 面向对象分析 26
4.1 概念模型 26
4.1.1 为什么要建立概念模型 26
4.1.2 概念间的关系 26
4.2.1 识别对象和类 27
4.2 用面向对象方法建立概念模型 27
4.1.3 信息系统的概念模型 27
4.2.2 对象间的通讯 28
4.2.3 对象关系图示——类图 29
4.2.4 类描述语言 32
练习题 34
第5章 面向对象设计技术 35
5.1 面向对象设计软件生命周期 35
5.1.1 需求分析阶段 36
5.1.2 设计阶段 38
5.1.3 演化阶段 40
5.1.4 维护阶段 41
5.2 面向对象设计的方法 41
练习题 42
第6章 面向对象的数据库概论 43
6.1 什么是面向对象的数据库 43
6.2 面向对象的数据库系统的基本性质 44
6.2.1 必备类性质 44
6.2.2 可选类性质 46
6.3 面向对象的数据模型 47
6.3.1 类 47
6.3.2 对象和对象标识 47
6.3.3 方法和消息传递 47
6.3.4 类层次结构和类组合结构 48
练习题 48
7.1.1 私有成员和公有成员 51
7.1 C++++类的构成 51
第7章 类的定义及其类对象的封装性 51
实践篇 51
7.1.2 类的构造 52
7.2 成员函数的定义 52
7.3 类与对象 54
7.3.1 类与对象的关系 54
7.3.2 类的使用 55
7.3.3 名字解析 55
7.4 构造函数与析构函数 56
7.4.1 构造函数 57
7.4.2 参数化的构造函数 59
7.4.3 缺省参数的构造函数 60
7.4.4 多构造函数 62
7.4.5 拷贝构造函数 63
7.4.6 动态存储 65
7.4.7 析构函数 69
7.5 静态成员 70
7.5.1 静态数据成员 70
7.5.2 静态成员函数 71
7.6 类对象作为成员 74
7.7 对象数组 77
7.8 C++++中的封装性 79
7.8.1 对象的封装 79
7.8.2 程序的模块化 82
7.9 Windows类库中的类框架 84
7.10 实例分析之一 88
练习题 92
第8章 友元 94
8.1 友元的说明和定义 94
8.2 友元函数 95
8.3 友元成员 99
8.4 友元类 100
8.5 友元举例 102
8.6 实例分析之二 105
练习题 106
第9章 重载 107
9.1 函数重载 107
9.1.1 构造函数重载 108
9.1.2 类成员函数重载 109
9.1.3 类以外的一般函数重载 111
9.2 运算符重载 112
9.2.1 用成员函数重载运算符 113
9.2.2 用友元重载运算符 116
9.2.3 ++++和——的重载 126
9.2.4 运算符[]和()的重载 128
9.2.5 new和delete的重载 131
9.2.6 赋值运算符的重载 133
9.3 类型转换 134
9.3.1 一般数据类型间的转换 134
9.3.2 通过构造函数进行类类型转换 137
9.3.3 类类型转换函数 139
9.3.4 类型转换举例 140
9.4 实例分析之三 143
练习题 145
第10章 引用 146
10.1 引用的概念 146
10.2 引用参数 148
10.3 引用返回值 153
10.4 引用举例 157
10.5 实例分析之四 161
练习题 163
第11章 继承与类的派生 165
11.1 派生类的概念 165
11.1.1 为什么使用继承 165
11.1.2 派生类的定义 166
11.1.3 派生类对基类成员的访问权 168
11.1.4 派生类的构造函数和析构函数 176
11.2 派生类对基类成员的继承 183
11.2.1 如何访问基类私有成员 183
11.2.2 通过访问声明调整访问域 191
11.3 多继承 194
11.3.1 多继承的概念 194
11.3.2 多继承的定义 194
11.3.3 多继承的构造函数与析构函数 197
11.3.4 虚基类 204
11.4 Windows应用程序中继承性的使用 211
11.4.1 ObjectWindows类库中的继承性 211
11.4.2 Windows应用程序的建立 213
11.5 实例分析之五 215
练习题 217
第12章 多态性与虚函数 219
12.1 多态性在C++++中的体现 219
12.1.1 编译时的多态性 219
12.1.2 运行时的多态性 221
12.2 虚函数 222
12.2.1 对象指针 222
12.2.2 为什么要引入虚函数 226
12.2.3 虚函数的定义及使用 228
12.2.4 虚函数举例 234
12.3.1 纯虚函数与抽象类 243
12.3 抽象类 243
12.3.2 纯虚函数多态性的体现 245
12.4 Windows应用程序中多态性的使用 251
12.5 实例分析之六 253
练习题 267
第13章 类属 269
13.1 类属 269
13.1.1 为什么要引入类属编程 269
13.1.2 类属表 272
13.1.3 从类属表中导出栈和队列 275
13.2 模板 276
13.2.1 模板的概念 276
13.2.2 函数模板与模板函数 277
13.2.3 类模板与模板类 281
13.3.1 栈 288
13.3 利用模板工具实现类属机制实例 288
13.3.2 队列 296
13.3.3 数组 305
13.3.4 稀疏矩阵 316
13.3.5 图 326
练习题 334
第14章 C++++的I/O流库 335
14.1 C++++流库结构 335
14.1.1 流库的概念 335
14.1.2 streambuf类 336
14.1.3 ios类 336
14.2.1 输入/输出类定义 338
14.2 一般的输入/输出 338
14.2.2 输入/输出运算符的使用 341
14.2.3 格式控制的输入/输出 343
14.3 用户自定义类型的输入/输出 351
14.3.1 重载输入运算符“》” 351
14.3.2 重载输出运算符“《” 353
14.3.3 重载运算符“《”,“》”应用举例 354
14.4 文件的输入/输出 357
14.4.1 文件的打开与关闭 357
14.4.2 文件的读写 359
14.5 实例分析之七 363
14.6 实例综述 383
练习题 391