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