- 定价:¥69.00
- 校园优惠价:¥60.72 (88折) (马上了解)
- 评分:
(已有0条评价)
- 电子书:面向对象的思考过程(原书第4版)
- 促销活动:
- 此商品暂时缺货(可留下联系方式,到货将第一时间通知您)
基本信息
- 原书名:The Object-Oriented Thought Process, Fourth Edition
- 作者: (美)马特·魏斯费尔德(Matt Weisfeld)
- 译者: 黄博文
- 丛书名: 华章程序员书库
- 出版社:机械工业出版社
- ISBN:9787111553083
- 上架时间:2016-11-14
- 出版日期:2016 年11月
- 开本:16开
- 版次:1-1
- 所属分类:计算机 > 软件工程及软件方法学 > 面向对象

内容简介
作译者
目录
作者简介
前言
第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
前言
正如书名所述,本书讲述了面向对象思考的过程。选择一本书的主题和书名是个很重要的决定,但如果主题概念性很强,决定就没那么容易了。大部分书籍都只涉及了编程及面向对象设计的某个方面。一些主流的书阐述了诸如面向对象分析、面向对象设计、面向对象编程、设计模式、面向对象的数据结构(XML)、统一建模语言(UML)、面向对象Web开发、面向对象移动开发、进阶面向对象编程语言等主题,当然也包括了其他与面向对象编程相关的主题。
然而,许多人仔细研究这些书后,都未曾注意到这些主题都建立在同一个基础之上,即如何以面向对象的方式进行思考。从学生到软件开发专业人员,往往虽然阅读了这些书,但没有花费充分的时间和精力来真正理解代码背后的设计理念。
我认为仅学习一种特定的开发方法、一种编程语言或者一组设计工具并不能说明学会了面向对象这一概念。简单来说,以面向对象方式编程就是一种思考方式。本书就讨论这种面向对象的思考过程。
把面向对象的思考过程从语言、开发实践以及工具中剥离出来并不是一个简单的任务。在学习面向对象这一理念时,往往要求先深入学习一门编程语言。例如,很多年以前,大量的C语言程序员在没有直接接触面向对象概念之前,就开始通过C++语言来了解面向对象。其他软件专家第一次接触面向对象则是在演示文稿中使用UML创建对象模型。他们也没有直接学习面向对象的概念。即使到现在,互联网作为商业平台的几十年后,编程书籍以及专业的培训材料并没有先介绍面向对象这一概念。
学习面向对象的概念与学习使用面向对象语言进行编程有着巨大差异,理解这点很重要。我在编写本书第1版前就意识到了这点。当我阅读Craig Larman的文章《What the UML Is-and Isn’t》时,他指出:
但是,在软件开发工程和UML绘图语言领域,读写UML标记的能力有时候好像等同于面向对象的分析和设计能力。事实当然并非如此,后者比前者更加重要。因此我推荐先学习面向对象分析和设计的相关教学资料,它优先于学习使用UML标记的相关工具。
因此,尽管学习一门建模语言是非常重要的步骤,但先学习面向对象的技能更加重要。如果未完全理解面向对象概念前就学习UML,这就像还未了解任何与电路相关的知识就开始学习电路图一样。
学习编程语言也有相同的问题。如前所述,很多C语言程序员还未直接了解任何面向对象的概念,就想通过使用C++语言来达到面向对象的境界。在面试中经常会出现这样的情况,很多自诩C++程序员的开发人员只是会使用C++编译器的C程序员。甚至现在,诸如C#.NET、VB.NET、Objective-C以及Java等语言已经相当普及了,工作面试中的一些关键问题可以迅速暴露出这些程序员缺乏面向对象的思想。
Visual Basic的早期版本并不是面向对象的。C语言也不是面向对象的。而C++在设计时就向后兼容C语言。因此,使用C++编译器编写只含C语言语法的程序,而放弃使用C++的面向对象功能是完全可能的。Objective-C是标准ANSI C语言的一个扩展。更糟糕的是,程序员可能使用勉强够用的面向对象功能把程序写成了既不是面向对象的也不是面向过程的四不像产品。
因此,在学习使用面向对象的开发环境之前,先学习基本的面向对象概念至关重要。与其直接学习一门编程语言(比如Objective-C、VB .NET、C++、C# .NET或Java)或建模语言(如UML),还不如把时间花在学习面向对象的思考过程上。
我在使用C语言编程很多年后,于20世纪80年代后期开始参加Smalltalk语言的学习课程。当时我所在的公司认为公司的软件开发人员应该学习这个极具前途的技术。老师授课时说面向对象的范式是全新的思维方式(事实上它从20世纪60年代就已经萌芽了)。他接着说,虽然几乎我们所有人都是很优秀的程序员,但还有10%~20%的人从来没有按照面向对象的方式做事。如果该说法确实正确,那么很可能是因为很多优秀的程序员从没有花时间进行编程范式的转变,没有深入学习面向对象概念。
第4版中的新增内容
正如在前言中经常提及的一样,第1版中我的愿景仅仅围绕概念本身,而不是具体的新兴技术。尽管我在第2版、第3版以及第4版仍然坚持该目标,但也引入了几个章节讲述关于应用程序的主题,这些主题与面向对象概念契合度很高。第1~10章涵盖了基本的面向对象概念,第11~15章将这些概念应用到了一些常用的面向对象技术中。例如,第1~10章提供了面向对象的基础课程(比如封装、多态、继承等),而第11~15章则介绍了一些实际应用。
第4版相对于之前的版本拓展了很多主题。以下列出了改进及更新的主题:
移动设备开发,包括手机应用、移动应用以及混合开发等。
iOS环境下的Objective-C代码示例。
使用XML及JSON实现可读性强的数据交换。
使用CSS、XSLT等技术实现数据渲染与转换。
Web服务,包括简单对象访问协议(SOAP)、RESTful Web服务等。
序言
很多IT从业人员进入这个行业都是从学习一门编程语言开始的。对于编程,我们往往过于关注语言的语法细节,反而忽略了其背后的设计理念。面向对象的思考过程就是一个非常优秀的设计理念。它可以独立于语言存在。如果你熟练掌握了面向对象的思考过程,那么就可以轻松地在不同的面向对象的语言之间切换。
本书透彻地阐述了面向对象这一概念。作者Matt在书中反复强调学习面向对象的思考过程优于学习任何编程语言或工具。事实上,他也是这么做的。Matt阐述了面向对象的三要素:继承、封装、多态,并且自己加上了第四个要素:组合。关于组合,Matt不惜篇幅做了大量的讲解,并且列举了很多通俗易懂的例子,这也是本书的一大特色。
Matt也纠正了人们的一些普遍误解,比如面向对象的范式与面向过程的范式并不是完全对立的关系。而且在应用面向对象的设计和开发时,Matt也讲解了不少如何与遗留系统集成的技巧。同时,Matt也简要介绍了UML这个建模利器。为了不混淆重点,他把介绍UML的章节放置在很靠后的位置。因为他明白,先了解面向对象的各项概念是最重要的。
我虽然拥有多年的从业经验,但是再看本书时仍然有不少收获。其实自从我接触了函数式编程,就渐渐成为函数式编程的拥趸。我会时不时地“鼓吹”函数式编程范式的好处,顺便“贬低”一下面向对象编程。但同时我也有个疑问,既然函数式编程这么好,为什么这几年的发展只能算是波澜不惊,而没有掀起大风浪呢?读了本书之后,我似乎找到了答案。首先面向对象的思考过程更加符合大家对世界的直观感受,毕竟不是每个人都是数学家。函数式编程可以简化很多问题,但它并不能简化所有问题。其次是面向对象的编程范式和函数式编程的范式并不是完全对立的,正如作者讲过,面向过程的编程范式和面向对象的编程范式也不是完全对立的。比如目前流行的一些语言(Scala、Go等)都具备函数式的特点,也兼具面向对象的特点(只不过它们的面向对象的机制与传统的方式有所不同)。所以无论你喜欢哪种编程范式,了解彼此的不同之处是至关重要的。而本书则是了解面向对象范式的优秀书籍。
本书已经更新到了第4版。从本书长达10多年的跨度来看,面向对象范式经久不衰。Matt也适时地在新版中加入了一些新的主题,比如可移植数据、分布式系统、Web服务等。Matt不仅阐述了这些技术,还讲述了它们的前世今生。这样可以帮助读者更加充分地了解技术的演化之路。
无论你是否有面向对象编程的经验,本书都适合你作为面向对象思考的旅程开端。最后,希望本书能给大家带来超凡的阅读体验。