目录
第一部分 面向对象基础
第1章 对象和类 ………………………………1
1.1 对象和类 …………………………………1
1.2 创建对象 …………………………………1
1.3 调用方法 …………………………………2
1.4 参数 ………………………………………3
1.5 数据类型 …………………………………4
1.6 多个实例 …………………………………5
1.7 状态 ………………………………………5
1.8 对象中的字段和方法 ……………………6
1.9 对象交互 …………………………………7
1.10 源代码……………………………………8
1.11 另一个例子………………………………9
1.12 返回值……………………………………9
1.13 对象作为参数进行传递 ………………10
小结 ……………………………………………11
关键术语 ………………………………………11
第2章 理解类的定义 ………………………13
2.1 售票机……………………………………13
2.2 检查类的定义……………………………14
2.3 字段、构造器和方法……………………16
2.3.1 字段 …………………………………17
2.3.2 构造器 ………………………………19
2.4 通过参数传递数据………………………20
2.5 赋值………………………………………21
2.6 访问器方法………………………………22
2.7 修改器方法………………………………24
2.8 在方法中打印……………………………25
2.9 简易型售票机的总结……………………27
2.10 对售票机设计的探讨 …………………28
2.11 做选择:条件语句 ……………………28
2.12 高级条件语句的例子 …………………31
2.13 局部变量 ………………………………32
2.14 字段、参数和局部变量 ………………33
2.15 改进型售票机的总结 …………………34
2.16 自我复习练习题 ………………………34
2.17 回顾一个熟悉的例子 …………………36
小结 ……………………………………………39
关键术语 ………………………………………39
第3章 对象交互 ……………………………42
3.1 时钟的例子………………………………42
3.2 抽象与模块化……………………………42
3.3 软件中的抽象……………………………43
3.4 在时钟例子里的模块化…………………43
3.5 实现时钟显示器…………………………44
3.6 类图与对象图……………………………45
3.7 基本类型和对象类型……………………47
3.8 ClockDisplay的源代码 ………………48
3.8.1 NumberDisplay类 …………………48
3.8.2 字符串拼接 …………………………49
3.8.3 取模运算符 …………………………50
3.8.4 ClockDisplay类 …………………51
3.9 对象创建对象……………………………54
3.10 多个构造器 ……………………………55
3.11 方法调用 ………………………………55
3.11.1 内部方法调用………………………55
3.11.2 外部方法调用………………………56
3.11.3 时钟显示器的总结…………………57
3.12 另一个对象交互的例子 ………………57
3.12.1 邮件系统的例子……………………58
3.12.2 this关键字 ………………………59
3.13 使用调试器 ……………………………60
3.13.1 设置断点……………………………60
3.13.2 单步执行……………………………61
3.13.3 单步进入方法………………………62
3.14 方法调用回顾 …………………………63
小结 ……………………………………………63
关键术语 ………………………………………64
第4章 对象集合 ………………………………65
4.1 在可变容量的容器中存放对象…………65
4.2 个人记事本………………………………65
4.3 初涉类库…………………………………66
4.4 容器的对象结构…………………………67
4.5 泛型类……………………………………69
4.6 容器内的编号……………………………69
4.7 从容器中删除对象………………………70
4.8 处理整个容器……………………………71
4.8.1 for-each循环………………………72
4.8.2 while循环 …………………………73
4.8.3 遍历容器 ……………………………76
4.8.4 索引存取与迭代器的比较 …………77
4.9 记事本例子的总结………………………77
4.10 另一个例子:拍卖系统 ………………78
4.10.1 Lot类 ………………………………78
4.10.2 Auction类…………………………79
4.10.3 匿名对象……………………………81
4.10.4 使用容器……………………………82
4.11 可变容量容器的总结 …………………84
4.12 固定容量的容器 ………………………84
4.12.1 日志文件分析器……………………84
4.12.2 声明数组变量………………………86
4.12.3 创建数组对象………………………87
4.12.4 使用数组对象………………………88
4.12.5 分析日志文件………………………88
4.12.6 for循环 ……………………………89
小结 ……………………………………………93
关键术语 ………………………………………93
第5章 高级行为 ……………………………95
5.1 类库的文档………………………………95
5.2 TechSupport系统 ………………………96
5.2.1 研究TechSupport系统………………96
5.2.2 阅读代码 ……………………………97
5.3 阅读类文档 ……………………………101
5.3.1 接口与实现 ………………………102
5.3.2 使用类库中的类的方法 …………102
5.3.3 检查字符串是否相等 ……………104
5.4 增加随机行为…………………………104
5.4.1 Random类 …………………………105
5.4.2 在有限范围内产生随机数 ………105
5.4.3 产生随机的回答 …………………106
5.4.4 阅读参数化的类的文档 …………108
5.5 包和导入 ………………………………109
5.6 使用映射表示关联 ……………………109
5.6.1 映射的概念…………………………110
5.6.2 使用HashMap………………………110
5.6.3 在TechSupport系统中使用映射 …111
5.7 使用集合 ………………………………113
5.8 分割字符串 ……………………………114
5.9 完成TechSupport系统 …………………115
5.10 编写类文档……………………………116
5.10.1 在BlueJ中使用javadoc …………117
5.10.2 类文档的组成 ……………………117
5.11 公共与私有……………………………118
5.11.1 信息隐藏 …………………………119
5.11.2 私有方法和公共字段 ……………119
5.12 通过接口研究类………………………120
5.13 类变量和常量…………………………122
5.13.1 static关键字 ……………………122
5.13.2 常量 ………………………………124
小结 …………………………………………124
关键术语 ……………………………………125
第6章 使对象正常运行 ……………………126
6.1 引言 ……………………………………126
6.2 测试和调试 ……………………………126
6.3 用BlueJ进行单元测试 …………………127
6.3.1 使用检查器…………………………130
6.3.2 正向测试和反向测试………………132
6.4 测试自动化 ……………………………132
6.4.1 回归测试……………………………132
6.4.2 自动检查测试结果…………………134
6.4.3 记录测试……………………………136
6.4.4 夹具…………………………………138
6.5 模块化和接口 …………………………139
6.6 调试场景 ………………………………140
6.7 注释与风格 ……………………………141
6.8 人工走查 ………………………………141
6.8.1 高层次的走查………………………142
6.8.2 用走查来检查状态…………………143
6.8.3 口头走查……………………………145
6.9 打印语句 ………………………………145
6.10 选择测试策略…………………………148
6.11 调试……………………………………148
6.12 在实战中使用这些技术………………149
小结 …………………………………………149
关键术语 ……………………………………149
第7章 类的设计 ……………………………150
7.1 引言 ……………………………………150
7.2 world-of-zuul游戏的例子………………151
7.3 耦合和内聚的介绍 ……………………152
7.4 代码重复 ………………………………153
7.5 扩展 ……………………………………157
7.5.1 任务…………………………………157
7.5.2 找到相关的源代码…………………157
7.6 耦合 ……………………………………158
7.7 责任驱动的设计 ………………………162
7.8 改动局部化 ……………………………164
7.9 隐性耦合 ………………………………165
7.10 预见性…………………………………167
7.11 内聚……………………………………168
7.11.1 方法的内聚 ………………………168
7.11.2 类的内聚 …………………………169
7.11.3 内聚对于可读性的好处 …………170
7.11.4 内聚对于重用的好处 ……………170
7.12 重构……………………………………171
7.12.1 重构与测试 ………………………171
7.12.2 重构的例子 ………………………171
7.13 语言无关的重构………………………174
7.13.1 枚举类型 …………………………174
7.13.2 命令界面的进一步解耦 …………175
7.14 设计原则………………………………177
7.15 脱离BlueJ执行程序 …………………178
7.15.1 类方法 ……………………………178
7.15.2 main方法 …………………………178
7.15.3 类方法的限制 ……………………179
小结 …………………………………………179
关键术语 ……………………………………179
第二部分 应用程序结构
第8章 通过继承改进结构 …………………181
8.1 DoME例子………………………………181
8.1.1 DoME的类与对象 …………………182
8.1.2 DoME源代码 ………………………184
8.1.3 DoME程序的讨论 …………………189
8.2 使用继承 ………………………………189
8.3 继承层次 ………………………………191
8.4 Java的继承 ……………………………191
8.4.1 继承与访问权限……………………192
8.4.2 继承与初始化………………………192
8.5 DoME:增加另一种媒体类型…………194
8.6 (迄今为止)继承的优点 ……………196
8.7 子类型 …………………………………196
8.7.1 子类与子类型………………………197
8.7.2 子类型与赋值………………………198
8.7.3 子类型与参数传递…………………199
8.7.4 多态变量……………………………199
8.7.5 换型…………………………………200
8.8 Object类 ………………………………201
8.9 自动包装与包裹类 ……………………202
8.10 容器层次………………………………202
小结 …………………………………………202
关键术语 ……………………………………203
第9章 继承深入 ……………………………204
9.1 问题:DoME的打印方法………………204
9.2 静态类型和动态类型 …………………205
9.3 覆写 ……………………………………208
9.4 动态查找方法 …………………………209
9.5 方法中的超类调用 ……………………211
9.6 方法多态性 ……………………………212
9.7 Object的方法:toString …………212
9.8 受保护的访问 …………………………214
9.9 有覆写的继承的另一个例子 …………216
小结 …………………………………………218
关键术语 ……………………………………218
第10章 高级抽象技术 ……………………220
10.1 仿真……………………………………220
10.2 狐狸与兔子仿真………………………220
10.2.1 foxes-and-rabbits工程 ……………221
10.2.2 Rabbit类 …………………………223
10.2.3 Fox类………………………………225
10.2.4 Simulator类:设置 ……………228
10.2.5 Simulator类:仿真的一步 ……231
10.2.6 采取措施改进仿真 ………………232
10.3 抽象类…………………………………232
10.3.1 Animal超类 ………………………233
10.3.2 抽象方法 …………………………233
10.3.3 抽象类 ……………………………235
10.4 进一步的抽象方法……………………237
10.5 多继承…………………………………239
10.5.1 Actor类 …………………………239
10.5.2 通过抽象实现的灵活性 …………240
10.5.3 有选择地绘画 ……………………240
10.5.4 可以画的角色:多继承 …………240
10.6 接口……………………………………241
10.6.1 Actor接口 ………………………241
10.6.2 接口的多继承 ……………………243
10.6.3 作为类型的接口 …………………243
10.6.4 作为规范的接口 …………………244
10.6.5 接口的其他例子 …………………245
10.6.6 抽象类还是接口 …………………246
10.7 继承的总结……………………………246
小结 …………………………………………246
关键术语 ……………………………………246
第11章 构造图形用户界面程序 …………248
11.1 引言……………………………………248
11.2 组件、布局和事件处理………………248
11.3 AWT和Swing …………………………249
11.4 ImageViewer例子 ……………………249
11.4.1 第一个实验:创建一个框架 ……250
11.4.2 加入简单的组件 …………………251
11.4.3 加入菜单 …………………………253
11.4.4 事件处理 …………………………253
11.4.5 集中接收事件 ……………………254
11.4.6 内部类 ……………………………256
11.4.7 匿名的内部类 ……………………257
11.5 ImageViewer 1.0:第一个完整的版本…258
11.5.1 图像处理类 ………………………259
11.5.2 加入图像 …………………………260
11.5.3 布局 ………………………………261
11.5.4 嵌套的容器 ………………………263
11.5.5 图像过滤器 ………………………265
11.5.6 对话框 ……………………………267
11.6 ImageViewer 2.0:改进的程序结构…269
11.7 ImageViewer 3.0:更多界面组件……273
11.7.1 按钮 ………………………………273
11.7.2 边界 ………………………………275
11.8 进一步的扩展…………………………276
11.9 另一个例子:SoundPlayer……………277
小结 …………………………………………279
关键术语 ……………………………………280
第12章 错误处理 …………………………281
12.1 address-book工程 ……………………281
12.2 防御性编程……………………………285
12.2.1 客户-服务器交互 ………………285
12.2.2 参数检查 …………………………286
12.3 服务器错误报告………………………287
12.3.1 通知用户 …………………………287
12.3.2 通知客户对象 ……………………287
12.4 异常抛出原则…………………………290
12.4.1 抛出异常 …………………………290
12.4.2 异常类 ……………………………291
12.4.3 异常的影响 ………………………292
12.4.4 不受检异常 ………………………292
12.4.5 阻止对象创建 ……………………293
12.5 异常处理………………………………294
12.5.1 受检异常:throws子句 …………295
12.5.2 捕捉异常:try语句………………295
12.5.3 抛出和捕捉多个异常 ……………296
12.5.4 扩散异常 …………………………298
12.5.5 finally子句 ……………………298
12.6 定义新的异常类………………………299
12.7 使用断言………………………………300
12.7.1 内部一致性检查 …………………300
12.7.2 断言语句 …………………………301
12.7.3 使用断言的指南 …………………302
12.7.4 断言与BlueJ单元测试框架 ………303
12.8 错误恢复和错误避免…………………303
12.8.1 错误恢复 …………………………303
12.8.2 错误避免 …………………………304
12.9 案例研究:文本输入-输出…………305
12.9.1 阅读器、写入器和流 ……………306
12.9.2 address-book-io工程………………306
12.9.3 用FileWriter类做文本输出……308
12.9.4 用FileReader类做文本输入……309
12.9.5 Scanner:从终端读输入 ………310
12.9.6 对象串行化 ………………………310
小结 …………………………………………311
关键术语 ……………………………………311
第13章 应用程序设计 ……………………312
13.1 分析与设计……………………………312
13.1.1 动词-名词方法 …………………312
13.1.2 电影院订票系统的例子 …………312
13.1.3 发现类 ……………………………313
13.1.4 使用CRC卡 ………………………313
13.1.5 场景 ………………………………314
13.2 类的设计………………………………316
13.2.1 设计类的界面 ……………………317
13.2.2 用户界面设计 ……………………317
13.3 文档……………………………………318
13.4 合作……………………………………318
13.5 原型……………………………………318
13.6 软件成长………………………………319
13.6.1 瀑布模型 …………………………319
13.6.2 迭代开发 …………………………319
13.7 使用设计模式…………………………320
13.7.1 模式的结构 ………………………321
13.7.2 装饰 ………………………………321
13.7.3 单件 ………………………………322
13.7.4 工厂方法 …………………………322
13.7.5 观察者 ……………………………323
13.7.6 模式总结 …………………………324
小结 …………………………………………325
关键术语 ……………………………………325
第14章 案例研究 …………………………326
14.1 案例研究………………………………326
14.2 分析与设计……………………………327
14.2.1 发现类 ……………………………327
14.2.2 使用CRC卡 ………………………327
14.2.3 场景模拟 …………………………328
14.3 类设计…………………………………329
14.3.1 设计类的接口 ……………………329
14.3.2 合作者 ……………………………329
14.3.3 概要实现 …………………………330
14.3.4 测试 ………………………………333
14.3.5 遗留问题 …………………………334
14.4 迭代开发………………………………334
14.4.1 开发步骤 …………………………334
14.4.2 第一个阶段 ………………………335
14.4.3 第一阶段的测试 …………………338
14.4.4 开发的下一个阶段 ………………338
14.4.5 下一步开发的想法 ………………339
14.4.6 重用 ………………………………339
14.5 另一个例子……………………………340
14.6 百尺竿头………………………………340
附录A 使用BlueJ ……………………………341
附录B Java数据类型 ………………………342
附录C Java控制结构 ………………………344
附录D 运算符 ………………………………349
附录E 脱离BlueJ运行Java程序 …………351
附录F 配置BlueJ ……………………………354
附录G 使用调试器 …………………………356
附录H JUnit单元测试工具 …………………360
附录Ijavadoc ………………………………362
附录J 程序风格指南 ………………………365
附录K 重要的类库类 ………………………368
索引 ……………………………………………371
【责任编辑:云霞 TEL:(010)68476606】
点赞 0