UML and C++: A Practical Guide to Object-Oriented Development

副标题:无

作   者:(美)Richard C. Lee,(美)William M. Tepfenhart著;麻志毅,蒋严冰译

分类号:

ISBN:9787111105787

微信扫一扫,移动浏览光盘

简介

面向对象技术实践丛书。 面向对象技术是20世纪90年代对软件的最大发展,它不但改变了建构软件的方式,也改变了设计的方式,而C++则实现了面向对象的主要机制。因此,本书将面向对象技术与C++相结合,并使用UML这一可视化描述的建模语言进行表述。本书的目标是:通过应用面向对象技术和方法的基本原理来指导读者在使用C++开发软件和编程时适当考虑使用合适的面向对象的概念和良好的设计原则。 本书还附有两个完整的实践案例,在案例中,使用特定的面向对象技术,并应用面向对象的基本概念就一个项目的面向对象分析、设计和编程的各个阶段展开读者讨论,详细阐述了如何使用C++根据设计的模型进行编程,同时使读者深入地掌握和理解面向对象技术的应用。

目录

译者序

第2版序言

第1版序言

第1章 信息管理的困境 1

1.1 问题的提出 1

1.2 什么是客户想要的 3

1.3 为什么面向对象对开发者是重要的 4

1.4 小结 5

第2章 管理复杂性:分析和设计 6

2.1 抽象机制 7

2.1.1 函数 7

2.1.2 模块 8

2.1.3 抽象数据类型 9

2.2 类/对象 9

2.2.1 消息传递 9

2.2.2 泛化/特化和多态 10

2.3 其他的关系 10

2.3.1 关联 10

2.3.2 聚合 12

2.4 行为 12

.2.4.1 静态行为 13

2.4.2 动态行为 13

2.5 规则 15

2.6 复杂系统 16

2.7 小结 16

第3章 面向对象的编程 18

3.1 什么是面向对象的编程 18

3.1.1 不是银弹 18

3.1.2 一种高级的范型 18

3.2 基本的面向对象编程概念 19

3.3 面向对象编程语言 22

3.3.1 基于对象的编程 22

3.3.2 基于类的编程 22

3.3.3 面向对象的编程 23

3.3.4 高级面向对象的编程 23

3.3.5 前沿面向对象的编程 23

3.4 为什么选c++ 23

3.5 组织现实的方式 24

3.6 计算的模拟模型 25

3.7 组织现实的面向对象方式 26

3.8 小结 30

第4章 限定问题域 32

4.1 用况介绍 32

4.1.1 系统 33

4.1.2 参与者 33

4.1.3 用况 34

4.1.4 用况包 38

4.2 建立用况文档 39

4.2.1 用况图 39

4.2.2 顺序图:建立细节文档 41

4.2.3 文本描述 41

4.3 开发用况的准则 42

4.3.1 避免分析瘫痪 42

4.3.2 识别参与者 43

4.3.3 识别高层用况和本质用况 44

4.3.4 建立用况包 45

4.3.5 开发用况细节 46

4.3.6 识别支持用况 47

4.3.7 开发边界用况 48

4.4 契约 48

4.5 推荐的方法 49

4.6 小结 56

第5章 寻找对象 57

5.1 面向对象的分析:应用域的模型 57

5.2 构造面向对象模型 58

5.3 识别对象 58

5.4 目前的技术 60

5.4.1 使用将被建模的事物 60

5.4.2 使用对象和类的定义 60

5.4.3 使用对象分解 61

5.4.4 使用概括 61

5.4.5 使用子类 61

5.4.6 使用面向对象的领域分析 62

5.4.7 复用应用框架 62

5.4.8 复用类层次 62

5.4.9 复用个体对象和类 63

5.4.10 使用子部件 63

5.4.11 使用个人经验 63

5.5 传统的技术 64

5.5.1 使用名词 64

5.5.2 使用传统的数据流图 65

5.5.3 使用类-责任-协作

(crc)卡片 66

5.6 推荐的方法 67

5.7 小结 69

