《面向对象分析和设计》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:宛延闿,定海编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2001
  • ISBN:7302012717
  • 页数:450 页
图书介绍:本书介绍了基本的与编程无关的面向对象高层概念和OMT技术表示法,软件开发的面向对象方法学,不同开发环境中面向对象设计的实现等内容。

序言 1

第1章 引言 1

1.1 面向对象的概念 1

前言页 1

1.1.1 对象的特性 2

1.2 面向对象开发的概念 4

1.2.1 面向对象的思维 4

1.2.2 面向对象方法学 4

1.2.3 三种模型 6

1.2.4 功能方法学上的差异 6

1.3 面向对象技术要点 6

1.3.1 抽象 7

1.3.2 封装 7

1.3.4 共享 8

1.3.5 重点在对象结构,不是在过程结构 8

1.3.3 数据和行为的联合 8

1.3.6 协同作用 9

1.4 面向对象开发的可用性例证 9

1.5 面向对象方法的要点和主要优点 10

1.6 本书组织 11

练习 12

第一部分 建模概念 17

第2章 一种设计技术的建模 17

2.1 建模 17

2.1.1 使用模型的目的 17

2.1.2 抽象 18

2.2 对象模型技术 18

2.2.1 对象模型 19

2.2.2 动态模型 19

2.2.3 功能模型 19

练习 20

2.2.4 三种模型的联系 20

2.3 小结 20

第3章 对象模型 23

3.1 对象和类 23

3.1.1 对象 23

3.1.2 类 24

3.1.3 对象图 24

3.1.4 属性 25

3.1.5 操作和方法 26

3.1.6 对象类的表示小结 27

3.1.7 对象和类的OMT表示的改进 27

3.1.8 改进的对象和类的表示小结 29

3.2 链接和关联 30

3.2.1 一般概念 30

3.2.2 重数 32

3.3.1 链接属性 33

3.2.3 关联的重要性 33

3.3 高级链接和关联概念 33

3.3.2 用关联模型化为类 35

3.3.3 角色名 35

3.3.4 排序 36

3.3.5 资格符 36

3.3.6 聚合 37

3.4 概括和继承 38

3.4.1 一般概念 38

3.4.2 概括的使用 40

3.4.3 重写特征 40

3.5 构造分组 40

3.5.1 模块 40

3.6 对象模型的一个实例 41

3.5.2 表 41

3.7 OMT对象模型在链接和关联方面的改进 43

3.8 实践的技巧 45

3.9 小结 46

练习 47

第4章 高级对象模型 55

4.1 对象和类的概念 55

4.1.1 例化 55

4.1.2 类属性和操作 55

4.1.3 属性的重数 56

4.1.4 类的候选关键字 56

4.1.5 域 57

4.1.6 数据的辅助特征 58

4.2 链接和关联的概念 59

4.2.1 重数 59

4.2.3 关联的候选关键字 60

4.2.2 三元关联 60

4.2.4 异或关联 61

4.2.5 资格关联 61

4.3 聚合 62

4.3.1 聚合与关联 62

4.3.2 聚合与概括 63

4.3.3 递归聚合 63

4.3.4 操作的传播 64

4.3.5 物理聚合与分类聚合 65

4.3.6 物理聚合的语义扩展 66

4.3.7 分类聚合的语义扩展 66

4.4 概括 67

4.4.1 抽象类和具体类 67

4.4.2 概括与其他对象建模结构 67

4.5.2 无公共祖先的多重继承 69

4.5 多重继承 69

4.5.1 有不同鉴别器的多重继承 69

4.5.3 多重继承的工作环境 70

4.6 包 72

4.6.1 水平逻辑 73

4.6.2 包的实例 74

4.7 导出数据和约束 76

4.8 对象元模型 78

4.8.1 元数据和元模型 78

4.8.2 框架 82

4.8.3 模式 83

4.9 高级实践技巧 87

4.10 小结 88

练习 89

5.1 事件和状态 95

第5章 动态模型 95

5.1.1 事件 96

5.1.2 脚本和事件轨迹 97

5.1.3 状态 98

5.1.4 状态图 99

5.1.5 条件 100

5.2 操作 101

5.2.1 控制操作 101

5.2.2 操作的状态图小结 102

5.3 嵌套状态图 103

5.3.1 平状态图问题 103

5.3.2 嵌套状态图 103

