前言

在 2000 年之后,使用面向对象编程语言的系统开发开始普及,Java、Python、C#、JavaScript、PHP 和 Ruby 均为面向对象编程提供了支持。框架、设计模式、UML 和敏捷开发等技术和开发方法被广泛使用。现在,面向对象已经不再是什么全新的技术了,但是对从事系统开发工作的人来说,却是一种必须充分理解并熟练运用的技术。

话虽如此,但由于面向对象涵盖了软件开发的较大范围,各项技术都很有深度,所以想要全面且深入地理解它并不容易。另外,面向对象也是一种容易因以对象为中心的概念和编程机制的鸿沟而产生混乱的技术。

本书将介绍面向对象的全貌及其包含的各项技术,即面向对象编程、框架、设计模式、UML、建模、面向对象设计和敏捷开发方法等。书中将重点介绍这些技术究竟是什么(What),以及为什么需要这些技术(Why),而对于如何使用各项技术(How),则只进行简要的说明。为了避免混乱,本书将面向对象分为下游工程的“编程技术”和上游工程的“归纳整理法”两方面进行叙述。大家在掌握了面向对象的全貌及其包含的各项技术的定位和目的之后,就能更深入地理解各项技术了。

本书第 1 版编写于 2003 年到 2004 年,当时企业信息系统的开发开始主要采用 Java 和 .NET 进行,在这种情况下,除了面向对象编程之外,UML 建模、设计模式和敏捷开发方法等也受到了关注,甚至还出现了“只要使用面向对象,就可以直接将现实世界表示为程序”“面向对象与以往的技术完全不同,因此我们必须舍弃之前的方法和技术”等极端的说法。

很多人因为这样的极端说法而无法正确理解面向对象。我编写本书第 1 版的动机就是想告诉这些人:“面向对象绝不是什么魔法技术,而是极具实践性的,且是以往的优秀开发技术的延伸。”

另外,我认为一开始接触的编程语言就是面向对象编程语言的人不会对面向对象的概念产生混乱。只不过对这些人来说,面向对象好像也不容易掌握。大家在刚开始学习编程时,理解 if 语句、for 语句和函数都很容易,而当学到面向对象编程时,面对突然出现的类、实例、构造函数、继承、多态和异常等结构,就会感到非常困难,相信现在很多人也有同感吧。

因此,第 3 版针对“面向对象原生时代”的读者进行了内容修订。第 1 版将重点放在了否定“面向对象是直接将现实世界表示为程序的技术”这一说法上,而第 3 版弱化了这种基调,从更加客观的角度讲解了面向对象难理解的原因。同时,笔者重新研读了所有内容,根据执笔时的现状进行了修改。

令人高兴的是,近年来对编程感兴趣的人越来越多,IT 技术人员这个职业的人气也比以前更高了。希望有更多的人能够享受需求定义、设计、编程和测试等充满智慧的软件开发工作。愿本书能对你有所帮助。

 

平泽章
2021 年 2 月