书籍详情
对象揭秘:Java、Eiffel和C++
作者:(澳)Ian Joyner著;鲍志云译
出版社:人民邮电出版社
出版时间:2003-01-01
ISBN:9787115111524
定价:¥52.00
购买这本书可以去
内容简介
毫无疑问,你现在正站在书店里,犹豫着有何充分理由要舍弃书架上充拆视野的其余关于C++、Java的书,以及(较少量的)Eiffel的书而购买本书。另一种可能性是你已经买了这本书,而正在考试是不是该读下去。本书共14章,分别从对象、类、模块,特性和接口,继承和泛型以及并行机制和垃圾收集等诸多方面,细致比较了C++语言和其他两种语言伯异同,分析了它们各自的优劣。由于本书是由作者最初分析C++语言缺陷的一篇论文扩展而来,所以,本书所收集的关于C++语言的缺陷,也可以理解为“避免这样使用C++”的建议,对于C++程序员颇有助益。
作者简介
IanJoyner是澳大利亚Macquarie大学微软研究院的对象技术组织的成员。他从1979年起,开始从事面对对象软件的实践和评估工作。1992年,Joyner将自己收集的有关C++缺陷的问题写成一篇名为C++??ACritiqueofC++andProgrammingandLanguageTrendsofthe1990s的论文发表在新闻组上,引起很大反响,促使作者增补、修改并相继推出了论文第二版和第三版;最终,作者将这篇文章扩充为本书。
目录
第1章 语言原则 1
1.1 程序设计 3
1.2 交流、抽象和精确性 6
1.3 表示法 8
1.4 工具集成 9
1.5 正确性 9
1.6 类型 14
1.7 灵活性、正确性和复用性 16
1.8 冗余和检查 19
1.9 封装和实现隐藏 21
1.10 安全性和代码品质的考虑 25
1.11 实现和部署的考虑 26
1.12 为什么要面向对象 27
1.13 关于程序设计语言的演化 27
1.14 数学的用途 28
1.15 遗产系统 28
第2章 实体和类型 31
2.1 从位到语义 31
2.2 基本结构:类 37
2.3 文法的用处 45
2.4 类和类型 48
2.5 结构(C++) 49
2.6 Typedef(C++) 49
2.7 全局环境 50
2.8 类的元数据 51
2.9 Obsolete (Eiffel) 54
2.10 不变式(Eiffel) 56
2.11 组件 58
第3章 模块与导入 63
3.1 命名空间 (C++) 64
3.2 群集 (Eiffel) 67
3.3 包 (Java) 69
3.4 头文件 (C++) 69
3.5 导入(Java) 73
3.6 ACE说明(Eiffel) 73
3.7 分离还是整合 74
第4章 成员和特性 77
4.1 基本结构 77
4.2 成员 (C++和Java) 88
4.3 类定义中的匿名参数 (C++) 88
4.4 缺省参数 (C++) 90
4.5 本地实体声明 (Java 和 C++) 92
4.6 内联(C++) 93
4.7 指针和引用 (C++) 98
4.8 声明和定义 (C++) 98
4.9 作用域 100
4.10 常量 100
4.11 静态(C++) 103
4.12 单次子程序 104
4.13 类变量和重定义 105
第5章 类型扩展:继承与虚拟 107
5.1 基本结构:继承和派生类 109
5.2 继承的本性 116
5.3 多重继承 121
5.4 虚类(C++) 129
5.5 嵌套类(Java和C++) 132
5.6 多态与继承 138
5.7 联合 139
5.8 枚举类型 143
5.9 名字重载 146
5.10 虚函数(C++) 152
5.11 纯虚函数(C++) 159
5.12 函数重载 (C++和Java) 162
5.13 虚拟与内联 168
第6章 类型扩展:泛型和模板(C++和Eiffel) 171
6.1 基本结构 173
6.2 C++语法 176
6.3 受束泛型 176
6.4 泛型和代码膨胀 177
6.5 泛型的替代形式 178
6.6 Java和泛型 182
6.7 一些关于泛型的理论 186
6.8 泛型和协变 189
第7章 接口和访问控制 191
7.1 基本结构 191
7.2 友元 (C++) 193
7.3 受控导出与友元 195
7.4 多接口 200
7.5 外部赋值(C++和Java) 201
7.6 导出控制和嵌套 202
7.7 可变常量(C++) 204
7.8 一般化 205
第8章 构造函数、析构函数和其他操作符 207
8.1 无名构造函数(C++) 207
8.2 缺省构造函数(C++和Java) 208
8.3 构造函数继承 208
8.4 扩展的初始化(Eiffel) 209
8.5 构造函数初始化(C++) 209
8.6 析构函数(C++) 211
8.7 Dispose(Eiffel) 211
8.8 =操作符(C++) 211
8.9 . 和 - (C++) 212
8.10 Delete和Delete [] (C++) 215
8.11 前缀和后缀运算符(C++) 216
8.12 || 和 && (C++) 217
8.13 运算符重载(C++和Eiffel) 218
8.14 隐式转换和重载(C++) 219
8.15 调用父类的特性 220
8.16 调用子类的特性 223
8.17 条件表达式 224
第9章 类型转换 225
9.1 类型转换(C++) 225
9.2 运行时类型识别和类型转换(C++) 228
9.3 新的类型转换(C++) 232
9.4 类型推导 232
9.5 Java和类型转换 233
9.6 签名变化(Eiffel) 233
第10章 编译时刻 247
10.1 全局分析 247
10.2 类型安全链接(C++) 249
10.3 类接口 251
第11章 运行时刻 253
11.1 并行——是时间了 253
11.2 垃圾收集 266
11.3 构造函数和临时变量(C++) 273
11.4 不良删除(C++) 274
11.5 切割(C++) 275
11.6 程序执行 276
11.7 动态链接 277
11.8 异常处理 279
11.9 链接错误(Java) 283
第12章 其他细节 285
12.1 注释 285
12.2 十六进制常量(Eiffel) 287
12.3 Double, double toil和trouble 288
12.4 类头部声明(C++) 290
第13章 项目、设计和其他因素 293
13.1 契约式设计 293
13.2 先验条件、类型、不变式 296
13.3 软件生命周期 297
13.4 CASE工具 301
13.5 复用性和交流 303
13.6 复用性和信任 304
13.7 复用性和兼容性 305
13.8 复用性和可移植性 307
13.9 复用性和尺寸 308
13.10 模式化编程 308
13.11 低级编码 309
13.12 知道正确的结构 310
13.13 效率与优化 310
13.14 标准化、稳定性和成熟度 312
13.15 复杂性 314
13.16 C++:面向对象语言的压倒多数选择 318
第14章 一般问题 321
14.1 指针 322
14.2 布尔类型 324
14.3 逻辑运算符和位运算符 326
14.4 数组 327
14.5 函数参数 331
14.6 void和void* 332
14.7 NULL 与0 338
14.8 char;signed和unsigned 339
14.9 void fn () 340
14.10 fn () 341
14.11 fn (void) 344
14.12 return 344
14.13 Switch语句 346
14.14 字符串中的元数据 347
14.15 ++, -- 348
14.16 赋值运算符 350
14.17 赋值表达式 352
14.18 宏定义 354
14.19 大小写敏感性 356
14.20 分号 359
14.21 注释 361
14.22 耦合因素(Cpaghe++i) 362
参考书目 365
术语表 375
索引 385
1.1 程序设计 3
1.2 交流、抽象和精确性 6
1.3 表示法 8
1.4 工具集成 9
1.5 正确性 9
1.6 类型 14
1.7 灵活性、正确性和复用性 16
1.8 冗余和检查 19
1.9 封装和实现隐藏 21
1.10 安全性和代码品质的考虑 25
1.11 实现和部署的考虑 26
1.12 为什么要面向对象 27
1.13 关于程序设计语言的演化 27
1.14 数学的用途 28
1.15 遗产系统 28
第2章 实体和类型 31
2.1 从位到语义 31
2.2 基本结构:类 37
2.3 文法的用处 45
2.4 类和类型 48
2.5 结构(C++) 49
2.6 Typedef(C++) 49
2.7 全局环境 50
2.8 类的元数据 51
2.9 Obsolete (Eiffel) 54
2.10 不变式(Eiffel) 56
2.11 组件 58
第3章 模块与导入 63
3.1 命名空间 (C++) 64
3.2 群集 (Eiffel) 67
3.3 包 (Java) 69
3.4 头文件 (C++) 69
3.5 导入(Java) 73
3.6 ACE说明(Eiffel) 73
3.7 分离还是整合 74
第4章 成员和特性 77
4.1 基本结构 77
4.2 成员 (C++和Java) 88
4.3 类定义中的匿名参数 (C++) 88
4.4 缺省参数 (C++) 90
4.5 本地实体声明 (Java 和 C++) 92
4.6 内联(C++) 93
4.7 指针和引用 (C++) 98
4.8 声明和定义 (C++) 98
4.9 作用域 100
4.10 常量 100
4.11 静态(C++) 103
4.12 单次子程序 104
4.13 类变量和重定义 105
第5章 类型扩展:继承与虚拟 107
5.1 基本结构:继承和派生类 109
5.2 继承的本性 116
5.3 多重继承 121
5.4 虚类(C++) 129
5.5 嵌套类(Java和C++) 132
5.6 多态与继承 138
5.7 联合 139
5.8 枚举类型 143
5.9 名字重载 146
5.10 虚函数(C++) 152
5.11 纯虚函数(C++) 159
5.12 函数重载 (C++和Java) 162
5.13 虚拟与内联 168
第6章 类型扩展:泛型和模板(C++和Eiffel) 171
6.1 基本结构 173
6.2 C++语法 176
6.3 受束泛型 176
6.4 泛型和代码膨胀 177
6.5 泛型的替代形式 178
6.6 Java和泛型 182
6.7 一些关于泛型的理论 186
6.8 泛型和协变 189
第7章 接口和访问控制 191
7.1 基本结构 191
7.2 友元 (C++) 193
7.3 受控导出与友元 195
7.4 多接口 200
7.5 外部赋值(C++和Java) 201
7.6 导出控制和嵌套 202
7.7 可变常量(C++) 204
7.8 一般化 205
第8章 构造函数、析构函数和其他操作符 207
8.1 无名构造函数(C++) 207
8.2 缺省构造函数(C++和Java) 208
8.3 构造函数继承 208
8.4 扩展的初始化(Eiffel) 209
8.5 构造函数初始化(C++) 209
8.6 析构函数(C++) 211
8.7 Dispose(Eiffel) 211
8.8 =操作符(C++) 211
8.9 . 和 - (C++) 212
8.10 Delete和Delete [] (C++) 215
8.11 前缀和后缀运算符(C++) 216
8.12 || 和 && (C++) 217
8.13 运算符重载(C++和Eiffel) 218
8.14 隐式转换和重载(C++) 219
8.15 调用父类的特性 220
8.16 调用子类的特性 223
8.17 条件表达式 224
第9章 类型转换 225
9.1 类型转换(C++) 225
9.2 运行时类型识别和类型转换(C++) 228
9.3 新的类型转换(C++) 232
9.4 类型推导 232
9.5 Java和类型转换 233
9.6 签名变化(Eiffel) 233
第10章 编译时刻 247
10.1 全局分析 247
10.2 类型安全链接(C++) 249
10.3 类接口 251
第11章 运行时刻 253
11.1 并行——是时间了 253
11.2 垃圾收集 266
11.3 构造函数和临时变量(C++) 273
11.4 不良删除(C++) 274
11.5 切割(C++) 275
11.6 程序执行 276
11.7 动态链接 277
11.8 异常处理 279
11.9 链接错误(Java) 283
第12章 其他细节 285
12.1 注释 285
12.2 十六进制常量(Eiffel) 287
12.3 Double, double toil和trouble 288
12.4 类头部声明(C++) 290
第13章 项目、设计和其他因素 293
13.1 契约式设计 293
13.2 先验条件、类型、不变式 296
13.3 软件生命周期 297
13.4 CASE工具 301
13.5 复用性和交流 303
13.6 复用性和信任 304
13.7 复用性和兼容性 305
13.8 复用性和可移植性 307
13.9 复用性和尺寸 308
13.10 模式化编程 308
13.11 低级编码 309
13.12 知道正确的结构 310
13.13 效率与优化 310
13.14 标准化、稳定性和成熟度 312
13.15 复杂性 314
13.16 C++:面向对象语言的压倒多数选择 318
第14章 一般问题 321
14.1 指针 322
14.2 布尔类型 324
14.3 逻辑运算符和位运算符 326
14.4 数组 327
14.5 函数参数 331
14.6 void和void* 332
14.7 NULL 与0 338
14.8 char;signed和unsigned 339
14.9 void fn () 340
14.10 fn () 341
14.11 fn (void) 344
14.12 return 344
14.13 Switch语句 346
14.14 字符串中的元数据 347
14.15 ++, -- 348
14.16 赋值运算符 350
14.17 赋值表达式 352
14.18 宏定义 354
14.19 大小写敏感性 356
14.20 分号 359
14.21 注释 361
14.22 耦合因素(Cpaghe++i) 362
参考书目 365
术语表 375
索引 385
猜您喜欢