第0章 概述 1
0.1 从C到C++ 1
0.2 使用C++开发大型项目 2
0.3 重用 9
0.4 质量 10
0.5 软件开发工具 12
0.6 小结 12
第一部分 基础知识 15
第1章 预备知识 15
1.1 多文件C++程序 15
1.2 typedef声明 22
1.3 断言语句 22
1.4 编程风格 23
1.5 迭代器 28
1.6 逻辑设计表示法 34
1.7 继承与分层 40
1.8 最小化 41
1.9 小结 42
第2章 基本规则 44
2.1 概述 44
2.2 成员数据访问 45
2.3 全局名字空间 48
2.4 包含卫哨 56
2.5 冗余包含卫哨 58
2.6 文档 61
2.7 标识符命名规则 63
2.8 小结 64
第二部分 物理设计概念 69
第3章 组件 69
3.1 组件与类 69
3.2 物理设计规则 75
3.3 依赖关系 83
3.4 隐含依赖 86
3.5 提取实际的依赖 91
3.6 友元关系 93
3.7 小结 99
第4章 物理层 101
4.1 软件测试的一个比喻 101
4.2 一个复杂的子系统 102
4.3 测试“好”接口的难度 105
4.4 可测性设计 107
4.5 隔离测试 109
4.6 非循环物理依赖 111
4.7 层次编号 112
4.8 分层和增量测试 117
4.9 测试一个复杂子系统 121
4.10 可测性与测试 122
4.11 循环物理依赖 123
4.12 累积组件依赖 124
4.13 物理设计质量 128
4.14 小结 132
第5章 层次化 134
5.1 循环物理依赖的一些来源 134
5.2 升级 142
5.3 降级 149
5.4 不透明指针 158
5.5 哑数据 164
5.6 冗余 171
5.7 回调方法 175
5.8 管理者类 184
5.9 分解 187
5.10 升级封装 199
5.11 小结 208
第6章 隔离 209
6.1 从封装到隔离 210
6.2 C++结构和编译时耦合 214
6.3 局部隔离技术 223
6.4 整体的隔离技术 249
6.5 过程接口 275
6.6 隔离或不隔离 288
6.7 小结 304
第7章 包 306
7.1 从组件到包 306
7.2 注册包前缀 312
7.3 包层次化 319
7.4 包隔离 323
7.5 包群 325
7.6 发布过程 328
7.7 main程序 335
7.8 启动 341
7.9 小结 351
第三部分 逻辑设计问题 355
第8章 组件架构 355
8.1 抽象和组件 355
8.2 组件接口设计 356
8.3 封装程度 359
8.4 辅助实现类 368
8.5 小结 372
第9章 函数设计 374
9.1 函数接口说明 374
9.2 在接口中使用的基本类型 406
9.3 特殊情况函数 415
9.4 小结 421
第10章 对象实现 425
10.1 成员数据 425
10.2 函数定义 430
10.3 内存管理 439
10.4 在大型项目中使用C++模板 466
10.5 小结 477
附录A 协议层设计模式 480
附录B 实现一个与ANSI C兼容的C++接口 501
附录C 一个依赖提取器包/分析器包 509
附录D 快速参考 531
参考文献 546