C++面向对象程序设计(第三版)
上QQ阅读APP看书,第一时间看更新

1.2.2 面向对象程序设计的主要优点

面向对象程序设计方法是软件开发史上一个里程碑。这种方法从根本上改变了人们以往设计软件的思维方式,从而使程序设计者摆脱了具体的数据格式和过程的束缚,将精力集中于要处理对象的设计和研究上,极大地减少了软件开发的复杂性,提高了软件开发的效率。面向对象程序设计主要具有以下几个优点:

1.面向对象程序设计可提高程序的重用性

重用是提高软件开发效率最主要的方法,面向过程程序设计的重用技术是利用标准函数库,但是标准函数库缺乏必要的“柔性”,不能适应不同应用场合的需要,库函数往往仅提供最基本的、最常用的功能,在开发一个新的软件系统时,通常大部分函数仍需要开发者自己编写,甚至绝大部分函数都是新编的。

面向对象程序设计能比较好地解决软件重用的问题。对象所固有的封装性和信息隐藏等机理,使得对象内部的实现与外界隔离,具有较强的独立性,它可以作为一个大粒度的程序构件,供同类程序直接使用。

面向对象程序设计可以重复使用一个对象类,可以像使用集成电路(IC)构建计算机硬件那样,比较方便地重用对象类来构造软件系统,因此有人把对象类称为“软件IC”。

2.面向对象程序设计可控制程序的复杂性

面向过程程序设计忽略了数据和操作之间的内在联系,它把数据与其操作分离,于是存在使用错误的数据调用正确的程序模块,或使用正确的数据调用错误的程序模块的风险。使数据和操作保持一致,控制程序的复杂性,是程序员一个沉重的负担。面向对象程序设计采用了数据抽象和信息隐藏技术,把数据及对数据的操作放在一个个类中,作为相互依存、不可分割的整体来处理。这样,在程序中任何要访问这些数据的地方都只需简单地通过传递信息和调用方法来进行,这就有效地控制了程序的复杂性。

3.面向对象程序设计可改善程序的可维护性

用面向过程程序设计语言开发出来的软件很难维护,是长期困扰人们的一个严重问题,是软件危机的突出表现。但是,面向对象程序设计方法所开发的软件可维护性较好。在面向对象程序设计中,对于对象的操作只能通过消息传递来实现,所以只要消息模式即对应的方法界面不变,方法体的任何修改不会导致发送消息的程序修改,这显然给程序的维护带来了方便。另外,类的封装和信息隐藏机制使得外界对其中的数据和程序代码的非法操作成为不可能,这也大大减少了程序的错误率。

4.面向对象程序设计能够更好地支持大型程序设计

在开发一个大型系统时,应对任务进行清晰的、严格的划分,使每个程序员了解自己要做的工作以及与他人的接口,使每个程序员可以独立地设计、调试自己负责的模块,以使各个模块能够顺利地应用到整个系统中去。

类是一种抽象的数据类型,所以类作为一个程序模块,要比通常的子程序的独立性强得多,面向对象技术在数据抽象和抽象数据类型之上又引入了动态连接和继承性等机制,进一步发展了基于数据抽象的模块化设计,使其更好地支持大型程序设计。

5.面向对象程序设计增强了计算机处理信息的范围

面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方法。这种方法把描述事物静态属性的数据结构和表示事物动态行为的操作放在一起构成一个整体,完整地、自然地表示客观世界中的实体。

用类来直接描述现实世界中的类型,可使计算机系统的描述和处理对象从数据扩展到现实世界和思维世界的各种事物,这实际上大大扩展了计算机系统处理的信息量和信息类型。

6.面向对象程序设计能很好地适应新的硬件环境

面向对象程序设计中的对象、消息传递等思想和机制,与分布式、并行处理、多机系统及网络等硬件环境也恰好吻合。面向对象程序设计能够开发出适应这些新环境的软件系统。面向对象的思想也影响计算机硬件的体系结构,现在已在研究直接支持对象概念的面向对象计算机。这样的计算机将会更适合于面向对象程序设计,更充分地发挥面向对象技术的优势。

由于面向对象程序设计的上述优点,我们看到,面向对象程序设计是目前解决软件开发面临难题的最有希望、最有前途的方法之一。