面向对象技术给软件发展带来如下益处:
l 可重用性。从一开始对象的产生就是为了重复利用,完成的对象将在今后的程序开发中被部分或全部地重复利用。
l 可靠性。由于面向对象的应用程序包含了通过测试的标准部分,因此更加可靠。由于大量代码来源于成熟可靠的类库,因而新开发程序的新增代码明显减少,这是程序可靠性提高的一个重要原因。
l 连续性。具有面向对象特点的C++与C语言有很大的兼容性,C程序员可以比较容易地过渡到C++语言开发工作。
面向对象语言具有如下基本特征:
l 访问控制。对象必须能够对其内部的某些元素进行保护,是它们只能被内部使用,而不受外部干扰。反过来,对象又必须同其它外部元素进行联系,以便对对象进行操作。在C++中,类有私有的(private)、保护的(protected)和公有的(public)三种访问机制。
l 继承性。通过对已有对象进行增加或部分修改的方法建立新的对象,对已有对象可以增加数据和过程,也可以对其中某些过程进行从新定义。最初的类被称为基类,从基类扩展出来的类称为派生类。从已有类派生出新类是为了获得更强的针对性。
l 多态性。正象生态系统一样,继承构成了类族。通常这些类族中的类具有同名的成员函数,例如OD分布类族,具有一个通用基类,两个派生类:增长系数OD分布类和重力模型OD分布类,这几个类都有同名的Exec成员函数。多态性意味着存在多种形式,能使人们在程序中激活任何属于OD分布类族的类的Exec成员函数,甚至在编译可以不必具体知道对象是属于增长系数OD类还是重力模型OD分布类。
面向对象体系结构技术有助于创建行业性软件开发机构。例如交通规划尽管具有差别,但各城市所需要的软件基本上是相同的,这就为软件开发机构提供了一种制作面向交通规划的软件框架(注意这里讲的是软件框架而不是通用性软件)的机会。这种框架一旦开发成功,就可以多次反复利用。
面向对象技术特别适合于将某一领域内的软件资源整理成体系化,因为它有很好的表现能力,能够容易抓住特定功能领域的本质。
面向对象的程序设计
为有效使用面向对象的程序方法,首先需要解决程序的结构设计问题。在程序设计过程中最重要的抽象,也就是说,从现实世界中抽象出合理的对象结构。在面向对象思想中,抽象决定了对象的对外形象、内部结构以及处理对象的外部接口,其关键是处理对象的可见外部特征。封装是与抽象紧密联系的概念,它需要两个基本前提:首先,对象必须能够表现一个完备的概念,例如可以将一条道路的纵断面设计作为一个对象,它与外部的联系限于纵断面地面线、纵断面设计参数。当这些外部条件给定之后,对象可以独立计算任意桩号的设计高程、地面高程、设计高差、填挖面积等,也可以根据给定的比例和初始坐标计算设计线和地面线的图形坐标。第二,对象的私有性,例如上述示例中,对象的内部数据结构在外部是不可见的,其他程序员并不需要了解这种数据结构就可以使用对象的功能。对于对象的接口设计是十分重要的,它必须给出必要的访问渠道,同时必须尽可能地将内部细节隐藏起来。我们可以将接口看作是在屏蔽墙上打开的一些出入通道,通道过多了就失去了屏蔽墙存在的意义,通道过少又由于限制过强而行动不便。一般情况下,这种通道表现为一组接口函数,事实上我们也可以将一些变量作为对外开放的,但这并不是一种很好的方法。