道法自然 面向对象实践指南PDF电子书下载
- 电子书积分:14 积分如何计算积分?
- 作 者:王咏武,王咏刚著
- 出 版 社:北京:电子工业出版社
- 出版年份:2004
- ISBN:7121002264
- 页数:432 页
第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
- 《自然拼读背单词 高考英语3500词》宋德伟 2019
- 《语文教育教学实践探索》陈德收 2018
- 《彼得·布鲁克导演实践研究》邓小玲著 2019
- 《反思性实践》胡红梅, 2019
- 《高含硫气藏开发腐蚀控制技术与实践》唐永帆,张强 2018
- 《环境影响评价公众参与理论与实践研究》樊春燕主编 2019
- 《学校特色教育探索与实践》管升起著 2019
- 《麦肯锡精英这样实践基本功》(日)户塚隆将著 2019
- 《财经新闻翻译实践教程》胡婉,黄剑,王旭泉主编 2019
- 《城市基坑工程设计施工实践与应用》李欢秋,刘飞,郭进军编著 2019
- 《长安诗心》宋宁刚著 2019
- 《史学与红学》唐德刚著 2019
- 《朱生豪在上海》朱尚刚著 2019
- 《纸上的关怀》宋宁刚著 2019
- 《光学调频连续波干涉技术》(加)郑刚著;廖寅宵,刘柯,宋金城等译 2019
- 《极简谈判术》王咏 2019
- 《三体》田加刚著 2019
- 《自然美的传递 本质真的发掘》王春刚著 2014
- 《水下磁性目标精密探测理论与方法》卞光浪,翟国君,欧阳永忠,于波,边刚著 2019
- 《高校图书馆阅读推广理论与实践》刘纪刚著 2019
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017