5.3.3 状态概括 104

5.3.4 事件概括 105

5.4.1 聚合并发性 106

5.4 并发性 106

5.4.2 对象内部并发性 107

5.5 高级动态模型概念 107

5.5.1 进入和退出动作 107

5.5.2 内部动作 108

5.5.3 自动变迁 109

5.5.4 发送事件 109

5.5.5 并发活动的同步 110

5.6 动态模型的实例 111

5.7 对象模型和动态模型的关系 115

5.8 实践技巧 116

5.9 小结 116

练习 117

6.1 功能模型 123

第6章 功能模型 123

6.2 数据流图 124

6.2.1 处理 125

6.2.2 数据流 125

6.2.3 施动者 126

6.2.4 数据存储 126

6.2.5 嵌套数据流图 128

6.2.6 控制流 128

6.3 指定的操作 129

6.4 约束 131

6.5 数据库应用中的功能模型 131

6.5.1 伪码 132

6.5.2 ONN的伪码 133

6.5.3 ONN的构造 133

6.5.4 组合ONN构造 140

6.5.5 添加ONN特性 141

6.5.6 其他范型 143

6.5.7 实践技巧 145

6.6 功能模型的实例(飞行模拟机装置) 146

6.7 功能模型与对象模型和动态模型的关系 149

6.8 小结 150

练习 151

第二部分 设计方法学 157

第7章 方法学简介 157

7.1 OMT是一种软件工程方法学 157

7.2 OMT方法学 158

7.3 面向对象方法的深远影响 159

7.4 小结 159

练习 160

第8章 分析 161

8.1 分析综述 161

8.2 需求陈述 162

8.3 自动取款机例子 163

8.4 建立对象模型 164

8.4.1 找出对象类 165

8.4.2 筛选出正确的对象类 166

8.4.3 准备数据字典 168

8.4.4 确定关联 169

8.4.5 划分主题 172

8.4.6 确定属性 173

8.4.7 用继承性改进对象模型 175

8.4.8 反复修改对象模型 176

8.5 动态模型 177

8.5.1 编写脚本 178

8.5.2 用户界面 179

8.5.3 画事件轨迹图 179

8.5.4 画状态图 180

8.5.5 审查动态模型 183

8.6 功能模型 184

8.6.1 找出输入和输出值 184

8.6.2 建立数据流图 184

8.6.3 描述功能 186

8.6.4 找出对象之间的约束 186

8.6.5 指定优化规则 187

8.7 定义服务 187

8.7.1 常规行为 187

8.7.2 从事件导出的操作 187

8.7.3 与数据流图中处理框对应的操作 187

8.7.4 利用继承减少冗余操作 188

8.8 小结 188

练习 189

9.1 系统设计综述 197

第9章 系统设计 197

9.2 将系统划分为子系统 198

9.2.1 分层 199

9.2.2 分块 199

9.2.3 系统拓扑 200

9.3 识别并发性 200

9.3.1 识别固有并发性 200

9.3.2 定义并发任务 201

9.4 给子系统分配处理器和任务 201

9.4.1 估计硬件资源需求 201

9.4.2 硬件与软件之间的折衷 201

9.4.3 为任务指定处理器 202

9.4.4 确定物理连接 202

9.5 数据存储管理 203

9.5.1 使用数据库的优点 203

9.6 处理全局资源 204

9.5.2 使用数据库的缺点 204

9.7 选择软件控制实现 205

9.7.1 过程驱动系统 205

9.7.2 事件驱动系统 205

9.7.3 并发系统 206

9.7.4 内部控制 206

9.7.5 其他范型 206

9.8 处理边界条件 207

9.9 设置折衷的优先权 207

9.10 公共的体系结构框架 208

9.10.1 批处理变换 208

9.10.2 连续变换 209

9.10.3 交互式接口 210

9.10.5 实时系统 211

9.10.6 事务处理管理 211

9.10.4 动态模拟 211

9.11 ATM系统的结构 212

9.12 小结 213

练习 214

13.1 用程序设计语言实现 216

第10章 对象设计 220

10.1 对象设计综述 220

10.1.1 从分析和系统结构着手 220

10.1.2 对象设计的步骤 221

10.1.3 对象模型工具 221

10.2 组合三种模型 222

10.3 设计算法 223

10.3.1 选择算法 223