第6章 识别责任 71

6.1 什么是对象 71

6.2 什么是属性 72

6.2.1 描述性属性 72

6.2.2 命名属性 72

6.3 什么是服务 73

6.4 什么是方法 73

6.5 识别属性 73

6.6 描述属性 75

6.7 识别服务 76

6.8 描述服务 77

6.9 推荐的方法 77

6.10 小结 80

第7章 描述静态行为 81

7.1 什么是行为 81

7.2 描述静态行为的技术 82

7.3 描述控制的技术 83

7.4 建立控制文档的技术 84

7.4.1 活动图 84

7.4.2 协作图 85

7.4.3 顺序图 86

7.5 建立静态行为文档的技术 86

7.5.1 前置条件和后置条件 86

7.5.2 流程图 86

7.5.3 数据流图 87

7.5.4 结构化英语 87

7.6 推荐的方法 88

7.7 小结 92

第8章 动态行为 93

8.1 介绍 93

8.2 识别动态行为的技术 94

8.2.1 一般的生存周期形式 95

8.2.2 捕获生存周期的模型 96

8.3 识别事件和描述事件 97

8.3.1 用况和场景 97

8.3.2 顺序图 98

8.3.3 例子 98

8.4 描述动态行为 102

8.4.1 事件列表 102

8.4.2 状态转换表 103

8.5 建立动态行为的文档 106

8.6 推荐的方法 111

8.7 小结 111

第9章 识别关系 112

9.1 访问另一个对象的服务 112

9.2 关系 112

9.3 泛化 113

9.4 识别并描述泛化/特化 115

9.5 对象聚合 116

9.6 聚合的分类 117

9.6.1 组装-部分(整体-成分组合) 118

9.6.2 材料-对象组合 118

9.6.3 划分-对象组合 119

9.6.4 位置-区域组合 119

9.6.5 集合-成员组合 120

9.6.6 容器-容物(成员-束组合) 120

9.6.7 成员-合作组合 121

9.6.8 对象和聚合关系 121

9.7 对象之间的链 121

9.8 识别并描述链和聚合 123

9.9 管理关系 124

9.10 建立关系的文档 125

9.11 推荐的方法 126

9.12 小结 128

第10章 规则 129

10.1 介绍 129

10.2 规则 130

10.3 识别说明性描述 130

10.4 描述规则和建立规则文档 131

10.5 将规则映射为正确的oo概念 133

10.6 使用uml建立规则的文档 133

10.7 实现规则 134

10.8 推荐的方法 135

10.9 小结 135

第11章 模型 137

11.1 概念 137

11.2 概念和面向对象模型 138

11.2.1 类 138

11.2.2 关联 139

11.2.3 类聚合 139

11.2.4 泛化/特化 139

11.2.5 多态 140

11.2.6 实例化 141

11.3 使用uml建立概念的文档 141

11.3.1 类概念 141

11.3.2 关联 142

11.3.3 类聚合 143

11.3.4 泛化/特化 143

11.3.5 多态 144

11.3.6 实例化 144

11.4 精化模型 144

11.5 子系统 144

11.5.1 问题域 145

11.5.2 桥 145

11.6 组织子系统 146

11.6.1 横向分层 146

11.6.2 纵向划分 146

11.6.3 组合 146

11.7 识别子系统 147

11.8 建立子系统文档 147

11.9 推荐的方法 147

11.9.1 例子 148

11.9.2 精化 148

11.9.3 子系统 153

11.10 小结 154

第12章 设计 155

12.1 介绍 155

12.2 系统设计 156

12.2.1 子系统 156

12.2.2 体系结构框架 157

12.2.3 建立系统设计文档 158

12.3 详细设计 160

12.3.1 设计类 160

12.3.2 设计关联 161

12.3.3 泛化和继承 162

12.3.4 委托 163

12.3.5 orlando 条约 163

12.3.6 多继承 164

12.3.7 建立详细设计文档 166

12.4 小结 166

第13章 c++基础 167

13.1 历史 167

13.2 编程元素 168

