第1章 统一软件过程 1
1.1 软件开发过程基础 1
1.1.1 瀑布模型 2
1.1.2 增量模型 3
1.1.3 演化模型 3
1.1.4 敏捷模型 4
1.2 RUP简介 5
1.3 统一软件过程组件 5
1.4 统一过程模型的生命周期阶段 6
1.4.1 初始阶段 6
1.4.2 细化阶段 7
1.4.3 构造阶段 9
1.4.4 交付阶段 9
1.5 面向对象图在RUP中的应用 10
小结 11
多选题 11
练习 13
第2章 面向对象开发的理论基础 15
2.1 结构化方法和面向对象方法的对比 16
2.1.1 结构化方法 16
2.1.2 面向对象方法 18
2.2 软件开发过程中的面向对象 19
2.2.1 为什么需要面向对象方法 19
2.2.2 算法和面向对象方法在抽象上的区别 19
2.2.3 算法和面向对象方法在分解上的区别 19
2.2.4 算法和面向对象方法在层次上的区别 20
2.3 面向对象的特点 21
2.4 面向对象中的基本实体 21
2.4.1 什么是类 21
2.4.2 什么是对象 22
2.4.3 属性 23
2.4.4 方法 24
2.4.5 接口 25
2.4.6 包 26
2.4.7 组件 27
2.4.8 访问说明符/可见性控制 27
2.5 面向对象的构造 28
2.5.1 抽象 28
2.5.2 封装 29
2.5.3 信息隐藏 30
2.5.4 层次 31
2.5.5 多态 33
2.5.6 消息传递 34
2.6 选择面向对象开发的因素 35
2.7 案例研究 35
小结 41
多选题 42
练习 44
第3章 面向对象分析与设计中类和对象的识别 45
3.1 问题域的面向对象分析 46
3.2 用于类和对象识别的面向对象分析技术 49
3.2.1 基于抽象的分析 50
3.2.2 实体分析 51
3.2.3 基于场景的分析 51
3.2.4 基于操作的分析 53
3.2.5 基于问题域的分析 53
3.2.6 基于CRC卡的分析 55
3.2.7 基于数据流和控制流的分析 56
3.2.8 基于名词-动词的分析 57
3.3 问题域的面向对象设计 57
3.4 面向对象设计的设计原则 58
3.4.1 开闭原则(OCP) 58
3.4.2 Liskov替代原则(LSP) 59
3.4.3 依赖性倒置原则(DIP) 59
3.4.4 接口分离原则(ISP) 59
3.4.5 发布重用等效原则(REP) 60
3.4.6 共同封闭原则(CCP) 60
3.4.7 共同重用原则(CRP) 60
3.5 类和对象的识别和细化过程中的设计模式 61
3.5.1 设计模式介绍 61
3.5.2 设计模式——创建型 63
3.5.3 设计模式——结构型 66
3.5.4 设计模式——行为型 68
3.6 OOA技术的案例研究 72
小结 74
多选题 75
练习 80
第4章 UML建模 81
4.1 分析和设计阶段 82
4.1.1 问题领域理解 82
4.1.2 传统的分析和设计方法及模型 82
4.1.3 良好的分析具有的特点 84
4.1.4 传统方法的缺陷 85
4.2 基于UML的面向对象分析和设计 86
4.3 可视化建模 86
4.4 图形符号系统 87
4.4.1 Booch表示法 88
4.4.2 对象管理技术(OMT) 88
4.4.3 统一建模语言(UML) 88
4.5 将UML用作一个有效的建模工具 90
4.6 理解UML图 91
4.6.1 结构图 92
4.6.2 行为图 92
4.7 对OOA和OOD的支持 93
4.8 UML中的众多图表 94
4.9 UML的范围 95
4.9.1 已解决的问题 95
4.9.2 案例研究1 95
4.9.3 案例学习2 96
小结 96
多选题 97
练习 99
第5章 面向对象分析——基于场景的模型 100
5.1 用例分析 100
5.1.1 用例 100
5.1.2 用例的重要性 101
5.2 主用例图 101
5.3 次用例图 103
5.4 用例图中使用的符号 104
5.4.1 系统 104
5.4.2 参与者 105
5.4.3 用例 106
5.4.4 关系 106
5.5 用例图的目的 110
5.6 如何绘制用例图 111
5.7 案例研究 111
5.8 已解决的问题 118
小结 120
多选题 120
练习 125
第6章 面向对象设计——逻辑模型 127
6.1 UML类图 127
6.1.1 类实例 128
6.1.2 类图——结构化的表示 128
6.2 类图中使用的基本符号 128
6.2.1 类 128
6.2.2 抽象类 130
6.2.3 标准的类构造型 130
6.2.4 非标准的类构造型 131
6.2.5 类模板 132
6.2.6 接口 133
6.2.7 对象 134
6.2.8 数据类型 134
6.2.9 属性 136
6.2.10 分类器属性 136
6.2.11 关联属性 137
6.2.12 限定符 137
6.2.13 多重性 137
6.2.14 操作 138
6.2.15 抽象操作 140
6.2.16 约束 140
6.2.17 多重性 141
6.2.18 可见性 141
6.2.19 UML关联 142
6.2.20 关联终端 143
6.2.21 可导航性 144
6.2.22 不推荐的可导航性惯例 144
6.2.23 元数 145
6.2.24 共享聚合和复合聚合 146
6.2.25 关联类 147
6.2.26 链接 147
6.2.27 UML中的泛化 148
6.2.28 继承 148
6.2.29 UML中的依赖关系 149
6.2.30 使用 150
6.2.31 必需的接口 152
6.2.32 UML中的抽象 152
6.2.33 实现 153
6.2.34 接口实现 153
6.2.35 跟踪 154
6.3 目的 154
6.4 类图构造指南 154
6.4.1 在结构化视图中构建类图的清单 155
6.4.2 识别和建模类 155
6.4.3 识别和建模关联 156
6.4.4 定义属性 156
6.4.5 列出所需的查询和输入 157
6.4.6 制定查询和输入 157
6.4.7 进行信息分析 158
6.4.8 整合类图 159
6.4.9 验证类图 159
6.5 已解决的案例研究 159
小结 160
多选题 161
练习 163
第7章 交互图 167
7.1 交互图 167
7.1.1 序列图 168
7.1.2 协作图 182
7.1.3 决定交互图的范围 185
7.2 已解决的案例研究 186
小结 188
多选题 188
练习 190
第8章 面向对象设计——行为设计 194
8.1 状态图 194
8.1.1 状态图中使用的符号 195
8.1.2 状态图的作用 199
8.1.3 绘制状态图的指导原则 199
8.1.4 状态图的应用 199
8.1.5 案例研究——手机监控软件 200
8.2 活动图 202
8.2.1 活动图的类型 203
8.2.2 活动图中使用的符号 203
8.2.3 活动图的作用 210
8.2.4 绘制活动图的指导原则 210
8.2.5 活动图、序列图和状态图之间的对比 211
8.2.6 案例研究——手机监控软件 212
8.3 已解决的案例研究 214
小结 216
多选题 217
练习 220
第9章 面向对象设计——物理图 221
9.1 包图 222
9.1.1 包图中使用的表示法 222
9.1.2 包图的作用 226
9.1.3 绘制包图的指导方针 226
9.1.4 案例研究 227
9.2 组件图 228
9.2.1 组件图中使用的表示法 228
9.2.2 UML 2.0中的高级表示法 229
9.2.3 组件图的作用 231
9.2.4 绘制组件图的指导方针 231
9.2.5 案例研究——组件图 232
9.3 部署图 235
9.3.1 部署图中的表示法 235
9.3.2 部署图的作用 238
9.3.3 绘制部署图的指导方针 238
9.4 案例研究 239
9.5 已解决的案例研究 240
小结 241
多选题 242
练习 247
第10章 面向对象开发示例 248
10.1 在现实世界中应用类和对象 248
10.2 IT服务台 248
10.2.1 产品概述 248
10.2.2 项目的范围 249
10.2.3 组件 249
10.2.4 基于角色的特定要求 250
10.2.5 产品功能 251
10.2.6 用例图 251
10.2.7 类图 261
10.2.8 序列图 263
10.2.9 活动图 274
10.3 保险索赔管理系统 283
10.3.1 描述 283
10.3.2 功能需求 283
10.3.3 用例图 284
10.3.4 使用UML的逻辑设计 287
10.3.5 使用UML的行为设计 290
10.4 工作流管理系统 296
10.4.1 描述 296
10.4.2 产品功能 296
10.4.3 功能需求 297
10.4.4 用例图 298
10.4.5 使用UML的逻辑设计 303
10.4.6 行为模型——使用UML的交互图 304
10.4.7 使用UML的行为设计 312
10.4.8 包图 321
10.4.9 组件图 323
10.4.10 部署图 323
10.5 桌面应用程序/工具开发——PreClean工具 324
10.5.1 描述 324
10.5.2 功能需求 325
10.5.3 模块描述 325
10.5.4 用例图 328
10.5.5 使用UML的逻辑设计 331
10.5.6 使用UML的行为设计 336
10.5.7 包图 341
10.5.8 组件图 342
10.5.9 部署图 342
术语表 344