10.3.2 选择数据结构 225

10.3.3 定义内部类和操作 225

10.3.4 指定操作的职责 225

10.4 设计优化 226

10.4.1 添加冗余关联获取有效访问 226

10.4.2 重新安排执行次序以获得效率 228

10.4.3 保存导出属性避免重复计算 228

10.5 控制实现 229

10.5.1 在程序内进行状态设置 229

10.5.2 状态机器引擎 231

10.5.3 控制作为并发任务 231

16.6 继承的调整 231

10.6.1 重新安排类和操作 231

10.6.2 抽象出公共的行为 232

10.6.3 使用授权共享实现 233

10.7.1 分析关联遍历 234

10.7.2 单向关联 234

10.7 关联设计 234

10.7.3 双向关联 235

10.7.4 链接属性 235

10.8 对象的表示 236

10.9 物理打包 236

10.9.1 信息隐藏 237

10.9.2 实体的相关性 237

15.4.3 Smalltalk中的调用操作 238

10.9.3 构造模块 238

10.10 设计决策文档 238

10.11 小结 239

练习 240

第11章 方法学总结 245

11.1 分析 245

11.2 系统设计 246

11.3 对象设计 247

11.4 小结 248

练习 248

12.1 结构化分析/结构化设计(SA/SD) 250

第12章 方法学比较 250

12.1.1 SA/SD方法概述 250

12.1.2 与OMT方法学的比较 251

12.2 Jackson结构化开发方法 252

12.2.1 JSD方法概述 252

12.2.2 与OMT方法学的比较 253

12.3 信息建模的表示法 254

12.4 小结 256

练习 256

第13章 从设计到实现 261

第三部分 实现 261

13.2 用数据库系统实现 262

13.3 计算机的外部实现 263

13.4 第三部分概述 263

14.2 可重用性 264

14.1 面向对象程序设计风格 264

第14章 程序设计风格 264

14.2.1 可重用的类型 265

14.2.2 可重用准则 265

14.2.3 使用继承机制 266

14.3 提高可扩充性 267

14.4 提高健壮性 268

14.5 小结 268

练习 269

第15章 面向对象语言 273

15.1 把设计转换成实现 273

15.2 类定义 275

15.2.1 C?中的类定义 275

15.2.2 Eiffel中的类定义 276

15.2.3 Smalltalk中的类定义 277

15.3.1 C?中创建对象 278

15.3 创建对象 278

15.3.2 Eiffel中创建对象 280

15.3.3 Smalltalk中创建对象 280

15.4 调用操作 281

15.4.1 C?中的调用操作 281

15.4.2 Eiffel中的调用操作 282

15.5 使用继承机制 284

15.5.1 C?中使用继承 284

15.5.2 Eiffel中使用继承 286

15.5.3 Smalltalk中使用继承 287

15.6 实现关联 288

15.6.1 C?中实现的关联 289

15.6.2 Eeffel中实现的关联 292

15.6.3 Smalltalk中实现的关联 293

15.7 面向对象语言的特性 294

15.7.1 多重继承 295

15.7.2 类库 295

15.7.3 效率问题 295

15.7.4 强类型与弱类型 296

15.7.5 内存管理 296

15.7.6 封装 297

15.7.7 打包 298

15.7.8 开发环境 298

15.7.9 元数据 298

15.7.10 参数化类 299

15.7.11 断言和约束 299

15.7.12 数据的持久性 299

15.8.1 Smalltalk 300

15.8 面向对象语言的综述 300

15.8.2 C? 301

15.8.3 Eiffel 302

15.8.4 CLOS 302

15.8.5 面向对象数据库程序设计语言 303

15.8.6 面向对象语言比较 304

15.9 小结 305

练习 306

第16章 非面向对象语言 309

16.1 映像面向对象的概念 309

16.1.3 在Ada语言中的实现 310

16.1.4 在Fortran语言中的实现 310

16.1.5 其他语言 310

16.1.2 在C语言中的实现 310

16.1.1 图形编辑器的例子 310

16.2 把类转换成数据结构 311

16.2.1 把类转换成C结构说明 311

16.2.2 把类转换成Ada记录定义 311

16.2.3 把类转换成Fortran的数组 312

16.3.3 在Fortran中传送参数 313

16.3.2 在Ada中传送参数 313

16.3.1 在C中传送参数 313

