前言 1
译者序 1
第0章 引言 1
0.1 从C到C++ 1
目 录 1
0.2用C++开发大型项目 2
0.3 重用 11
0.4质量 11
0.5软件开发工具 13
0.6小结 13
第1章预备知识 17
1.1 多文件C++程序 17
第1部分基础知识 17
1.2 typedef(类型别名)声明 24
1.3 assert语句 25
1.4有关风格的一些问题 27
1.5迭代器 33
1.6逻辑设计符号 38
1.7继承与分层 46
1.8最小化 47
1.9 小结 48
第2章基本规则 50
2.1概述 50
2.2成员数据访问 51
2.3全局名称空间 55
2.4包含卫哨 63
2.5冗余包含卫哨 65
2.6文档 70
2.7标识符命名规则 71
2.8小结 73
第2部分物理设计概念 77
第3章组件 77
3.1 组件与类 77
3.2物理设计规则 84
3.3依赖(DependsOn)关系 93
3.4隐含依赖 97
3.5提取实际的依赖 103
3.6友元关系 104
3.7小结 112
4.1软件测试的一个比喻 113
第4章物理层次结构 113
4.2一个复杂的子系统 114
4.3测试“好”接口时的困难 118
4.4易测试性设计 120
4.5隔离测试 122
4.6非循环物理依赖 124
4.7层次号 126
4.8分层次测试和增量式测试 131
4.9测试一个复杂子系统 136
4.10易测试性和测试 137
4.11循环物理依赖 138
4.12累积组件依赖 139
4.13物理设计的质量 144
4.14小结 149
第5章层次化 151
5.1 导致循环物理依赖的一些原因 151
5.2升级 160
5.3降级 170
5.4不透明指针 183
5.5 哑数据 190
5.6冗余 199
5.7 回调 203
5.8管理类 214
5.9 分解 217
5.10升级封装 232
5.11 小结 242
第6章绝缘 243
6.1从封装到绝缘 244
6.2 C++结构和编译时耦合 249
6.3部分绝缘技术 260
6.4整体的绝缘技术 289
6.5过程接口 319
6.6绝缘或不绝缘 332
6.7 小结 349
第7章包 352
7.1从组件到包 353
7.2注册包前缀 359
7.3包层次化 366
7.4包绝缘 373
7.5包群(package groups) 375
7.6发布过程 379
7.7 main程序 387
7.8启动(start-up) 394
7.9小结 405
第3部分逻辑设计问题 411
第8章构建一个组件 411
8.1抽象和组件 411
8.2组件接口设计 412
8.3封装程度 416
8.4辅助实现类 426
8.5 小结 431
第9章设计一个函数 432
9.1 函数接口规格说明 432
9.2在接口中使用的基本类型 470
9.3特殊情况函数 479
9.4小结 486
第1 0章实现一个对象 489
10.1数据成员 490
10.2函数定义 496
10.3内存管理 505
10.4在大型工程中使用C++模板 535
10.5 小结 547
附录A协议层次结构设计模式 550
附录B 实现一个与ANSIC兼容的C++接口 574
附录C一个依赖提取器/分析器包 583
附录D快速参考 607
参考文献 623