![面向对象的思考过程(原书第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/429/39980429/b_39980429.jpg)
上QQ阅读APP看书,第一时间看更新
1.1 基本概念
本书的主要目标是让你学会思考如何将面向对象概念应用于面向对象的系统设计中。历史上定义面向对象的语言拥有以下特性:封装(encapsulation)、继承(inheritance)和多态性(polymorphism)(我称之为“经典的”面向对象)。因此,如果设计一门语言时如果没有完全实现以上特性,那么通常我们认为该语言不是完全面向对象的。即使实现了这三个特性,我也往往会加入组合特性。因此,我认为面向对象的概念如下:
·封装
·继承
·多态性
·组合
接下来会详述这些特性。
从本书第1版开始,我一直在努力解决的问题是这些概念如何直接与当前的设计实践关联起来,因为设计实践始终在变化当中。例如,在面向对象设计中使用继承总是饱受争议。继承是否实际上破坏了封装?(稍后的章节会讨论这一主题。)甚至现在,很多开发人员都试图尽量避免使用继承。因此,这就提出了一个问题:是否应该使用继承?
我的方式是始终围绕概念来学习。无论你是否使用继承,你至少需要理解什么是继承,这会保证你的设计决策是有据可依的。重要的是不要忘记,在代码维护中肯定会遇到继承,所以无论如何你都要学习它。
正如在前言中提及的那样,本书的目标读者是希望学习基本的面向对象概念的人。因此,本章会介绍基本的面向对象概念,希望读者能为做重要的设计决策打下坚实的基础。本章涵盖了这些概念的基本知识,随后的章节也会讨论这些概念的细节。