面向对象的思考过程(原书第4版) 9787111553083

配送至
$ $ USD 美元

编辑推荐

《面向对象的思考过程(原书第4版)》由机械工业出版社出版。

作者简介

作者:(美)马特·魏斯费尔德 译者:黄博文
About the Author?作?者?简?介Matt Weisfeld居住于美国俄亥俄州的克利夫兰市。他既是大学教授、软件开发工程师,也是作家。他在信息技术领域拥有20年的经验,之后进入大学任教。他先后当过软件开发工程师、企业家以及兼职教授。Matt拥有计算机科学硕士学位以及工商管理硕士学位。Matt除了本书之外,Matt还撰写了其他两本关于软件开发的书籍,并在杂志和期刊上发表了多篇文章。这些杂志和期刊包括《developer.com》《Dr.Dobb’s》《C/C++ Users》《Software Development》《Java Report》和国际期刊《Project Management》等。

目录

译者序
作者简介
前言
第1章 面向对象的概念简介1
1.1 基本概念1
1.2 对象及遗留系统2
1.3 过程式编程与面向对象编程3
1.4 由面向过程开发过渡到面向对象开发5
1.4.1 过程式编程5
1.4.2 面向对象编程6
1.5 究竟什么是对象6
1.5.1 对象数据6
1.5.2 对象行为7
1.6 究竟什么是类10
1.6.1 创建对象10
1.6.2 属性11
1.6.3 方法11
1.6.4 消息12
1.7 使用类图作为可视化工具12
1.8 封装和数据隐藏12
1.8.1 接口13
1.8.2 实现13
1.8.3 接口/实现范式的一个真实示例14
1.8.4 接口/实现范式的模型14
1.9 继承15
1.9.1 超类和子类16
1.9.2 抽象16
1.9.3 is—a关系17
1.10 多态18
1.11 组合21
1.11.1 抽象21
1.11.2 has—a关系21
1.12 结语21
1.13 本章中使用的示例代码22
1.13.1 C#.NET版本的TestPerson类22
1.13.2 C#.NET版本的TestShape类23
第2章 如何以面向对象的方式进行思考25
2.1 清楚接口和实现之间的区别26
2.1.1 接口27
2.1.2 实现27
2.1.3 一个接口/实现示例28
2.2 使用抽象思维设计接口31
2.3 尽可能提供最小化的用户接口32
2.3.1 确定用户?33
2.3.2 对象行为33
2.3.3 环境约束34
2.3.4 识别公共接口34
2.3.5 识别实现34
2.4 结语35
2.5 引用35
第3章 高级的面向对象概念36
3.1 构造函数36
3.1.1 什么是构造函数调用37
3.1.2 构造函数中包含什么37
3.1.3 默认构造函数37
3.1.4 使用多个构造函数38
3.1.5 设计构造函数41
3.2 错误处理41
3.2.1 忽略问题42
3.2.2 检查问题并中止应用程序42
3.2.3 检查问题并试图恢复42
3.2.4 抛出异常43
3.3 作用域的重要性45
3.3.1 局部属性?45
3.3.2 对象属性46
3.3.3 类属性48
3.4 操作符重载49
3.5 多重继承49
3.6 对象操作50
3.7 结语51
3.8 引用51
3.9 本章中使用的示例代码51
第4章 类的剖析53
4.1 类名53
4.2 注释55
4.3 属性55
4.4 构造函数56
4.5 访问器58
4.6 公共接口方法60
4.7 私有实现方法60
4.8 结语61
4.9 引用61
4.10 本章中使用的示例代码61
第5章 类设计指导63
5.1 对现实世界系统建模63
5.2 识别公共接口64
5.2.1 最小化公共接口64
5.2.2 隐藏实现65
5.3 设计健壮的构造函数(以及析构函数)65
5.4 在类中设计错误处理66
5.4.1 使用注释给类加上文档66
5.4.2 构造可以合作的对象67
5.5 设计时请考虑重用67
5.6 设计时请考虑扩展性67
5.6.1 使用描述性的名称67
5.6.2 抽象不可移植的代码68
5.6.3 提供一种方式来复制和比较对象68
5.6.4 保持尽可能小的作用域69
5.6.5 类的职责与自身高度相关70
5.7 设计时请考虑可维护性71
5.7.1 在开发过程中使用迭代71
5.7.2 测试接口72
5.8 使用对象持久化73
5.9 结语75
5.10 引用75
5.11 本章中使用的示例代码75
第6章 使用对象进行设计77
6.1 设计指导77
6.1.1 提供正确的分析79
6.1.2 编写工作陈述文档80
6.1.3 收集需求80
6.1.4 开发用户接口的原型81
6.1.5 识别类81
6.1.6 确定每个类的职责81
6.1.7 确定类之间如何协作81
6.1.8 创建类模型来描述系统81
6.1.9 建立用户接口原型82
6.2 对象包装82
6.2.1 结构化代码83
6.2.2 包装结构化代码84
6.2.3 包装不可移植的代码85
6.2.4 包装已有类86
6.3 结语87
6.4 引用87
第7章 精通继承和组合88
7.1 重用对象88
7.2 继承89
7.2.1 通用和特例91
7.2.2 设计决策92
7.3 组合93
7.4 为什么封装是面向对象的本质95
7.4.1 继承如何减弱封装96
7.4.2 关于多态的一个具体例子97
7.4.3 对象职责98
7.4.4 抽象类、虚方法和协议101
7.5 结语102
7.6 引用103
7.7 本章中使用的示例代码103
第8章 框架和重用:使用接口和抽象类进行设计105
8.1 代码:重用还是不重用105
8.2 什么是框架106
8.3 什么是契约107
8.3.1 抽象类108
8.3.2 接口110
8.3.3 综合运用112
8.3.4 编译器佐证114
8.3.5 创建契约115
8.3.6 系统插接点117
8.4 一个电子商务示例117
8.4.1 一个电子商务问题117
8.4.2 非重用方式118
8.4.3 电子商务解决方案119
8.4.4 UML对象模型120
8.5 结语124
8.6 引用124
8.7 本章中使用的示例代码124
第9章 创建对象及面向对象设计128
9.1 组合关系129
9.2 分阶段构建129
9.3 组合类型131
9.3.1 聚合131
9.3.2 联合132
9.3.3 同时使用联合和聚合133
9.4 避免依赖133
9.5 基数134
9.5.1 多个对象联合136
9.5.2 可选的联合137
9.6 一个综合性示例137
9.7 结语138
9.8 引用138
第10章 创建对象模型139
10.1 什么是UML139
10.2 类图结构140
10.3 属性和方法141
10.3.1 属性142
10.3.2 方法142
10.4 访问符号142
10.5 继承143
10.6 接口145
10.7 组合145
10.7.1 聚合145
10.7.2 联合146
10.8 基数147
10.9 结语148
10.10 引用149
第11章 对象与可移植数据:XML和JSON150
11.1 可移植数据150
11.2 XML152
11.3 XML与HTML152
11.4 XML和面向对象的语言153
11.5 在企业间共享数据154
11.6 使用DTD验证文档155
11.7 将DTD集成到XML文档中156
11.8 使用层叠样式表161
11.9 JavaScript对象标记163
11.10 结语167
11.11 引用167
第12章 持久化对象:序列化、封送及关系型数据库168
12.1 持久化对象基础168
12.2 将对象保存到平面文件中169
12.2.1 序列化文件170
12.2.2 再次讨论实现和接口172
12.2.3 为什么不保存方法173
12.3 序列化过程中使用XML173
12.4 写入关系型数据库176
12.5 结语179
12.6 引用179
12.7 本章中使用的示例代码179
……
第13章 Web服务、移动应用及混合应用中的对象183
第14章 对象及客户端/服务器端应用程序204
第15章 设计模式217

