第一章 计算机与程序设计 1
1.1 计算机的基本结构 1
1.1.1 计算机硬件的基本组成 1
1.1.2 计算机的工作过程 2
1.2 程序设计语言 4
1.3 面向过程程序设计 6
1.3.1 模块化 6
1.3.2 抽象 7
1.3.3 信息隐藏和局部化 8
1.3.4 模块独立 8
1.3.5 结构程序设计技术 9
1.4 面向对象程序设计 10
1.4.1 面向对象方法概述 11
1.4.2 面向对象方法的主要优点 13
1.5 小结 16
习题一 17
第二章 面向对象方法学导论 18
2.1 对象 18
2.1.1 对象的形象表示 18
2.1.2 对象的定义 19
2.1.3 对象的特点 20
2.2 其他面向对象的概念 20
2.3 面向对象建模 24
2.4 对象模型 25
2.4.1 表示类— —对象的图形符号 26
2.4.2 表示结构的图形符号 27
2.4.3 例子 29
2.5 面向对象分析 30
2.5.1 确定类— —对象 31
2.5.2 确定关联 32
2.5.3 确定属性 32
2.5.4 识别继承关系 33
2.5.5 确定服务 33
2.6 面向对象设计 33
2.6.1 模块化 34
2.6.2 抽象 34
2.6.3 信息隐藏 34
2.6.4 弱耦合 34
2.6.6 可重用 35
2.6.5 强内聚 35
2.7 面向对象实现 36
2.8 小结 36
习题二 37
第三章 一个面向对象的C++程序实例 39
3.1 面向对象分析与设计 39
3.1.1 需求陈述 39
3.1.2 面向对象分析 39
3.1.3 面向对象设计 40
3.2 用C++语言实现 42
3.2.1 定义类 43
3.2.2 说明数据成员 43
3.2.3 说明和定义成员函数 45
3.2.4 完整的C++程序 46
3.3 小结 49
习题三 50
第四章 数据成员 51
4.1 数据类型 51
4.1.1 基本数据类型 51
4.1.2 复合数据类型 54
4.1.3 指针和引用 58
4.2 const数据成员 60
4.3 静态数据成员 62
4.4 动态数据成员与对象生存期 63
4.4.1 动态数据成员 63
4.4.2 对象生存期与数据成员作用域 65
4.5 小结 65
习题四 66
第五章 成员函数 68
5.1 成员函数的概念 68
5.2 成员函数的定义与调用 68
5.2.1 成员函数的定义 68
5.2.2 成员函数的调用 69
5.2.3 内联函数 70
5.3 运算符和表达式 71
5.3.1 运算符及运算符优先级 71
5.3.2 表达式 73
5.3.3 数据类型的转换 76
5.4 控制结构 77
5.4.1 顺序结构 77
5.4.2 选择结构(又称分支结构) 77
5.4.3 循环结构 80
5.5 函数参数的传递机制 83
5.5.1 传值调用 83
5.5.2 引用调用 85
5.6 函数的参数 86
5.6.1 函数参数的求值顺序 86
5.6.2 数组作为函数参数 86
5.6.3 带缺省值的函数 87
5.7 静态成员函数 88
5.8 函数的重载 89
5.9 两种特殊函数 91
5.9.1 构造函数 91
5.9.2 析构函数 91
5.10 小结 92
习题五 93
第六章 封装性 96
6.1 C++类与对象 96
6.1.1 定义类的语法 96
6.1.2 定义类的例子 98
6.1.3 说明和使用对象 99
6.2 封装的好处 100
6.3 对象成员 103
6.4 const对象和const成员 104
6.4.1 const对象和只读成员函数 104
6.4.2 const对象成员 105
6.5 对象数组 106
6.6 自引用指针this 108
6.7 友元 110
6.8 小结 112
习题六 113
第七章 继承性 115
7.1 继承的好处 115
7.2 C++定义派生类的语法 118
7.2.1 定义派生类的语法 118
7.2.2 访问权修饰符 118
7.3 基类成员的访问属性 119
7.3.1 同名成员 120
7.3.2 静态成员 120
7.3.3 访问声明 121
7.4 派生类对象的初始化 123
7.5.1 语法 125
7.5.2 同名引出的二义性 125
7.5 多重继承 125
7.5.3 公共基类带来的二义性 126
7.5.4 多重继承应用举例 128
7.5.5 虚基类 133
7.6 基类与派生类之间的转换 135
7.6.1 赋值兼容规则 136
7.6.2 赋值兼容规则应用举例 137
7.7 小结 139
习题七 140
第八章 重载 143
8.1 重载的好处 143
8.2 对运算符重载的限制 146
8.3 运算符重载的语法 147
8.3.1 用成员函数重载运算符 148
8.3.2 用成员函数重载运算符之例 149
8.3.3 用友员函数重载运算符 151
8.3.4 用友员函数重载运算符之例 152
8.4 重载赋值运算符 154
8.4.1 指针悬挂问题 154
8.4.2 重载赋值运算符解决指针悬挂问题 155
8.5 重载++和--运算符 156
8.6 重载运算符的规则 157
8.7 类类型的转换 159
8.7.1 用构造函数完成类类型转换 159
8.7.2 类类型转换函数 160
8.8 小结 162
习题八 163
9.1.1 静态联编 167
9.1 静态联编与动态联编 167
第九章 多态性 167
9.1.2 动态联编 169
9.2 虚函数的声明与使用 171
9.2.1 声明虚函数 171
9.2.2 使用虚函数 171
9.2.2 动态联遍的实现 173
9.3 虚函数应用实例之一 174
9.4 纯虚函数 176
9.5 虚函数应用实例之二 177
9.6 多态性带来的好处 182
9.7 小结 183
习题九 184
10.1 C++流库概述 187
第十章 I/O流 187
10.2 预定义类型的输入/输出 189
10.2.1 istream流类 189
10.2.2 ostream流类 190
10.2.3 输入运算符 190
10.2.4 输出运算符 192
10.3 格式控制 193
10.3.1 用ios类成员函数控制格式 193
10.3.2 用控制符控制格式 196
10.4 自定义类型的输入/输出 198
10.4.1 重载输入运算符 198
10.4.2 重载输出运算符 199
10.5 文件的输入/输出 200
10.5.1 面向文件的流 201
10.5.2 文件的读写 202
10.6 小结 204
习题十 205
第十一章 模板 207
11.1 从类属到模板 207
11.2 函数模板与模板函数 208
11.2.1 概念 208
11.2.2 重载 210
11.3 类模板与模板类 211
11.3.1 定义类模板 211
11.3.2 使用类模板 212
11.3.3 类模板的派生 213
11.4.1 用类模板实现类属链表 214
11.4 模板应用实例 214
11.4.2 派生出集合类模板和集合类 216
11.5 小结 218
习题十一 219
第十二章 基于Windows的面向对象语言(一)——VC++ 220
12.1 Windows的编程模式 220
12.2 Microsoft基本类库MFC及应用程序框架 223
12.3 Microsoft基本类库的消息映射 232
12.4 VC++的文档——视图模型 232
12.5 VC++程序设计实例 235
12.5.1 面向对象分析 235
12.5.2 面向对象设计 237
习题十二 242
12.6 小结 242
第十三章 基于Windows的面向对象语言(二)——Java 243
13.1 Java语言的特点 243
13.2 Java语言简介 245
13.2.1 Java中类的定义 246
13.2.2 Java类中的数据与方法 246
13.2.3 Java中的继承性 247
13.2.4 Java中的多态性 248
13.3 Java语言与C++语言的不同 249
13.4 JVM的概念与规范 250
13.5 Java语言的应用 251
13.6 小结 257
习题十三 257
主要参考文献 258