13.2.1 关键字 168

13.2.2 标识符 169

13.2.3 字面值 169

13.2.4 运算符 169

13.2.5 标点 170

13.3 固有数据类型 170

13.3.1 基本数据类型 171

13.3.2 常量值 171

13.3.3 符号变量 172

13.3.4 指针类型 172

13.3.5 常量类型 173

13.3.6 引用类型 173

13.3.7 枚举类型 174

13.3.8 数组类型 174

13.3.9 typedef定义的类型名 174

13.4 什么是语句 175

13.4.1 表达式 175

13.4.2 复合语句 175

13.5 语句流控制 176

13.5.1 if语句 176

13.5.2 for 语句 176

13.6 什么是函数 177

13.7 函数调用 178

13.7.1 函数定义 178

13.7.2 函数原型 179

13.7.3 内联 179

13.8 存储类 179

13.8.1 auto 180

13.8.2 extern 180

13.8.3 register 180

13.8.4 static 180

13.8.5 volatile 181

13.9 类型转换 181

13.9.1 static_cast 181

13.9.2 const_cast 182

13.9.3 dynamic_cast 182

13.9.4 reinterpret_cast 182

13.10 名字空间 183

13.11 推荐的方法 183

13.12 小结 184

第14章 类的实现 185

14.1 类的组成部分 185

14.2 类定义 185

14.3 类的体 186

14.3.1 可见性 186

14.3.2 数据成员 186

14.3.3 成员函数 187

14.4 使用继承的泛化 188

14.5 推荐的方法 189

14.6 小结 191

第15章 c++库 192

15.1 c标准库 192

15.1.1 [cassert] 193

15.1.2 [cctype] 193

15.1.3 [cerrno] 193

15.1.4 [cfloat] 193

15.1.5 [ciso646] 193

15.1.6 [climits] 193

15.1.7 [clocale] 193

15.1.8 [cmath] 193

15.1.9 [csetjmp] 193

15.1.10 [csignal] 193

15.1.11 [cstdarg] 194

15.1.12 [cstddef] 194

15.1.13 [cstdio] 194

15.1.14 [cstdlib] 194

15.1.15 [cstring] 194

15.1.16 [ctime] 195

15.1.17 [cwchar] 195

15.1.18 [cwctype] 195

15.2 c++类库 195

15.2.1 [bits] 195

15.2.2 [bitstring] 195

15.2.3 [complex] 195

15.2.4 [defines] 196

15.2.5 [dynarray] 196

15.2.6 [exceptions] 196

15.2.7 [fstream] 196

15.2.8 [iomanip] 196

15.2.9 [ios] 196

15.2.10 [iostream] 196

15.2.11 [istream] 198

15.2.12 [new] 198

15.2.13 [ostream] 198

15.2.14 [ptrdynarry] 198

15.2.15 [sstream] 198

15.2.16 [streambuf] 198

15.2.17 [string] 198

15.2.18 [strstream] 199

15.2.19 [typeinfo] 199

15.2.20 [wstring] 199

15.3 标准模板库 199

15.3.1 [algorithm] 200

15.3.2 [bitset] 200

15.3.3 [complex] 200

15.3.4 [deque] 200

15.3.5 [functional] 200

15.3.6 [iterator] 200

15.3.7 [list] 201

15.3.8 [map] 201

15.3.9 [memory] 205

15.3.10 [numerics] 205

15.3.11 [queue] 205

15.3.12 [set] 205

15.3.13 [stack] 207

15.3.14 [utility] 207

15.3.15 [valarray] 207

15.3.16 [vector] 207

15.4 推荐的方法 207

15.5 小结 207

第16章 实现静态行为 208

16.1 函数定义 208

16.1.1 返回类型 209

16.1.2 返回语句 209

16.1.3 函数参数表 210

16.2 传递参数 211

16.2.1 按值传递 211

16.2.2 引用或指针参数 212

16.3 返回类型为引用或指针 214

16.4 类型转换 215

16.5 常量和缺省 215

16.5.1 常量 215

