基本信息
- 作者: [美]马特·魏斯费尔德(Matt Weisfeld)
- 丛书名: 华章程序员书库
- 出版社:机械工业出版社
- ISBN:9787111684527
- 上架时间:2021-9-1
- 出版日期:2021 年6月
- 开本:16开
- 页码:224
- 版次:1-1
- 所属分类:计算机 > 软件工程及软件方法学 > 面向对象

编辑推荐
面向对象的
思考过程
(原书第5版)
The Object-Oriented
Thought Process, 5th Edition
[美] 马特·魏斯费尔德(Matt Weisfeld)著
黄博文 冯冠军 张轲译
内容简介
目录
前言
致谢
关于作者
第1章 面向对象的概念简介1
1.1 基本概念1
1.2 对象及遗留系统2
1.3 过程式编程与面向对象编程对比4
1.4 由面向过程开发过渡到面向对象开发7
1.4.1 过程式编程7
1.4.2 面向对象编程8
1.5 什么是对象8
1.5.1 对象数据8
1.5.2 对象行为9
1.6 什么是类13
1.6.1 创建对象13
1.6.2 属性15
1.6.3 方法15
1.6.4 消息15
1.7 使用类图作为可视化工具16
前言
正如书名所述,本书阐述了面向对象的思考过程。选择一本书的主题和书名是很重要的,但如果主题的概念性很强的话,做决定就没那么容易了。大部分书籍都只涉及编程与面向对象设计的某个方面。一些流行的书则阐述了诸如面向对象分析、面向对象设计、面向对象编程、设计模式、面向对象的数据结构(XML)、统一建模语言(UML)、面向对象Web开发、面向对象移动开发、各种面向对象编程语言等与面向对象编程(OOP)相关的主题。
然而,许多人仔细研读这些书后,未曾注意到这些主题都建立在同一个基础之上,即如何以面向对象的方式进行思考。从学生到软件开发专业人员,他们往往只是阅读了这些书,却没有付出充分的时间和努力来真正理解代码背后的设计理念。
我认为仅学习一种特定的开发方式、一种编程语言或者一组设计工具并不能说明学会了面向对象这一概念。面向对象的软件开发简单来说就是一种思考方式。本书就是关于这种面向对象的思考过程的。
把面向对象的思考过程从语言、开发实践以及工具中剥离出来并不是一个简单的任务。人们在学习面向对象这一理念时,往往被要求先深入学习一门编程语言。例如,很多年以前,大量的C语言程序员在没有直接接触面向对象概念之前,就开始通过C++语言来了解面向对象。
学习面向对象的概念与学习使用面向对象语言进行编程有着巨大差异,理解这一点很重要。我在撰写本书第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、Swift以及Java等语言已经相当普及了,但工作面试中的一些关键问题还是可以迅速暴露出这些程序员缺乏面向对象的思想。
Visual Basic的早期版本并不是面向对象的。C语言也不是面向对象的,而C++在设计时就向后兼容C语言。因此,使用C++编译器编写只含C语言语法的程序,而放弃使用C++的面向对象功能是完全可能的。Objective-C被设计为标准ANSI C语言的一个扩展。最糟糕的是,程序员可能使用“半瓶子”的面向对象功能把程序写成既不是面向对象的也不是面向过程的“四不像”产品。
因此,在学习使用面向对象的开发环境之前,先学习基本的面向对象概念至关重要。与其直接学习一门编程语言,不如把时间花在学习面向对象的思考过程上。
第5版中的新内容
就像在前言中经常提到的那样,我对第1版的愿景是坚持概念,而不是专注于某项特定的新兴技术。对于第5版,我仍然坚持这个愿景,但我也会介绍比早期版本中更多的“相反观点”。我想表达的是,尽管到目前为止,面向对象的软件开发是市面上最大的游戏,但它并不是唯一的游戏。
自从本书的第1版于1999年完成以来,市场上出现了许多技术,同时也有些技术已经逐渐消失。当时,Java刚刚发布,并且是最主要的面向对象开发语言;网页即将成为日常生活和商业的一部分。如今,我们都知道移动设备已经变得无处不在。在过去的20年中,软件开发人员经历了XML、JSON、CSS、XSLT、SOAP和RESTful Web服务。Android设备过去使用Java,现在使用Kotlin,而iOS设备使用Objective-C和Swift。
过去20年来,我们已经采用了许多技术(以及本书的前四版)。第5版的主要目标是将所有内容浓缩到第1版的初始意图,即简单的面向对象概念。我认为本书的第1版取得的所有成功,都是源于它专注于面向对象的基本概念。在某些方面,第5版囊括了前面所有版本提到的技术。
最后,将这些技术封装到设计方法中的概念由SOLID表示,该概念贯穿本书的所有章节。
SOLID原则是:
SRP—单一职责原则
OCP—开闭原则
LSP—里氏替换原则
媒体评论
在开始使用面向对象的开发环境之前,了解面向对象的基本概念至关重要。OOP促进了良好的设计实践、代码可移植性和重用性,但是需要转变思维才能完全理解OOP。刚接触OOP的程序员应该抵制直接跳入特定编程语言或建模语言的诱惑,首先花时间学习本书作者提出的“面向对象的思考过程”。
尽管编程技术多年来一直在变化和发展,但是无论平台如何演进,面向对象仍然是一个不变的概念。本书侧重于在过去20年中幸存下来并保持其核心的OOP技术,其中包括新的和扩展的设计模式、避免依赖关系以及SOLID原则,以帮助开发人员使软件设计易于理解、灵活和可维护。
通过阅读本书,你将学到:
? 面向解决方案的方法
? 继承和组合的正确用法
? 聚合和联合之间以及接口和实现之间的重要区别
第5版新增内容
相比前几版而言,作者对内容做了大量修改,删除了一些与面向对象不太相关的章节,突出了本书的主题,同时引入了设计模式、面向对象设计的SOLID准则等全新章节,补全了面向对象设计思想的方方面面。无论你是否有面向对象编程的经验,本书都适合作为你面向对象思考的旅程的开端。