16.3 传送参数到方法 313

16.4 分配对象 314

16.4.1 在C中分配对象 314

16.4.2 在Ada中分配对象 315

16.4.3 在Fortran中分配对象 315

16.5 实现继承 316

16.5.1 在C中实现继承 316

16.5.2 在Ada中实现继承 317

16.5.3 在Fortran中实现继承 318

16.6 实现方法分解 319

16.6.1 在C中的方法分解 320

16.6.2 在Ada中的方法分解 323

16.6.3 在Fortran中的方法分解 323

16.7 实现关联 324

16.7.1 在C中实现关联 325

16.7.2 在Ada中实现关联 326

16.7.3 在Fortran中实现关联 326

16.8 处理并发 327

16.9 封装 328

16.9.1 在C中的封装 328

16.9.2 在Ada中的封装 328

16.10 你得到了什么 330

16.11 小结 330

16.9.3 在Fortran中的封装 330

练习 331

第17章 关系数据库 333

17.1 一般的DBMS概念 333

17.2 关系DBMS概念 335

17.2.1 RDBMS逻辑数据结构 335

17.2.2 RDBMS操作符 336

17.2.3 RDBMS完整性 336

17.2.4 范式 337

17.2.5 视图 339

17.3 关系数据库设计 339

17.3.1 为对象模型扩充三级模式体系结构 339

17.3.2 对象ID的使用 340

17.3.3 将对象类映像到表格 341

17.3.4 将二元关联映像到表格 342

17.3.5 将三元关联映像到表格 345

17.3.6 将概括映像到表格 346

17.3.7 对象械型映像到表格的规则小结 349

17.3.8 映像对象模型到表格的其他方法 350

17.4 高级关系DBMS 350

17.5 小结 351

练习 352

第四部分 应用 357

第18章 对象图编译 357

18.1 问题叙述 358

18.1.1 编译输入 358

18.1.2 编译输出 359

18.1.3 多方面需求 360

18.2.1 分析图形编辑器语言 361

18.2.2 几何对象模型 361

18.2 分析 361

18.2.3 抽取连接 362

18.2.4 连接对象模型 362

18.2.5 抽象BOM实体 364

18.2.6 内部元对象模型 364

18.2.7 产生数据库命令 365

18.3 系统设计 365

18.4 对象设计 366

18.4.1 功能模型 366

18.4.2 中间对象模型 366

18.4.3 连接算法 367

18.5 实现 368

18.6 经验点滴 369

18.7 小结 369

练习 370

19.1 背景 372

第19章 计算机动画 372

19.2 问题叙述 374

19.3 分析 375

19.3.1 对象模型 375

19.3.2 动态模型 377

19.3.3 功能模型 378

19.4 系统设计 378

19.4.1 子系统 378

19.4.2 一致性和控制 379

19.4.3 数据格式 379

19.4.4 折衷 379

19.5 对象设计 380

19.5.1 演体 380

19.5.2 提示 380

19.5.3 场景 380

19.5.4 渲染 381

19.6 实现 382

19.7 经验点滴 384

19.8 小结 384

练习 385

第20章 电力分布式设计系统 386

20.1 背景 386

20.2 问题叙述 387

20.2.1 功能需求 387

20.2.2 体系结构要求 388

20.3 分析 389

20.3.1 对象模型 389

20.3.2 动态模型 392

20.3.3 功能模型 393

20.4 系统设计 395

20.5.1 状态树控制 396

20.5 对象设计 396

20.5.3 辅助树 397

20.5.4 低层操作 397

20.5.2 主树 397

20.6 实现 398

20.7 小结 398

练习 399

第21章 逆向工程 402

21.1 概述 402

21.1.1 再造工程 402

21.1.2 数据库逆向工程的原动力 403

21.2 层次数据库 404

21.2.1 概念 404

21.2.2 逆向工程处理 405

21.2.3 例子 407

21.3.1 概念 409

21.3 网状数据库 409

21.3.2 逆向工程处理 410

21.3.3 例子 411

21.4 关系数据库 414

21.4.1 概念 414

21.4.2 逆向工程处理 415

21.4.3 例子 417

21.5 小结 420

练习 420

附录1 民航航班预订系统对象模型图 421

附录2 ONN的BNF语法 422

附录3 对象模型技术OMT图形表示 424

部分练习答案 428

参考文献 450