16.5.2 缺省初始化程序 217

16.6 标识符作用域 217

16.7 推荐的方法 218

16.7.1 在.h文件中定义 218

16.7.2 在.c文件中定义 219

16.8 小结 220

第17章 实现动态行为 221

17.1 动态行为的元素 221

17.1.1 简单状态图 222

17.1.2 嵌套状态图 227

17.1.3 并发状态图 231

17.2 推荐的方法 232

17.3 小结 232

第18章 实例化和删除对象 233

18.1 介绍 233

18.2 构造器 233

18.3 析构器 235

18.4 正确地使用构造器和析构器 238

18.5 泛化和构造器 239

18.6 推荐的方法 239

18.6.1 创建对象 239

18.6.2 销毁对象 240

18.7 编码准则 241

18.7.1 构造器编码准则 241

18.7.2 析构器编码准则 242

18.8 小结 242

第19章 实现泛化/特化 243

19.1 继承 243

19.1.1 说明派生类 243

19.1.2 从派生类中继承和实现关联 245

19.1.3 增加多态 246

19.1.4 抽象类 248

19.2 多继承 250

19.3 虚析构器 255

19.4 派生类的可见性 256

19.5 小结 256

第20章 实现更多的关系 258

20.1 介绍 258

20.1.1 实现关联 258

20.1.2 实现关联的属性 259

20.1.3 实现聚合 259

20.2 指针 259

20.3 数组 260

20.4 友元 262

20.5 静态成员 262

20.6 实现关联 263

20.6.1 二元关联 263

20.6.2 多对一关联 264

20.6.3 多对多关联 266

20.7 实现友元 267

20.7.1 类作为友元 267

20.7.2 函数作为友元 267

20.7.3 用友元实现一对多关联 268

20.8 实现聚合 269

20.8.1 埋入指针 269

20.8.2 嵌入对象 270

20.9 实现静态成员 270

20.10 推荐的方法 272

20.11 小结 272

第21章 案例分析介绍 274

21.1 案例分析1:突围 274

21.1.1 需求 274

21.1.2 获取领域知识 275

21.1.3 专家的知识 276

21.1.4 所提供的技术服务 277

21.2 案例分析2:微波炉 280

21.2.1 问题定义 280

21.2.2 一般描述 280

第22章 案例分析:突围游戏 281

22.1 步骤1:发现对象 281

22.2 步骤2:识别责任 282

22.2.1 寻找形容词 282

22.2.2 问题1 282

22.2.3 问题2 287

22.2.4 问题 3 290

22.2.5 寻找服务 292

22.3 步骤3:描述行为 294

22.4 步骤4:描述关系 302

22.5 步骤5:精化 307

22.6 步骤6:设计 322

22.7 步骤7:实现 329

22.7.1 实现类 329

22.7.2 实现静态行为 340

22.7.3 对象实例化 342

22.7.4 实现继承 345

22.7.5 实现关系 362

第23章 案例分析:微波炉 370

23.1 用况 370

23.1.1 用况1:无中断的烹饪 371

23.1.2 用况2:取消烹饪 372

23.1.3 用况3:中断烹饪 373

23.2 解决方案1:设计控制器类 374

23.2.1 步骤1:发现对象 374

23.2.2 步骤2:识别责任 375

23.2.3 步骤3:描述行为 377

23.2.4 步骤4:描述关系 379

23.2.5 步骤5:精化 381

23.2.6 讨论 381

23.3 解决方案2:具有高耦合的

责任分配 381

23.3.1 步骤1:识别对象 381

23.3.2 步骤2:识别责任 382

23.3.3 步骤3:描述行为 383

23.3.4 步骤4:描述关系 385

23.3.5 步骤5:精化 385

23.3.6 讨论 387

23.4 解决方案3:使用观察者机制

分配责任 387

23.4.1 步骤5:精化 388

23.4.2 论讨 397

附录a 统一建模语言 398

参考文献 420

致谢 423

索引 427


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

UML and C++: A Practical Guide to Object-Oriented Development
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon