第1章 概述 1
1.1 分解和抽象 1
1.2 抽象 2
1.3 本书其他要旨 8
练习 8
第2章 理解Java中的对象 9
2.1 程序结构 9
2.2 包 10
2.3 对象和变量 11
2.4 类型检查 14
2.5 分派 18
2.6 类型 18
2.7 数据流输入/输出 20
2.8 Java应用程序 20
练习 22
3.1 抽象的好处 24
第3章 过程抽象 24
3.2 规格 25
3.3 过程抽象的规格 26
3.4 实现过程 29
3.5 设计过程抽象 31
3.6 小结 34
练习 35
第4章 异常 36
4.1 规格 37
4.2 Java异常机制 38
4.3 异常编程 42
4.4 设计问题 43
4.5 防御编程 46
4.6 小结 47
练习 47
第5章 数据抽象 48
5.1 数据抽象的规格 49
5.2 使用数据抽象 53
5.3 实现数据抽象 54
5.4 附加方法 59
5.5 用于理解实现的一些帮助 63
5.6 数据抽象实现的属性 69
5.7 推理数据抽象 71
5.8 设计问题 74
5.9 局部性和可更改性 76
5.10 小结 77
练习 77
第6章 迭代抽象 79
6.1 Java中的迭代 81
6.2 迭代器规格 82
6.3 使用迭代器 83
6.4 实现迭代器 85
6.5 发生器的表示式不变量和抽象函数 87
6.6 有序列表 87
6.7 设计问题 91
练习 92
6.8 小结 92
第7章 类型层次 94
7.1 赋值与分派 95
7.2 定义一个类型层次 97
7.3 用Java定义层次 97
7.4 一个简单的例子 98
7.5 异常类型 103
7.6 抽象类 103
7.7 接口 106
7.8 复合实现 107
7.9 子类型的含义 112
7.10 类型层次的讨论 117
7.11 小结 118
练习 119
第8章 多态抽象 121
8.1 多态数据抽象 121
8.2 使用多态数据抽象 123
8.3 重新访问相等性 124
8.4 附加方法 125
8.5 更多灵活性 127
8.6 多态过程 130
8.7 小结 130
练习 131
第9章 规格 133
9.1 规格和规格满足集 133
9.2 规格的某些标准 133
9.3 为什么要有规格 138
9.4 小结 140
练习 140
第10章 测试与调试 141
10.1 测试 142
10.2 测试过程 147
10.3 测试迭代器 147
10.4 测试数据抽象 148
10.6 测试一个类型层次 150
10.5 测试多态抽象 150
10.7 单元和综合测试 152
10.8 测试工具 153
10.9 调试 155
10.10 防御性编程 159
10.11 小结 160
练习 161
第11章 需求分析 163
11.1 软件生命周期 163
11.2 需求分析总结 165
11.3 股票跟踪系统 168
11.4 小结 171
练习 172
第12章 需求规格 173
12.1 数据模型 173
12.2 需求规格 180
12.3 股票跟踪系统的需求规格 183
12.4 搜索引擎的需求规格 187
12.5 小结 190
练习 191
第13章 设计 193
13.1 设计过程纵览 193
13.2 设计笔记本 195
13.3 交互式程序的结构 199
13.4 开始设计 202
13.5 对方法的讨论 208
13.6 继续进行设计 209
13.7 查询抽象 210
13.8 WordTable抽象 214
13.9 最后加工 216
13.10 FP和UI间的交互 216
13.11 模块依赖图表vs数据模型 218
13.12 回顾及讨论 219
13.14 小结 222
13.13 自顶向下的设计 222
练习 223
第14章 从设计到实现 224
14.1 评估一个设计 224
14.2 整理程序开发过程 232
14.3 小结 236
练习 237
第15章 设计模式 238
15.1 隐藏对象创建 239
15.2 聪明的对策 242
15.3 桥接器模式 248
15.4 过程也必须是对象 249
15.5 复合 252
15.6 间接的力量 258
15.7 发布/订阅 260
15.8 小结 263
练习 263
术语表 264