目录
目  录

译者序

前言

引言

第一部分 面向对象开发的根本

第1章 历史的视角 2

1.1 历史 2

1.2 结构化开发 3

1.3 宝贵教训 8

1.3.1 全局数据 9

1.3.2 巨程序单元 9

1.3.3 软件结构 10

1.3.4 缺乏内聚性 10

1.3.5 耦合 10

1.4 技术革新 12

1.4.1 图灵机 13

1.4.2 语言和方法学 13

1.4.3 集合和图 16

1.4.4 范式 16

1.4.5 数据流 18

1.4.6 状态机 20

第2章 对象技术 22

2.1 基本理念 22

2.1.1 可维护性 22

2.1.2 问题域抽象 23

2.1.3 OOA、OOD和OOP 24

2.1.4 主题 25

2.1.5 关注点分离 26

2.1.6 抽象层次 26

2.1.7 问题域抽象 28

2.1.8 封装 29

2.1.9 内聚性 29

2.1.10 逻辑不可分性 30

2.1.11 通信模型 31

2.2 广度优先处理(又称对等协作) 32

2.2.1 细化与转化 33

2.2.2 消息范式 35

2.2.3 对象特征 36

第3章 泛化、继承、泛型和多态 39

3.1 泛化 39

3.2 继承 42

3.3 多态 42

3.4 泛型 45

第4章 MBD路线图 46

4.1 问题域和计算域 46

4.1.1 问题域 48

4.1.2 计算域 49

4.1.3 转换 50

4.2 可维护性 50

4.2.1 领域分析 50

4.2.2 不变量建模 51

4.2.3 应用分区 52

4.2.4 静态视图 52

4.2.5 动态视图 52

第5章 不变量建模 55

5.1 什么是不变量建模 55

5.1.1 不变量 56

5.1.2 数据 57

5.2 好处 58

5.3 例子 60

5.3.1 银行ATM软件 60

5.3.2 硬件接口 64

5.3.3 折旧 67

5.3.4 远程POS输入示例 72

第6章 应用分区 76

6.1 为什么我们要关注 76

6.2 应用分区的基本概念 77

6.2.1 主题 79

6.2.2 客户端/服务关系 82

6.2.3 抽象层次 84

6.2.4 接口 85

6.3 识别子系统 86

6.3.1 将相同的实体抽象为其他子系统时,当前子系统是否存在不同的视角 86

6.3.2 是否存在客户端/服务的关系 86

6.3.3 服务是否比客户端更加详细 87

6.3.4 是否与其他子系统知识共享 87

6.3.5 是否与其他子系统行为共享 87

6.3.6 主题是否内聚 87

6.3.7 边界定义是否清晰 88

6.3.8 能否重用 88

6.3.9 是否被分布式网络环境绑定 88

6.3.10 是否针对不同的问题域 88

6.4 桥 89

6.4.1 消息范式,又是消息范式 89

6.4.2 桥模型 91

6.5 描述子系统 92

6.5.1 子系统描述 93

6.5.2 关系描述 94

6.5.3 需求分配 94

6.6 一个例子:宠物保健中心 94

6.7 过程 106

第二部分 静?态?模?型

第7章 第二部分路线图 112

7.1 什么是静态模型 113

7.2 知识和行为 114

7.3 实用的注释 115

第8章 类 117

8.1 抽象表示 117

8.1.1 为真实的东西建模 118

8.1.2 局限于子系统或组件中 119

8.1.3 逻辑不可分性 119

8.1.4 委托 120

8.2 类表示法 121

8.3 识别类及其职责 122

8.3.1 对象“突击” 123

8.3.2 用例变异 124

8.4 例子 125

8.4.1 传奇的银行ATM控制器 125

8.4.2 宠物保健中心:处置 131

8.5 使用序列图和协作图 134

第9章 类的职责 137

9.1 属性:一个类对象应该知道什么 137

9.1.1 定义和表示法 137

9.1.2 与数据存储不同 138

9.1.3 状态 139

9.1.4 抽象数据类型 140

9.2 操作和方法:对象必须做什么 142

9.2.1 定义和表示法 142

9.2.2 识别行为 144

9.2.3 拟人化 148

9.3 过程 149

9.4 例子 150

9.4.1 ATM 150

9.4.2 宠物保健中心:处置 158

第10章 关联 165

10.1 定义与基础 165

10.2 表示法 170

10.3 逻辑连接的性质 172

10.3.1 导航到知识与导航到行为 173

10.3.2 关联角色 174

10.3.3 关联路径 175

10.4 条件性 178

10.5 多重性 182

10.5.1 使用“一个”模型替换问题域的“一个或更多个”模型 183

10.5.2 为问题域关联提供二次关联 184

10.5.3 选择和参与 185

10.6 约束 187

10.7 关联类 189

10.8 识别关联 192

10.9 例子 195

10.9.1 ATM控制器 195

10.9.2 宠物保健中心:处置 198

第11章 引用完整性和知识完整性 200

11.1 知识完整性 200

11.1.1 及时性 201

11.1.2 一致性 201

11.1.3 快照和实时访问 202

11.1.4 依赖属性 202

11.1.5 属性标准化 204

11.2 引用完整性 207

11.2.1 标识与引用属性 207

11.2.2 关联循环 209

11.2.3 关系和面向对象范式:完全不同 211

第12章 泛化归来 213

12.1 子类化 213

12.1.1 表示法和规则 215

12.1.2 泛化和特定化 216

12.1.3 分类 219

12.1.4 包含多态 223

12.1.5 为什么是{相交,完整}的子集 225

12.2 多方向子类、多重继承与组合 227

12.3 泛化的备选 235

12.3.1 委托 236

12.3.2 参数多态 238

12.3.3 基本抽象 238

第13章 识别知识 239

13.1 面向对象知识的性质是什么 239

13.2 抽象聚合 241

13.3 挑选适合的抽象 245

13.3.1 抽象人们做什么 246

13.3.2 潜在实体知道哪些 247

13.3.3 对象抽象应当知道哪些实体知识的子集 248

13.3.4 主题是什么 248

13.3.5 抽象层次是什么 251

13.4 抽象是否需要结合实体知识 252

第三部分 动?态?模?型

第14章 第三部分路线图 258

14.1 第三部分路线图 258

14.1.1 一切都关乎行为 259

14.1.2 对象生命周期 261

14.1.3 异步解决方案 262

14.1.4 同步服务 266

14.2 动作语言 269

14.3 Mealy机、Moore机和Harel机 270

14.4 学习曲线 272

第15章 有限状态机 273

15.1 基本的有限状态自动机 273

15.1.1 表示法 277

15.1.2 契约设计的作用 280

15.2 寻找状态机 283

15.2.1 知识和行为 283

15.2.2 管理序列 286

15.3 一些例子 295

15.3.1 车库门遥控器 295

15.3.2 自动家庭厨房 297

15.3.3 空中交通管制系统 297

15.3.4 岩石 298

第16章 状态、转换、事件和动作 300

16.1 状态 300

16.2 转换 305

16.3 事件 306

16.4 动作 309

16.5 执行模型 311

16.6 命名约定 313

第17章 开发状态模型 316

17.1 设计状态机 316

17.2 例子 325

17.2.1 ATM控制器:字符显示 326

17.2.2 ATM控制器:调度器 331

17.2.3 ATM控制器:存款 340

第18章 抽象动作语言 344

18.1 AAL和ADFD 345

18.2 AAL语法 346

18.3 例子 348

18.3.1 车库门遥控器 348

18.3.2 ATM:字符显示 351

术语表 354


按 Ctrl+p 打印本页】【关闭