当前位置:首页 > 工业技术
道法自然  面向对象实践指南
道法自然  面向对象实践指南

道法自然 面向对象实践指南PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:王咏武,王咏刚著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2004
  • ISBN:7121002264
  • 页数:432 页
图书介绍:本书是一本试图用实战案例阐释面向对象技术体系的指南。本书共分19章,通过实际的开发案例——FishGUI项目为主线依次介绍了需求和用例分析、面向对象分析、架构分析、面向对象设计、设计模式、编码技巧等几个主要的技术领域,并基本按照时间顺序,描述了FishGUI系统设计和实现的全过程。如果把面向对象大师们偏重理论建构的经典读物称为面向对象盛宴的主菜,那么,这本指南若能充当佐餐的凉菜或是饭后的甜点,作者就心满意足了。本书适合所有在软件开发领域辛勤工作的开发人员、管理人员、系统分析人员、测试人员、技术支持人员等阅读。
《道法自然 面向对象实践指南》目录

第1章 需求分析:追求完美vs.容忍缺陷 1

1.1 开发日记:2003年11月6日,星期四 1

1.2 鱼和熊掌 4

1.3 项目目标和项目范围 6

1.3.1 项目目标 6

1.3.2 项目范围 7

1.4 需求分析的基本概念 8

1.4.1 什么是需求 8

1.4.2 功能性需求和非功能性需求 8

1.4.3 项目干系人 9

1.4.4 需求分析 10

1.5 FishGUI的需求分析 11

1.5.1 小A的错误 11

1.5.2 正确的需求分析方法 15

1.6 变化的需求 22

1.6.1 需求变更的原因和对策 22

1.6.2 FishGUI项目的需求变化 22

1.7 总结 24

第2章 用例分析:海底总动员vs.云中漫步 25

2.1 开发日记:2003年11月10日,星期一 25

2.2 为什么使用UML 26

2.3 用例模型 27

2.3.1 什么是用例模型 27

2.3.2 场景 28

2.3.3 用例模型的应用价值 28

2.4 用例建模 30

2.4.1 确定系统边界和参与者 31

7.2.4 聚合的粒度 1 32

2.4.2 确定用例级别 33

2.4.3 FishGUI的用例建模 37

2.5 总结 42

第3章 设计方法:面向过程vs.面向对象 43

3.1 开发日记:2003年11月13日,星期四 43

3.2 面向过程的方法适合FishGUI吗 46

3.3 如何衡量软件的设计质量 47

3.4 面向对象的设计方法 48

3.4.1 关于面向对象的两种误解 48

3.4.2 面向对象的基本概念 51

3.4.3 面向对象的基本原则 55

3.4.4 面向对象的开发过程 58

3.5 框架和类库 58

3.5.1 框架和类库的区别 59

3.5.2 框架的分类 59

3.6.1 瀑布模型 60

3.6 软件生命周期模型 60

3.6.2 迭代模型 61

3.6.3 瀑布模型和迭代模型的比较 62

3.7 总结 64

第4章 模式:变化之美vs.永恒之道 65

4.1 开发日记:2003年11月14日,星期五 65

4.2 模式 66

4.2.1 模式的起源 66

4.2.2 模式的概念 67

4.3.1 如何学习和实践设计模式 68

4.3 设计模式 68

4.2.3 模式的分类 68

4.3.2 蕴涵在设计模式中的设计原则和理念 69

4.3.3 设计模式最根本的意图是适应需求变化 70

4.3.4 针对接口编程,而不要针对实现编程 73

4.3.5 优先使用聚合,而不是继承 77

4.3.6 设计模式的分类 79

4.3.7 设计模式的意图和设计要点 80

4.3.8 设计模式中的简单和复杂 82

4.4 总结 83

5.1 开发日记:2003年11月17日,星期一 84

第5章 分析模型:实体类vs.软件类 84

5.2 面向对象的思维方式 85

5.3.1 面向对象分析与面向对象设计的区别 86

5.3 面向对象分析 86

5.3.2 实体类和软件类 89

5.3.3 用例驱动的面向对象分析工作 92

5.4 FishGUI的分析模型 92

5.4.1 提取实体对象和实体类 92

5.4.3 提取关系 96

5.4.2 提取属性 96

5.4.4 添加边界类 97

5.4.5 添加控制类 99

5.4.6 绘制类图 99

5.4.7 绘制顺序图 100

5.4.8 变化的需求——快捷键表 101

5.4.9 编制术语表 103

5.5 总结 104

第6章 架构分析:功能分解vs.对象分析 105

6.1 开发日记:2003年11月20日,星期四 105

6.2 架构分析的基本概念 106

6.2.1 什么是架构分析 106

6.2.2 架构分析的作用 107

6.2.3 避免走入功能分解的误区 107

6.2.4 软件系统的类型和规模 108

6.2.5 以架构为中心 108

6.2.6 架构模式 109

6.3 FishGUI系统的架构分析 110

6.3.1 分层模式 110

6.3.2 FishGUI的分层架构 113

6.3.3 模型—视图—控制器(MVC)模式 114

6.3.4 应用层的MVC模式 116

6.3.5 子系统设计 117

6.3.6 FishGUI的子系统设计 119

6.4 总结 123

第7章 面向对象设计:共性vs.个性 124

7.1 开发日记:2003年11月24日,星期一 124

7.2 对象和类的粒度 125

7.2.1 CPU难题 125

7.2.2 继承的粒度 129

7.2.3 多重继承 130

7.2.5 纯粹为代码复用而存在的设计方案 133

7.2.6 类结构的重构 134

7.3 FishGUI的面向对象设计 136

7.3.1 面向对象设计的工作步骤 136

7.3.2 细化和重组类 136

7.3.3 细化和实现类间关系,明确其可见性 138

7.3.4 增加遗漏的属性,指定属性的类型和可见性 144

7.3.5 分配职责,定义执行每个职责的方法 146

7.3.6 消息驱动的系统,明确消息传递方式 154

7.3.7 利用设计模式进行局部设计 157

7.3.8 画出详细的顺序图或协作图 158

7.4 总结 159

第8章 外观模式:统一接口vs.暴露细节 160

8.1 开发日记:2003年12月1日,星期一 160

8.2 什么是接口 161

8.2.1 Java语言中的接口 161

8.2.2 C++语言的接口 162

8.3 外观(Facade)模式 164

8.3.2 基本结构 165

8.3.1 设计意图 165

8.4 FishGUI适配器子系统的外观模式实现 166

8.4.1 适配器子系统的详细设计 166

8.4.2 适配器子系统的移植 167

8.4.3 外观类 168

8.5 总结 171

第9章 观察者模式:间接依赖vs.直接依赖 172

9.1 开发日记:2003年12月2日,星期二 172

9.2 双向依赖 176

9.2.1 头文件的循环嵌套问题 176

9.2.2 包的双向依赖问题 178

9.3 观察者(Observer)模式 179

9.3.1 设计意图 179

9.3.2 基本结构 179

9.3.3 实现方法 181

9.4 FishGUI系统中的观察者模式 184

9.4.1 为什么采用观察者模式 184

9.4.2 FishGUI中观察者模式的实现方法 186

9.4.3 观察者模式的优点 188

9.5 总结 189

10.1 开发日记:2003年12月4日,星期四 190

第10章 单件模式:隐式全局变量vs.显式全局变量 190

10.2 关于历史问题的回顾 191

10.2.1 传统的思维方式 191

10.2.2 奇特的解决方案 192

10.2.3 麻烦事 193

10.3 全局变量——程序员心中永远的痛 194

10.4 单件(Sigleton)模式 195

10.4.1 设计意图 195

10.4.2 基本结构 195

10.4.3 实现方法 196

10.5 FishGUI中的单件模式 200

10.5.1 标准的单件类 200

10.5.2 单件类的内存释放 202

10.5.3 单件类的灵活运用 207

10.5.4 单件类的创建顺序 210

10.6 总结 214

第11章 复合模式:透明vs.安全 215

11.1 开发日记:2003年12月8日,星期一 215

11.2.2 对象图 217

11.2 类图和对象图 217

11.2.1 类图 217

11.3 继承树的透明和安全 218

11.3.1 透明的继承树 218

11.3.2 透明和职责分配的冲突 218

11.3.3 安全的类型转换 220

11.3.4 虚函数的声明方式 222

11.4 复合(Composite)模式 224

11.4.1 设计意图 224

11.4.2 基本结构 224

11.4.3 实现方法 225

11.5 FishGUI系统的复合模式 228

11.5.1 最透明的GUI复合模式 228

11.5.2 FishGUI中的最终实现 229

11.6 总结 231

第12章 迭代器模式:继承vs.模板 232

12.1 开发日记:2003年12月11日,星期四 232

12.2 关于protected的一个小问题 234

12.3 只实现一次,仅只一次 236

12.4 容器类 237

12.4.1 双向链表 237

12.4.2 单向链表 239

12.4.3 已知的问题 240

12.5 迭代器(Iterator)模式 241

12.5.1 设计意图 241

12.5.2 基本结构 241

12.5.3 实现方法 242

12.6 FishGUI中迭代器模式的具体实现 245

12.6.1 智能指针 246

12.6.2 模板的“静态多态性” 247

12.6.3 复用的算法实现 249

12.6.4 添加迭代器 250

12.7 迭代器遍历时的稳定性 251

12.8 总结 254

第13章 创建型模式:工厂方法vs.抽象工厂 255

13.1 开发日记:2003年12月15日,星期一 255

13.2 创建型模式 257

13.3 工厂方法(Factory Method)模式 258

13.3.1 设计意图 258

13.3.2 基本结构 259

13.3.3 实现方法 259

13.4.2 基本结构 260

13.4 抽象工厂(Abstract Factory)模式 260

13.4.1 设计意图 260

13.4.3 实现方法 261

13.5 FishGUI的创建型模式 262

13.5.1 工厂方法模式 262