序言

The Translator’s Words?译 者 序很多IT从业人员进入这个行业都是从学习一门编程语言开始的。对于编程,我们往往过于关注语言的语法细节,反而忽略了其背后的设计理念。面向对象的思考过程就是一个非常优秀的设计理念。它可以独立于语言存在。如果你熟练掌握了面向对象的思考过程,那么就可以轻松地在不同的面向对象的语言之间切换。
本书透彻地阐述了面向对象这一概念。作者Matt在书中反复强调学习面向对象的思考过程优于学习任何编程语言或工具。事实上,他也是这么做的。Matt阐述了面向对象的三要素:继承、封装、多态,并且自己加上了第四个要素:组合。关于组合,Matt不惜篇幅做了大量的讲解,并且列举了很多通俗易懂的例子,这也是本书的一大特色。
Matt也纠正了人们的一些普遍误解,比如面向对象的范式与面向过程的范式并不是完全对立的关系。而且在应用面向对象的设计和开发时,Matt也讲解了不少如何与遗留系统集成的技巧。同时,Matt也简要介绍了UML这个建模利器。为了不混淆重点,他把介绍UML的章节放置在很靠后的位置。因为他明白,先了解面向对象的各项概念是最重要的。
我虽然拥有多年的从业经验,但是再看本书时仍然有不少收获。其实自从我接触了函数式编程,就渐渐成为函数式编程的拥趸。我会时不时地“鼓吹”函数式编程范式的好处,顺便“贬低”一下面向对象编程。但同时我也有个疑问,既然函数式编程这么好,为什么这几年的发展只能算是波澜不惊,而没有掀起大风浪呢?读了本书之后,我似乎找到了答案。首先面向对象的思考过程更加符合大家对世界的直观感受,毕竟不是每个人都是数学家。函数式编程可以简化很多问题,但它并不能简化所有问题。其次是面向对象的编程范式和函数式编程的范式并不是完全对立的,正如作者讲过,面向过程的编程范式和面向对象的编程范式也不是完全对立的。比如目前流行的一些语言(Scala、Go等)都具备函数式的特点,也兼具面向对象的特点(只不过它们的面向对象的机制与传统的方式有所不同)。所以无论你喜欢哪种编程范式,了解彼此的不同之处是至关重要的。而本书则是了解面向对象范式的优秀书籍。
本书已经更新到了第4版。从本书长达10多年的跨度来看,面向对象范式经久不衰。Matt也适时地在新版中加入了一些新的主题,比如可移植数据、分布式系统、Web服务等。Matt不仅阐述了这些技术,还讲述了它们的前世今生。这样可以帮助读者更加充分地了解技术的演化之路。
无论你是否有面向对象编程的经验,本书都适合你作为面向对象思考的旅程开端。最后,希望本书能给大家带来超凡的阅读体验。

文摘

版权页:

插图:
ISBN9787111553083
出版社机械工业出版社
作者马特·魏斯费尔德 (Matt Weisfeld)
尺寸16