目 录
第 一部分 引言 1
第 1章 面向对象的含义 3
1.1 封装 7
1.2 信息/实现隐藏 10
1.3 状态保持 12
1.4 对象标识 12
1.5 消息 16
1.5.1 消息结构 16
1.5.2 消息参数 17
1.5.3 消息中的对象角色 19
1.5.4 消息的类型 20
1.6 类 21
1.7 继承 26
1.8 多态性 30
1.9 一般性 34
1.10 本章小结 37
1.11 习题 38
1.12 答案 39
第 2章 面向对象简史 44
2.1 面向对象的起源 44
2.1.1 Larry Constantine 44
2.1.2 O.-J. Dahl 和K.Nygaard 45
2.1.3 Alan Kay,Adele Goldberg等人 45
2.1.4 Edsger Dijkstra 45
2.1.5 Barbara Liskov 45
2.1.6 David Parnas 45
2.1.7 Jean Ichbiah等人 46
2.1.8 Bjarne Stroustrup 46
2.1.9 Bertrand Meyer 46
2.1.10 Grady Booch,Ivar Jacobson及Jim Rumbaugh 46
2.2 面向对象的成熟期 47
2.3 类似工程学的面向对象 48
2.4 面向对象的益处 49
2.4.1 用户需求分析 49
2.4.2 软件设计 50
2.4.3 软件构造 50
2.4.4 软件维护 52
2.4.5 软件使用 52
2.4.6 软件项目管理 53
2.5 本章小结 54
2.6 习题 55
2.7 答案 55
第 二部分 统一建模语言(UML) 57
第3章 类、属性和操作的基本表示法 62
3.1 类 62
3.2 属性 63
3.3 操作 65
3.4 重载操作 68
3.5 属性和操作的可视性 69
3.6 类属性和类操作 70
3.7 抽象操作和类 70
3.8 实用程序 72
3.9 参数化类 73
3.10 本章小结 74
3.11 习题 75
3.12 答案 76
第4章 类图 80
4.1 一般化结构 80
4.1.1 单一继承 80
4.1.2 多重继承 82
4.1.3 子类的划分 82
4.1.4 分类识别名称 85
4.2 关联结构 86
4.2.1 关联的基本UML表示法 87
4.2.2 关联类 89
4.2.3 多向关联 90
4.2.4 关联的导航 91
4.3 整体/部分关联 92
4.3.1 组成 92
4.3.2 聚集 95
4.4 本章小结 97
4.5 习题 98
4.6 答案 99
第5章 对象交互图 103
5.1 协同图 103
5.1.1 描述一个消息 104
5.1.2 协同图中的多态性 106
5.1.3 重复的消息 107
5.1.4 在消息中使用self 108
5.2 时序图 110
5.3 异步消息及并发执行 112
5.3.1 描述一个异步消息 112
5.3.2 回调机制 114
5.3.3 异步消息的优先权 117
5.3.4 描述一个广播(无目标)消息 118
5.4 本章小结 120
5.5 习题 121
5.6 答案 121
第6章 状态图 123
6.1 基本状态图 123
6.2 嵌套状态 125
6.3 并发状态和同步 129
6.4 消息结果参数的瞬时状态 133
6.5 连续的、可变的属性 134
6.6 本章小结 136
6.7 习题 137
6.8 答案 139
第7章 体系结构和接口图 143
7.1 描述系统体系结构 143
7.1.1 包 143
7.1.2 硬件环境的配置图 145
7.1.3 软件结构的配置图 146
7.2 人机界面的描述 149
7.2.1 窗口布局图 149
7.2.2 窗口导航图 150
7.2.3 题外话:什么是面向对象的GUI 153
7.3 本章小结 153
7.4 习题 154
7.5 答案 154
第三部分 面向对象设计的原则 157
第8章 封装与共生性(connascence) 158
8.1 封装结构 158
8.1.1 封装的级别 158
8.1.2 制定标准管理各个封装级别之间的相互作用 160
8.2 共生性(connascence) 161
8.2.1 共生性的种类 162
8.2.2 差异共生性(contranascence) 165
8.2.3 共生性和封装边界 166
8.2.4 共生性和可维护性 167
8.2.5 面向对象系统中共生性的滥用 169
8.2.6 共生性(connascence)的术语 171
8.3 本章小结 171
8.4 习题 172
8.5 答案 173
第9章 领域、依附集和内聚 175
9.1 对象类的领域 175
9.1.1 基础领域 176
9.1.2 结构领域 177
9.1.3 商业领域 177
9.1.4 应用领域 178
9.1.5 每一领域类的来源 179
9.2 依附集(encum brance) 181
9.2.1 什么是依附集(encumbrance) 181
9.2.2 依附集的使用 183
9.2.3 Demeter规则 183
9.3 类的内聚(Class Cohesion):一个类和它的特性 184
9.3.1 混合事例型内聚 185
9.3.2 混合领域型内聚 187
9.3.3 混合角色型内聚 189
9.4 本章小结 190
9.5 习题 190
9.6 答案 191
第 10章 状态空间和行为 195
10.1 一个类的状态空间和行为 195
10.2 子类的状态空间 198
10.3 子类的行为 201
10.4 状态空间的一个约束条件:类的不变式 202
10.5 前置条件和后置条件 204
10.6 本章小结 206
10.7 习题 207
10.8 答案 208
第 11章 类型一致性与闭合行为 211
11.1 类与类型 211
11.2 类型一致性原则 213
11.2.1 抗变性与协变性原则 214
11.2.2 抗变性与协变性实例 215
11.2.3 图解抗变性与协变性 218
11.2.4 类型一致性必要条件综述 220
11.3 闭合行为(Closed Behavior)原则 221
11.4 本章小结 223
11.5 习题 223
11.6 答案 224
第 12章 继承与多态性的危险性 227
12.1 继承的滥用 227
12.1.1 错误的聚集 227
12.1.2 倒置的层次结构 228
12.1.3 混淆类及其实例 229
12.1.4 误用 233
12.2 多态性的危险性 235
12.2.1 操作的多态性 236
12.2.2 变量的多态性 238
12.2.3 消息中的多态性 239
12.2.4 多态性与一般性 241
12.3 本章小结 243
12.4 习题 243
12.5 答案 245
第 13章 组织操作技术 249
13.1 混合类 249
13.1.1 商务举例 249
13.1.2 图形举例 253
13.2 操作环 257
13.3 本章小结 261
13.4 习题 261
13.5 答案 262
第 14章 类的聚合及其所支持 的状态和行为 266
14.1 类接口中支持的状态 266
14.2 类接口中支持的行为 268
14.3 类接口中操作的聚合 272
14.4 本章小结 275
14.5 习题 276
14.6 答案 279
第 15章 设计软件构件 284
15.1 什么是构件 284
15.2 构件与对象的相似性和区别 285
15.3 构件举例 287
15.4 构件的内部设计 293
15.5 轻量和重量构件 298
15.6 使用构件的优点和缺点 301
15.7 本章小结 304
15.8 习题 304
15.9 答案 305
附录A 面向对象设计检查 (Walkthrough)列表 307
附录B 面向对象设计者手册 311
附录C 面向对象术语快速指南 315
词汇表 316
参考文献 334