第1章 对象、UML 和 Java 1
1.1 面向对象技术 2
1.2 面向对象程序设计语言 3
1.3 面向对象的设计和 UML 3
1.4 对象的回报 4
1.5 本章小结 4
第2章 对象的精髓 5
2.1 什么是面向对象系统 6
2.1.1 面向对象系统的基本特性 7
2.1.2 利用对象进行抽象 8
2.1.3 封装的类 9
2.1.4 通过消息进行通信 9
2.1.5 对象生命周期 10
2.1.6 类层次结构 12
2.1.7 多态性 16
2.2 一个例子:体现前面所讲的概念 18
2.3 其他面向对象概念 19
2.3.1 抽象类 19
2.3.2 方法的可见性 20
2.3.3 类与实例 21
2.3.4 访问对象 22
2.3.5 对象的低层次视图 22
2.4 本章小结 23
2.5 参考资源 24
2.6 本章注释 24
3.1 在 Java 中定义类 25
第3章 Java 中的对象 25
3.2 可见性 29
3.3 继承 31
3.4 关联、聚合与组合 37
3.5 Java 接口 39
3.6 Java 中对象的生命周期 41
3.6.1 构造方法 41
3.6.2 垃圾收集 41
3.6.3 内存泄漏 42
3.7 类方法、类属性与实例方法、实例属性 42
3.8 对象拷贝 43
3.9 消息 49
3.10 本章小结 49
3.12 本章注释 50
3.11 参考资源 50
第4章 面向对象的分析和设计 51
4.1 软件开发方法学 53
4.2 软件项目的要素 54
4.3 面向对象分析的精髓 56
4.3.1 对象发现 57
4.3.2 评估候选对象 58
4.3.3 确定对象层次结构 60
4.3.4 发现对象属性 61
4.3.5 发现对象操作 61
4.4 对象设计精髓 63
4.5.1 从整体上把握 65
4.5 一些设计指南 65
4.5.2 封装 66
4.5.3 设计类 66
4.5.4 继承 67
4.5.5 通用指南 67
4.6 建造和发布阶段 68
4.6.1 建造软件 68
4.6.2 发布软件 69
4.7 UML 的更多知识 70
4.8 本章小结 71
4.9 参考资源 72
4.10 本章注释 72
第5章 用 Swing 实现面向对象的图形用户界面 73
5.1 图形用户界面 74
5.1.1 典型应用程序 74
5.1.2 对话框 74
5.1.3 事件 75
5.2 Swing 简介 76
5.2.1 处理 Swing 命令事件 79
5.2.2 一些选项 85
5.3 MVC:模型/视图/控制器 86
5.3.1 用 Java 实现 MVC 87
5.3.2 一个小的 Swing MVC GUI 框架 88
5.3.3 一个基于 Wmvc 的简单应用程序 98
5.3.4 温度计的 UML 时序图 103
5.5 参考资源 104
5.4 本章小结 104
5.6 本章注释 105
第6章 使用 Java 的实例研究 107
6.1 分析 MovieCat 108
6.1.1 用况 108
6.1.2 发现对象、属性和操作 109
6.1.3 评估 111
6.2 设计 MovieCat 111
6.2.1 Movie 类 112
6.2.2 MovieModel 类 114
6.2.3 视图类 115
6.3.1 MovieCat 类 117
6.3 实现 MovieCat 117
6.2.4 将它们结合起来 117
6.3.2 Movie 类 119
6.3.3 MovieModel 类 121
6.3.4 MainView 类 125
6.3.5 MovieListView 类 129
6.3.6 MovieltemView 类 131
6.3.7 MovieEditor 类 135
6.3.8 Movie 的辅助类 138
6.4 回顾 141
6.5 本章小结 142
6.6 本章注释 142
第7章 设计模式 143
7.1 什么是设计模式 143
7.1.2 设计模式描述模板 144
7.1.1 使用设计模式 144
7.2 GoF 设计模式 145
7.2.1 创建型模式 145
7.2.2 结构型模式 145
7.2.3 行为型模式 146
7.3 Wmvc 和 MovieCat 使用设计模式的例子 147
7.3.1 MVC 147
7.3.2 Observer 模式 148
7.3.3 Wmvc 中的 Observer 模式 150
7.3.4 Wmvc 中的 Command 模式 151
7.4 本章小结 152
7.5 参考资源 152
7.3.5 Wmvc 和 MovieCat 中用到的其他模式 152
第8章 重构 153
8.1 什么是重构 154
8.1.1 基本重构过程 154
8.2 何时需要重构 155
8.2.1 代码味道 155
8.2.2 何时不要重构 156
8.3 一些重构技术 156
8.3.1 重构分类 156
8.3.2 一些重构技术 157
8.4 本章小结 158
8.5 参考资源 158
第9章 今日软件开发方法学 159
9.1.2 基本概念 160
9.1 大规模项目适用的方法学 160
9.1.1 统一软件过程概述 160
9.2 适用于小项目的敏捷方法学 162
9.2.1 敏捷联盟 162
9.2.2 极限编程 163
9.2.3 DSDM 165
9.2.4 Crystal/Adaptive 软件开发方法 166
9.3 开放源代码开发 166
9.3.1 开放源代码是分布式开发 167
9.4 本章小结 168
9.5 参考资源 168
9.6 本章注释 169
10.1 GUI 与控制台 171
第10章 面向对象开发的软件工具 171
10.2 编辑器和 IDE 172
10.2.1 好编辑器的特征 172
10.2.2 三种类型的编辑器 173
10.2.3 Emacs 174
10.2.4 Vi 174
10.2.5 集成开发环境 175
10.2.6 VIDE 176
10.2.7 Borland JBuilder 176
10.2.8 Sun Forte 178
10.2.9 其他 IDE 179
10.3 源代码控制 179
10.4 CASE、建模和 UML 工具 179
10.4.2 MagicDraw 180
10.4.1 ArgoUML 180
10.4.3 Rational 软件公司 181
10.4.4 TogetherSoft 181
10.4.5 其他 UML 工具 181
10.4.6 其他 Java 工具 182
10.5 本章注释 182
第11章 编程:个人观点 183
11.1 编程 184
11.1.1 代码不会消亡 184
11.1.3 清楚自己在做什么 185
11.1.4 写试验性代码 185
11.1.2 用好的风格编程 185
11.1.5 实践增量编程 186
11.1.6 工具很重要 186
11.1.7 对象确实有帮助 186
11.1.8 测试 186
11.1.9 调试 187
11.1.10 不要重新发明轮子 187
11.1.11 有时自己做更好 187
11.1.12 任何时候都可能产生好主意 188
11.1.13 拥有生活 188
11.1.14 计划很重要 188
11.2.3 了解最新的工具 189
11.2.2 了解经时间检验的工具 189
11.2.4 工具会消失 189
11.2 工具 189
11.2.1 编辑器很重要 189
11.3 工作环境 190
11.3.1 快乐的程序员是高效的程序员 190
11.3.2 物理环境 190
11.3.3 灵活性 190
11.3.4 40小时 191
11.3.5 团队 191
11.3.6 市场营销很重要 191
11.3.7 保持不过时 192
11.3.8 共同奋斗 192
11.3.9 让程序员协助制定策略 192
11.3.10 让老板知道您需要什么 192
11.3.11 Reference 软件公司的故事 192
11.4.3 如果可能,用开放源代码 193
11.4.4 其他程序员 193
11.4 编程资源 193
11.4.2 当心互联网 193
11.4.1 使用互联网 193
11.4.5 网站 194
11.5 本章注释 194
第12章 下一步 195
12.1 面向对象技术 195
12.2 Java 196
12.3 需要了解的更多术语 196
12.3.1 分布式计算术语 196
12.3.2 来自 Sun 公司的 Java 相关术语 197
12.3.3 其他术语 198
词汇表 201