面向对象程序设计(Object-Oriented Programming,简称 OOP)是当今主流的程序设计范式,它取代了 20 世纪 70 年代的 “结构化” 或过程试编程技术。Java 是向对象的,必须熟悉 OOP 才能够很好地编写 Java 程序。
面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。程序中的很多对象来自标准库,还有一些是自定义的。究竟是自己构造对象,还是从外界购买对象完全取决于开发项目的预算和时间。但是,从根本上说,只要对象能够满足要求,就不必关心其功能的具体实现过程。OOP 将数据放在第一位,然后再考虑操作数据的算法。
传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。一旦确定了这些过程,就要开始考虑存储数据的适当格式。传统的结构化程序设计将算法放在了第一位,数据结构是第二位。
对于一些规模较小的问题,将其分解为过程的开发方式比较理想,而面向对象更加适用于解决规模较大的问题。
要想实现一个简单的 Web 浏览器可能需要大约 2000 个过程,这些过程可能需要对一组全局数据进行操作。采用面向对象的设计风格,可能只需要大约 100 个类,每个类平均包含 20 个方法。后者更容易程序员掌握,也容易找到 bug。假设给定对象的数据出错了,在访问这个数据项的 20 个方法中查找错误要比在 2000 个过程中查找容易得多。