目 录 第1章 UML概述 1 1.1 面向对象开发 1 1.1.1 理解面向对象开发 1 1.1.2 面向对象的主要特征 4 1.1.3 面向对象的层和模型 7 1.2 认识UML 8 1.2.1 UML的发展历程 8 1.2.2 UML统一的作用 9 1.2.3 UML体系结构 10 1.2.4 UML建模流程和工具 10 1.3 UML核心元素 12 1.3.1 UML视图 12 1.3.2 UML图 13 1.3.3 事物 15 1.3.4 关系 17 1.3.5 通用机制 18 1.4 思考与练习 19 第2章 用例图 21 2.1 用例图的构成 21 2.1.1 系统 22 2.1.2 参与者 23 2.1.3 用例 25 2.1.4 关系 27 2.2 用例关系和描述 28 2.2.1 泛化关系 28 2.2.2 包含关系 29 2.2.3 扩展关系 31 2.2.4 用例描述 33 2.3 实例:创建BBS论坛用例图 35 2.3.1 确定系统信息 35 2.3.2 前台功能概述 37 2.3.3 构造用例模型 39 2.4 思考与练习 41 第3章 类图 43 3.1 类图的概念 43 3.1.1 类图概述 44 3.1.2 类 45 3.1.3 定义类 49 3.1.4 接口 50 3.2 泛化关系 51 3.2.1 泛化的含义和用途 51 3.2.2 泛化的层次与多重继承 52 3.2.3 泛化约束 53 3.3 依赖关系和实现关系 54 3.3.1 依赖关系 54 3.3.2 实现关系 56 3.4 关联关系 56 3.4.1 二元关联 57 3.4.2 关联类 62 3.4.3 或关联与反身关联 63 3.4.4 聚合关系 64 3.4.5 组合关系 64 3.5 实例:创建BBS论坛类图 65 3.5.1 创建实体类 65 3.5.2 创建类与类之间的关系图 67 3.6 思考与练习 69 第4章 对象图和包图 70 4.1 对象图 70 4.1.1 对象和类 71 4.1.2 对象和链 71 4.1.3 对象图概述 73 4.1.4 对象图和类图的区别 75 4.1.5 使用对象图测试类图 75 4.2 包图 77 4.2.1 包 77 4.2.2 导入包 79 4.2.3 包图概述 80 4.2.4 包之间的关系 83 4.2.5 包图和类图的区别 84 4.3 对象图和包图建模 84 4.3.1 使用对象图建模 84 4.3.2 使用包图建模 85 4.4 思考与练习 85 第5章 活动图 87 5.1 活动图概述 87 5.1.1 定义活动图 87 5.1.2 活动图的主要元素 88 5.1.3 了解活动和动作 89 5.2 活动图的组成元素 91 5.2.1 基本组成元素 91 5.2.2 其他元素 94 5.3 控制结点 100 5.3.1 分支与合并 101 5.3.2 分叉与汇合 102 5.4 实例:创建BBS论坛活动图 104 5.4.1 建模步骤 104 5.4.2 创建活动图 104 5.5 思考与练习 105 第6章 顺序图 107 6.1 顺序图概述 107 6.1.1 什么是顺序图 108 6.1.2 顺序图的元素 108 6.2 顺序图的构成元素 108 6.2.1 对象 109 6.2.2 生命线 111 6.2.3 消息 111 6.2.4 激活 117 6.3 建模和执行 118 6.3.1 建模时间 118 6.3.2 执行规范 119 6.3.3 建模迭代 119 6.4 实例:创建BBS论坛顺序图 120 6.4.1 会员用户功能顺序图 120 6.4.2 普通用户功能顺序图 122 6.5 思考与练习 124 第7章 通信图和时序图 126 7.1 通信图概述 126 7.1.1 什么是通信图 127 7.1.2 对象与类角色 127 7.1.3 关联角色与链接 128 7.1.4 消息 129 7.2 操作消息元素 130 7.2.1 消息序列号与控制点 130 7.2.2 创建对象 131 7.2.3 消息迭代 131 7.3 时序图概述 132 7.3.1 什么是时序图 132 7.3.2 时序图中的对象 133 7.3.3 状态 134 7.3.4 时间 135 7.3.5 状态线 135 7.3.6 事件与消息 137 7.4 时间约束和替代 138 7.4.1 时间约束 138 7.4.2 时序图的替代表示法 139 7.5 实例:创建BBS论坛通信图 141 7.5.1 会员用户功能通信图 141 7.5.2 普通用户功能通信图 142 7.6 思考与练习 143 第8章 组合结构图和交互概览图 145 8.1 组合结构图 145 8.1.1 内部结构 145 8.1.2 端口 148 8.1.3 协作 149 8.2 交互概览图 150 8.2.1 组成部分 150 8.2.2 使用交互 151 8.2.3 组合交互 154 8.3 思考与练习 155 第9章 状态机图 156 9.1 状态机概述 156 9.1.1 状态机及其构成 157 9.1.2 状态机图标记符 157 9.2 转移 159 9.2.1 什么是转移 159 9.2.2 事件 160 9.2.3 动作 163 9.2.4 转移的类型 164 9.3 组合状态 165 9.3.1 顺序状态 165 9.3.2 并发子状态 166 9.3.3 同步状态 167 9.3.4 历史状态 167 9.3.5 子状态机引用状态 168 9.4 实例:创建自动取款机 状态机图 169 9.4.1 分析状态机图 170 9.4.2 创建状态机图 170 9.5 思考与练习 172 第10章 组件图和部署图 173 10.1 构造实现方式图概述 173 10.1.1 组件图概述 173 10.1.2 部署图概述 174 10.1.3 组合组件图和部署图 176 10.2 组件图 176 10.2.1 组件 176 10.2.2 接口 178 10.2.3 组件间的关系与 组件嵌套 179 10.2.4 组件图的建模应用 180 10.2.5 组件图的适用情况 182 10.3 部署图 183 10.3.1 结点和连接 183 10.3.2 部署间的关系 185 10.3.3 部署图的适用情况及 如何绘制 185 10.3.4 部署图的建模应用 186 10.4 实例:创建BBS论坛组件图和 部署图 188 10.4.1 模型创建流程 188 10.4.2 实现BBS组件图和 部署图 190 10.5 思考与练习 191 第11章 UML与RUP 193 11.1 RUP概述 193 11.1.1 理解软件开发过程 193 11.1.2 什么是RUP 194 11.1.3 RUP的作用 196 11.1.4 RUP的特点 197 11.2 RUP的二维空间 198 11.2.1 时间维 198 11.2.2 RUP的静态结构 200 11.3 核心工作流程 202 11.3.1 需求获取工作流 202 11.3.2 分析工作流 205 11.3.3 设计工作流 207 11.3.4 实现工作流 210 11.3.5 测试工作流 213 11.4 思考与练习 215 第12章 对象约束语言 217 12.1 对象约束语言概述 217 12.1.1 对象约束语言简介 218 12.1.2 语言结构 218 12.1.3 语言语法 219 12.1.4 表达式 222 12.2 数据类型 223 12.2.1 基本数据类型 223 12.2.2 集合类型 225 12.2.3 OclMessage类型 226 12.2.4 OclVoid和OclAny类型 226 12.2.5 模型元素类型 227 12.3 集合 228 12.3.1 创建集合 228 12.3.2 操作集合 228 12.3.3 Collection类型 230 12.3.4 Set类型 232 12.3.5 Bag类型 233 12.3.6 Sequence类型 234 12.4 语言约束 235 12.4.1 使用约束 235 12.4.2 对象级约束 238 12.4.3 消息级约束 239 12.4.4 约束和泛化 241 12.5 思考与练习 242 第13章 UML扩展机制 244 13.1 UML的体系结构 244 13.1.1 UML扩展机制概述 245 13.1.2 四层元模型体系结构 245 13.1.3 元元模型层 247 13.1.4 元模型层 248 13.2 UML的核心语义 249 13.2.1 模型元素 249 13.2.2 视图元素 250 13.3 构造型 252 13.3.1 表示构造型 252 13.3.2 UML标准构造型 252 13.3.3 UML扩展机制 进行建模 255 13.4 标记值 257 13.4.1 表示标记值 257 13.4.2 UML标准标记值 258 13.4.3 自定义标记值 258 13.4.4 标记值应用元素 259 13.5 约束 259 13.5.1 表示约束 259 13.5.2 UML标准约束 262 13.5.3 自定义约束 263 13.6 思考与练习 263 第14章 UML与数据库设计 265 14.1 数据库设计概述 265 14.1.1 数据库设计与 UML模型 265 14.1.2 数据库接口 266 14.2 类图到数据库的转换 267 14.2.1 基本映射转换 267 14.2.2 类到表的转换 268 14.2.3 关联关系的转换 271 14.2.4 需要避免的映射情况 272 14.3 完整性与约束验证 273 14.3.1 父表的约束 273 14.3.2 子表的约束 276 14.4 数据库实现与转换技术 276 14.4.1 类映射到数据库技术 276 14.4.2 UML模型转换为 数据库 277 14.4.3 SQL语句实现 数据库功能 280 14.5 思考与练习 281 第15章 基于C++的UML模型实现 282 15.1 模型元素的简单实现 282 15.1.1 类 283 15.1.2 实现原理 284 15.2 实现关联 285 15.2.1 基本关联 285 15.2.2 强制对可选或者 强制关联 287 15.2.3 可选对可选关联 287 15.2.4 可选对多关联 288 15.2.5 强制对多关联 289 15.2.6 多对多关联 289 15.2.7 有序关联的实现 290 15.2.8 关联类的实现 291 15.3 受限关联的实现 292 15.3.1 受限关联概述 292 15.3.2 强制或者可选对可选对多受 限关联 293 15.3.3 可选对强制或者可选对多受 限关联 294 15.3.4 多对可选的受限关联 295 15.3.5 多对多受限关联 296 15.4 UML关系的实现 296 15.4.1 泛化关系的实现 296 15.4.2 聚合与组合关系的实现 297 15.5 特殊类的实现 298 15.5.1 接口 298 15.5.2 枚举 299 15.5.3 包 300 15.5.4 模板 300 15.6 思考与练习 301