什么是软件危机 1
第1章 为什么要使用面向对象设计 1
抽象概念是怎样帮助我们的 2
什么是对象 4
什么是软件的生命周期 5
什么样的软件可以重用 8
谁设计软件 10
在本书中有什么 10
什么是对象 12
第2章 对象和其他基本要素 12
如何访问对象 13
类和实例 15
多态性 15
继承 17
面向对象设计 19
客户和服务器 21
客户-服务器契约 22
术语 25
发现类 26
第3章 类 26
画图编辑器需求说明 27
画图编辑器设计:发现类 28
记录候选类 32
发现抽象类 33
自动柜员机需求说明 36
自动柜员机设计:发现类 37
第4章 职责 44
什么是职责 44
分配职责 45
确定职责 45
检查类之间的关系 48
记录职责 51
ATM设计:发现和分配职责 52
第5章 协作 64
什么是协作 64
发现协作 65
记录协作 67
排练 67
ATM设计:发现协作 68
探索阶段总结 77
分层结构图 78
第6章 分层结构 78
维恩图 80
创建良好的分层结构 80
确定契约 84
修改你的设计 87
为ATM系统建立分层结构 87
定义契约 91
总结 91
协作图 95
第7章 子系统 95
什么是子系统 97
确定子系统 99
简化交互 102
核对你的设计 107
分析ATM系统的协作 107
第8章 协议 117
细化职责 117
详细说明你的设计 119
ATM系统的签名 124
小结 128
第9章 实现你的设计 129
选择语言 129
管理实现 134
评估你的设计质量 136
邀请 137
第10章 又一个设计 138
联机文档系统需求说明 138
发现子系统 144
发现类 147
发现职责和协作 155
探索阶段总结 161
建立分层结构 166
发现契约 167
简化协作 168
创建协议 168
附录A 快速查阅 169
附录B ATM系统设计 176
附录C 文档子系统设计 194
附录D 练习 235