1.1 面向对象简介 1
1.1.1 面向对象的思维 1
第1章 面向对象方法概论 1
1.1.2 什么是面向对象 2
1.1.3 面向对象方法的历史及现状 4
1.1.4 当前的研究及实践领域 5
1.2.1 对事物的认识和描述 6
1.2 面向对象方法的形成 6
1.2.2 对象的特性 7
1.2.3 软件工程学的作用 8
1.3.1 面向对象方法学 11
1.3 面向对象开发的概念 11
1.4 面向对象技术要点 12
1.3.3 功能方法学上的差异 12
1.3.2 三种模型 12
1.4.3 数据和行为的联合 13
1.4.2 封装 13
1.4.1 抽象 13
1.5 面向对象开发的可用性例证 14
1.4.6 协同作用 14
1.4.4 共享 14
1.4.5 面向对象开发重点 14
1.6 面向对象方法的要点和主要优点 15
二、选择题 16
一、填空题 16
小结 16
综合练习一 16
三、简答题 17
2.1.1 对象 18
2.1 面向对象的相关概念 18
第2章 面向对象方法论 18
2.1.2 类 19
2.1.4 属性 20
2.1.3 对象图 20
2.1.5 操作和方法 21
2.1.6 封装 22
2.1.7 继承 23
2.1.8 多重继承 24
2.1.9 消息 26
2.1.10 结构与连接 27
2.1.12 永久对象 28
2.1.11 多态性 28
2.1.13 主动对象 29
2.1.14 对象类的表示方法 30
2.2.2 重数 31
2.2.1 一般概念 31
2.2 链接与关联 31
2.2.4 三元关联 32
2.2.3 关联的重要性 32
2.2.7 资格关联 33
2.2.6 异或关联 33
2.2.5 关联的候选关键字 33
2.2.9 用关联模型化为类 34
2.2.8 链接属性 34
2.2.11 排序 35
2.2.10 角色名 35
2.3.1 聚合与关联 36
2.3 聚合 36
2.2.12 资格符 36
2.3.2 聚合和概括 37
2.3.4 操作的传播 38
2.3.3 递归聚合 38
2.3.6 物理聚合的语义扩展 39
2.3.5 物理聚合与分类聚合 39
2.4.1 一般概念 40
2.4 概括 40
2.3.7 分类聚合的语义扩展 40
2.4.4 抽象类和具体类 41
2.4.3 重写特征 41
2.4.2 概括的使用 41
2.5.1 模块 42
2.5 构造分组 42
2.4.5 概括与其他对象建模结构 42
二、选择题 43
一、填空题 43
2.5.2 表 43
小结 43
综合练习二 43
三、简答题 44
3.1.2 抽象 45
3.1.1 使用模型的目的 45
第3章 面向对象建模 45
3.1 建模 45
3.2 统一建模语言 46
3.2.1 模型的建立 47
3.2.2 面向对象的理念 48
3.2.5 UML的基本图标 51
3.2.4 规划分析 51
3.2.3 系统观点 51
3.2.6 软件开发的传统与现代 58
3.2.9 UML的词别 60
3.2.8 UML的语法规则 60
3.2.7 UML的基本元素 60
3.3.2 动态模型 61
3.3.1 对象模型 61
3.3 对象模型技术 61
3.4.1 Rumbaugh面向对象方法论 62
3.4 其他方法 62
3.3.3 功能模型 62
3.3.4 三种模型的联系 62
3.4.2 Shlaer/Mellor面向对象方法论 66
3.4.3 Jacobson面向对象方法论 68
3.4.4 Booch面向对象方法论 70
3.4.5 Yourdon面向对象方法论 71
3.4.6 主流面向对象模型 74
3.4.7 Martin/Odell面向对象方法论 79
二、选择题 80
一、填空题 80
小结 80
综合练习三 80
三、简答题 81
4.1 体系结构表示法 82
第4章 面向对象体系结构 82
4.3.1 客户机/服务器系统简介 83
4.3 客户机/服务器系统 83
4.2 流程处理系统 83
4.3.2 基于MVC的网上应用系统 84
4.4.2 以服务对象分层 85
4.4.1 层状系统简介 85
4.4 层状系统 85
4.6 代理 86
4.5.2 多级系统 86
4.5 三级和多级系统 86
4.5.1 三级系统 86
4.7.2 聚合体系结构 87
4.7.1 联邦体系结构 87
4.7 联邦体系结构和聚合体系结构 87
4.8 体系结构的样式 88
4.9 案例:自动柜员机系统软件 89
4.10 案例:租借公司 90
4.11.1 组的动态组合变更过程 91
4.11 案例:共用讨论板 91
4.11.2 界面层与控制层 92
4.12.1 静态结构 94
4.12 案例:EJB的架构 94
4.11.3 同步及相关问题 94
4.12.3 实体豆的动态行为 97
4.12.2 资源管理策略 97
三、简答题 99
二、选择题 99
小结 99
综合练习四 99
一、填空题 99
5.1.1 事件 100
5.1 事件和状态 100
第5章 动态模型 100
5.1.2 脚本和事件轨迹 101
5.1.3 状态 102
5.1.4 状态图 103
5.1.5 条件 104
5.2.2 操作的状态图小结 105
5.2.1 控制操作 105
5.2 操作 105
5.3.2 嵌套状态图 106
5.3.1 平状态图问题 106
5.3 嵌套状态图 106
5.3.3 状态概括 107
5.3.4 事件概括 108
5.4.2 对象内部并发性 109
5.4.1 聚合并发性 109
5.4 并发性 109
5.4.3 进入和退出动作 110
5.4.6 发送事件 111
5.4.5 自动变迁 111
5.4.4 内部动作 111
5.4.7 并发活动的同步 112
5.5 动态模型的实例 113
5.6 对象模型和动态模型的关系 115
一、填空题 116
综合练习五 116
5.7 实践技巧 116
小结 116
三、简答题 117
二、选择题 117
6.1 功能模型 118
第6章 功能模型 118
6.2.1 处理 119
6.2 数据流图 119
6.2.3 施动者 120
6.2.2 数据流 120
6.2.5 嵌套数据流图 121
6.2.4 数据存储 121
6.3 指定的操作 122
6.2.6 控制流 122
6.4 约束 123
6.5.1 伪码 124
6.5 数据库应用中的功能模型 124
6.5.2 ONN的伪代码 125
6.5.3 ONN的构造 126
6.5.4 组合ONN构造 130
6.5.5 添加ONN特性 131
6.5.6 其他范型 132
6.5.7 实践技巧 134
6.6 功能模型的实例(飞行模拟机装置) 135
6.7 功能模型与对象模型和动态模型的关系 137
一、填空题 138
综合练习六 138
小结 138
三、简答题 139
二、选择题 139
7.1 对象、主动对象以及它们的类 140
第7章 发现对象、建立对象类 140
7.2 表示法 141
7.3.1 研究用户需求,明确系统责任 142
7.3 研究问题域和用户需求 142
7.3.2 研究问题域 143
7.4.1 发现对象技术概要 144
7.4 发现对象 144
7.3.3 确定系统边界 144
7.4.3 策略与启发 145
7.4.2 确地运用抽象原则 145
7.4.4 审查和筛选 147
7.5.1 异常情况的检查和调整 149
7.5 对象分类,建立类图的对象层 149
7.4.5 识别主动对象 149
7.5.3 建立类图的对象层 150
7.5.2 类的命名 150
7.6.2 发现对象 151
7.6.1 功能需求 151
7.6 电梯例子 151
一、填空题 152
综合练习七 152
7.6.3 对象层表示 152
小结 152
三、简答题 153
二、选择题 153
8.1 对象的属性和服务 154
第8章 定义属性与服务 154
8.3.1 策略与启发 155
8.3 定义属性 155
8.2 表示法 155
8.3.2 审查与筛选 156
8.3.3 推迟到OOD考虑的问题 157
8.4.1 对象的状态与状态转换图 158
8.4 定义服务 158
8.3.4 属性的命名和定位 158
8.3.5 属性的详细说明 158
8.4.2 行为分类 160
8.4.4 审查与调整 161
8.4.3 发现服务的策略与启发 161
8.4.7 服务的详细说明 162
8.4.6 服务的命名和定位 162
8.4.5 认识对象的主动行为 162
8.6.1 电梯系统的属性描述 163
8.6 电梯例子 163
8.5 建立类图的特征层 163
8.6.2 电梯系统的服务定义 165
8.6.3 电梯系统的特征层 170
三、简答题 171
二、选择题 171
小结 171
综合练习八 171
一、填空题 171
9.1.1 整体-部分结构及其用途 172
9.1 整体-部分结构 172
第9章 定义结构与连接 172
9.1.2 表示法 174
9.1.4 审查与筛选 175
9.1.3 如何发现整体-部分结构 175
9.1.6 支持软件复用 176
9.1.5 简化对象的定义 176
9.1.7 整体-部分结构的进一步运用 177
9.2.1 一般-特殊结构及其用途 179
9.2 一般-特殊结构 179
9.1.8 调整对象层和属性层 179
9.2.3 如何发现一般-特殊结构 180
9.2.2 表示法 180
9.2.4 审查与调整 181
9.2.5 多继承及多态性问题 182
9.2.6 一般-特殊结构的简化 184
9.3.1 简单的实例连接 185
9.3 实例连接 185
9.2.7 调整对象层和特征层 185
9.3.2 复杂的实例连接及其表示 186
9.3.3 三元关联问题 188
9.3.4 如何建立实例连接 189
9.4.2 顺序系统中的消息 190
9.4.1 消息的定义 190
9.3.5 对象层、特征层的增补及实例连接说明 190
9.4 消息连接 190
9.4.3 并发系统中的消息 191
9.4.5 OOA对消息的表示——消息连接 194
9.4.4 消息对OOA的意义 194
9.5.2 建立控制线程之间的消息连接 196
9.5.1 建立控制线程内部的消息连接 196
9.5 如何建立消息连接 196
9.5.3 对象分布问题及其消息的影响 197
9.7.2 整体-部分关系 198
9.7.1 一般-特殊关系 198
9.6 消息的详细说明 198
9.7 电梯例子 198
小结 199
9.7.4 电梯控制系统的关系层 199
9.7.3 连接 199
三、简答题 200
二、选择题 200
综合练习九 200
一、填空题 200
10.1 从布什的面向对象升级到UML 201
第10章 面向对象方法的转换 201
10.2 对象模块化技术升级到UML 202
10.3 一般性的升级方式 203
10.4 模块化会议 204
二、选择题 206
一、填空题 206
小结 206
综合练习十 206
三、简答题 207
11.1.2 类型一致性原则 208
11.1.1 类与类型 208
第11章 面向对象设计原则 208
11.1 类型一致性与闭合行为 208
11.1.3 闭合行为原则 209
11.2.1 封装结构 210
11.2 封装与共生性 210
11.2.2 共生性 211
11.2.3 面向对象系统中共生性的滥用 213
11.3.1 对象类的领域 214
11.3 领域、依附集和内聚 214
11.2.4 共生性的术语 214
11.3.2 依附集 216
11.3.3 类的内聚:一个类和它的特性 218
11.4.2 错误的聚集 220
11.4.1 继承的滥用 220
11.4 继承与多态性的危险性 220
11.4.4 混淆类及其实例 221
11.4.3 倒置的层次结构 221
11.4.6 多态性的危险性 222
11.4.5 误用 222
11.5.1 一个类的状态空间和行为 224
11.5 状态空间和行为 224
11.5.4 状态空间的一个约束条件:类的不变式 225
11.5.3 子类的行为 225
11.5.2 子类的状态空间 225
11.5.5 前置条件和后置条件 226
11.5.6 类接口中支持的状态 227
11.5.7 类接口中支持的行为 228
二、选择题 229
一、填空题 229
11.5.8 类接口中操作的聚合 229
小结 229
综合练习十一 229
三、简答题 230
12.2.1 系统总体方案 231
12.2 相关技术问题 231
第12章 控制驱动部分的设计 231
12.1 什么是控制驱动部分 231
12.2.2 软件体系结构 232
12.2.3 分布式系统的体系结构风格 233
12.2.4 系统的并发性 236
12.3.2 确定系统分布方案 239
12.3.1 选择软件体系结构风格 239
12.3 如何设计控制驱动部分 239
12.3.3 识别控制流 243
12.3.4 用主动对象表示控制流 245
二、选择题 247
一、填空题 247
12.3.5 把控制驱动部分看作一个主题 247
小结 247
综合练习十二 247
三、简答题 248
13.1 构件的构成与表达方式 249
第13章 设计软件构件 249
13.2 构件与对象的相似性和区别 250
13.3.1 构件技术的概念及发展 251
13.3 构件技术简介 251
13.3.2 当前的三种构件标准规范 252
13.3.3 三种分布式构件的比较分析 254
13.4.1 构件的大小 255
13.4 构件的大小与分类 255
13.4.2 构件的分类 256
13.5 如何用好构件 256
13.5.1 原则 257
13.5.2 过程 258
13.5.3 Java应用构件平台 259
13.6.2 构件的缺点 260
13.6.1 构件的优点 260
13.6 构件的优点和缺点 260
一、填空题 261
综合练习十三 261
小结 261
三、简答题 262
二、选择题 262
14.1.1 从分析和系统结构着手 263
14.1 对象设计综述 263
第14章 对象设计 263
14.2 组合三种模型 264
14.1.3 对象模型工具 264
14.1.2 对象设计的步骤 264
14.3.1 选择算法 265
14.3 设计算法 265
14.3.3 定义内部类和操作 267
14.3.2 选择数据结构 267
14.4 设计优化 268
14.3.4 指定操作的职责 268
14.4.1 添加冗余关联获取有效访问 269
14.4.3 保存导出属性避免重复计算 270
14.4.2 重新安排执行次序以获得效率 270
14.5.1 在程序内进行状态设置 271
14.5 控制实现 271
14.6.1 重新安排类和操作 272
14.6 继承的调整 272
14.5.2 状态机器引擎 272
14.5.3 控制作为并发任务 272
14.6.2 抽象出公共的行为 273
14.6.3 使用授权共享实现 274
14.7.2 单向关联 275
14.7.1 分析关联遍历 275
14.7 关联设计 275
14.7.4 链接属性 276
14.7.3 双向关联 276
14.9 物理打包 277
14.8 对象的表示 277
14.9.2 实体的相关性 278
14.9.1 信息隐藏 278
14.10 设计决策文档 279
14.9.3 构造模块 279
二、选择题 280
一、填空题 280
小结 280
综合练习十四 280
三、简答题 281
15.1 数据管理系统及其选择 282
第15章 数据库及其接口设计 282
15.2 数据库系统 289
15.2.1 面向对象技术 293
15.2.2 面向对象数据库的应用 295
15.2.3 应用程序设计程序 296
15.3 技术整合 297
15.2.4 面向对象数据库的最佳化 297
15.4 数据接口 298
15.5.1 针对文件系统的设计 300
15.5 对象存储方案和数据接口的设计策略 300
15.5.2 针对RDBMS的设计 304
一、填空题 313
综合练习十五 313
15.5.3 使用OODBMS 313
小结 313
三、简答题 314
二、选择题 314
16.2 人机交互部分的需求分析 315
16.1 什么是人机交互部分 315
第16章 人机交互部分的设计 315
16.2.2 从Use Case分析人机交互 316
16.2.1 分析活动者——与系统交互的人 316
16.2.3 分析处理异常事件的人机交互 319
16.2.4 命令的组织 320
16.2.5 输出信息的组织结构 323
16.2.6 总结与讨论 324
16.3 人机界面的设计准则 325
16.4.1 界面支持系统 326
16.4 人机界面(OO)设计 326
16.4.2 界面元素 327
16.4.3 设计过程与策略 328
16.5.2 设计的必要性 332
16.5.1 问题的提出 332
16.5 可视化编程环境下的人机界面设计 332
16.5.3 基于可视化编程环境的设计策略 334
小结 336
三、简答题 337
二、选择题 337
综合练习十六 337
一、填空题 337
17.1.2 Jackson方法 338
17.1.1 结构化方法 338
第17章 面向对象分析与软件复用 338
17.1 软件开发方法 338
17.1.3 维也纳开发方法 339
17.2.1 软件复用的层次 340
17.2 软件复用 340
17.1.4 面向对象方法 340
17.3.1 OMT的三大模型 341
17.3 对象模型化技术 341
17.2.2 软件复用所遭遇的问题 341
17.3.4 组件技术 343
17.3.3 抽象类技术 343
17.3.2 基本结构技术 343
17.4.1 UML的发展 344
17.4 统一建模语言(UML) 344
17.3.5 设计样板技术 344
17.4.2 统一建模语言(UML)的内容 345
17.5 面向对象技术的新应用 347
17.4.4 统一建模语言(UML)的应用领域 347
17.4.3 统一建模语言(UML)的主要特点 347
17.5.1 可重用软件组件 348
17.5.2 分布式对象中间件 350
17.5.3 并发面向对象技术 351
17.5.4 基于面向对象技术的应用软件体系结构 352
17.6.2 分布式系统所应具有的体系结构 355
17.6.1 概述 355
17.6 面向对象的分布式开发系统 355
17.6.3 分布式系统的关键技术 357
17.6.4 分布式系统对开发流程的改进 360
三、简答题 361
二、选择题 361
小结 361
综合练习十七 361
一、填空题 361
18.1.1 实时系统简介 362
18.1 实时系统的简介及其分类 362
第18章 实时系统 362
18.2 实时系统的相关概念 363
18.1.2 实时系统的分类 363
18.2.3 任务与多任务 364
18.2.2 前后台系统 364
18.2.1 实时系统的概念 364
18.2.5 内核 366
18.2.4 共享资源与临界区 366
18.2.6 调度 368
18.2.7 同步 370
18.2.8 互斥 371
18.2.9 中断 376
18.3 实时系统与通用系统的区别 380
18.2.10 使用实时内核的优缺点 380
18.4.1 基本特征概述 381
18.4 多种实时系统的比较 381
18.4.3 调度策略分析 382
18.4.2 体系结构异同 382
18.4.4 系统开放性对比 383
18.4.5 系统服务比较 384
18.5 实时系统与面向对象 385
三、简答题 386
二、选择题 386
小结 386
综合练习十八 386
一、填空题 386
19.1.1 模糊理论简介 387
19.1 模糊集合理论 387
第19章 模糊面向对象数据模型 387
19.1.2 模糊集合及逻辑 388
19.2 数据系统模型和结构 390
19.2.1 层次模型 391
19.2.2 网状模型 392
19.2.3 关系模型 393
19.3.1 模糊网状数据模型 394
19.3 模糊数据模型 394
19.3.2 模糊层次数据模型 397
19.3.3 模糊实体-联系数据模型 398
19.3.4 模糊关系数据模型 400
19.3.5 面向对象的模糊数据模型 407
19.4.1 语言的模糊模型 411
19.4 模糊数据库语言 411
19.4.2 面向对象的模糊数据库语言 412
一、填空题 414
综合练习十九 414
小结 414
三、简答题 415
二、选择题 415
参考文献 416