13.5.2 抽象工厂模式 265

13.6 策略(Strategy)模式 268

13.6.1 设计意图 268

13.6.2 基本结构 268

13.7 FishGUI中抽象工厂模式和策略模式的组合 269

13.8 对象的创建和删除 271

13.9 总结 274

第14章 消息:广义消息vs.狭义消息 275

14.1 开发日记:2003年12月17日,星期三 275

14.2 消息的本质 277

14.2.1 广义消息和狭义消息 277

14.2.2 消息和回调函数 277

14.2.3 同步消息和异步消息 279

14.2.4 消息网 281

14.3 消息处理模式 282

14.4.3 实现方法 283

14.4.2 基本结构 283

14.4 命令(Command)模式 283

14.4.1 设计意图 283

14.5 中介者(Mediator)模式 285

14.5.1 设计意图 285

14.5.2 基本结构 285

14.5.3 实现方法 286

14.6 职责链(Chain of Responsiblity)模式 287

14.6.1 设计意图 287

14.6.3 实现方法 288

14.6.2 基本结构 288

14.7 观察者(Observer)模式 290

14.8 FishGUI的消息处理模式 290

14.8.1 职责链模式 290

14.8.2 对象树和继承树上的消息传递 291

14.8.3 职责链模式的具体实现 294

14.9 Java和.NET的消息处理模式 302

14.9.1 JDK 1.0 AWT的职责链模式 303

14.9.2 JDK 1.1 AWT的观察者模式 303

14.9.3 用多播方式发送消息 305

14.9.4 .NET基于委托的观察者模式 307

14.10 总结 318

第15章 模板方法模式:正向依赖vs.依赖倒置 319

15.1 开发日记:2003年12月23日,星期二 319

15.2 模板方法(Template Method)模式 321

15.2.1 设计意图 321

15.2.2 基本结构 321

15.2.3 实现方法 322

15.3.2 用模板方法模式进行重构 325

15.3.1 FG_Application类中的模板方法模式 325

15.3 FishGUI中的模板方法模式 325

15.3.3 基于模板方法模式实现的消息分发机制 326

15.4 总结 329

第16章 MFC消息映射表模式:虚函数vs.映射表 330

16.1 开发日记:2003年12月25日,星期四 330

16.2 虚函数表 331

16.3 MFC消息映射表(Message Map)模式 333

16.3.1 设计意图 333

16.3.2 实现方法 333

16.4.1 实现方法 339

16.4 FishGUI中的消息映射表模式 339

16.4.2 优点 345

16.4.3 缺陷 346

16.5 总结 347

第17章 适配器模式:类模式vs.对象模式 349

17.1 开发日记:2004年1月5日,星期一 349

17.2 类模式和对象模式 352

17.3 适配器(Adapter)模式 353

17.3.1 设计意图 353

17.3.2 基本结构 354

17.4.1 被适配类 355

17.3.3 实现方法 355

17.4 FishGUI中的适配器模式 355

17.4.2 对象适配器模式 357

17.4.3 类适配器模式 361

17.4.4 适配多个派生类 362

17.5 总结 366

第18章 MVC模式:三国演义vs.三分归一 367

18.1 开发日记:2004年1月8日,星期四 367

18.2 “提炼类”和“将类内联化” 368

18.3.1 设计意图 369

18.3 模型—视图—控制器(MVC)模式 369

18.3.3 实现方法 371

18.3.2 基本结构 371

18.3.4 MVC模式的不足 373

18.4 FishGUI中的MVC模式 373

18.5 总结 379

第19章 C++编码经验谈:理论vs.实践 380

19.1 开发日记:2004年1月12日,星期一 380

19.2 博大精深的C++语言 382

19.3.1 为什么要使用const 384

19.3 const的使用 384

19.3.2 标识常量 385

19.3.3 标识类的常量成员 385

19.3.4 标识输入和输出参数 386

19.3.5 修饰成员函数 387

19.3.6 消除常量特性 388

19.4 new和delete 389

19.4.1 用new和delete代替malloc()和free() 389

19.4.2 new和delete应使用相同的形式 390

19.5 谨慎地使用隐式类型转换 392

19.4.3 默认构造函数和转换构造函数 392

19.6 拷贝构造函数和赋值运算符函数 394

19.6.1 定义拷贝构造函数和赋值运算符函数 394

19.6.2 赋值运算符函数要返回*this的引用 398

19.7 数据成员的初始化 400

19.7.1 初始化比赋值高效 400

19.7.2 初始化顺序 402

19.8 传值、传指针和传引用 403

19.8.1 对于大型对象尽量传引用 403

19.8.2 有时也必须使用传值的方式 404

19.9 运算符重载 407

19.9.1 成员运算符函数和全局运算符函数 407

19.9.2 “++”和“--”运算符 409

19.10 虚析构函数 411

19.10.1 基类和聚合类的释放 411

19.10.2 虚析构函数 414

19.11 总结 416

附录A FishGUI的安装和使用 417

附录B FishGUI的改进 423

参考文献 429

返回顶部