面向对象编程的含义

  面向对象编程是创建计算机应用程序的一种相当新的方法,它解决了传统编程技巧的许多问题。前面介绍的编程方法称为函数(或过程)化编程,常常会导致所谓的单一应用程序,即所有的功能都包含在几个代码模块中(常常是一个代码模块)。而使用 OOP 技术,常常要使用许多代码模块,每个模块都提供特定的功能。而且,每个模块都是孤立的,甚至与其他模块完全独立。这种模块化编程方法提供了非常大的多样性,大大增加了重用代码的机会。

  为进一步说明这个问题,把计算机上的一个高性能应用程序想象成一辆一流赛车。如果使用传统的编程技巧,这辆赛车就是一个单元。如果要改进这辆车,就必须替换整车,把它送回厂商那里,让汽车专家升级它,或者购买一辆新车。如果使用OOP 技术,就只需从厂商处购买新的引擎,自己按照其说明替换它,而不必用钢锯切割车体。

  在传统的应用程序中,执行流常是简单的、线性的。把应用程序加载到内存中,从 A 点开始执行,在 B 点结束,然后从内存中卸载,在这个过程中可能用到其他各种实体,例如存储介质上的文件或显卡功能,但处理的主体总是位于一个地方。用到的代码一般与使用各种数学和逻辑方式处理数据相关。处理方法通常比较简单,实用基本的数据类型(例如整型和布尔值)建立比较复杂的数据表达方式。

  而使用 OOP,事情就不是这么直接了。尽管可以获得相同的效果,但其实现方式是完全不同的。OOP 技术以结构、数据的含义以及数据和数据之间的交互操作为基础。这通常意味着要把更多的精力放在项目的设计阶段,其好处是项目的可扩展性比较高。一旦对某种类型的数据的表达方式达成一致,这种表达方式就会应用到应用程序以后的版本中,甚至是全新的应用程序中。这种一致的表达方式是结构化的,这样就可以很容易地替换成新代码(即新引擎),而不需要找厂商帮忙。这也表示,引擎创建出来以后可以用于其他目的,可以把它安装到另一辆车上,或者用它驱动潜艇。

  除了数据表达方式的一致性外,OOP 编程还常常可以简化任务,因为较抽象实体的结构和用法也是一致的。例如,不仅把输出结果发送给设备(如打印机)所使用的数据格式是一致的,而且与该设备交换数据的方法也是一致的,这包括它理解的指令等。回到赛车的示例上,要达成的一致的做法包括引擎如何连接到油箱上,如何把驱动力传送给车轮等。

  顾名思义,OOP 技术要使用对象。