十四、面向对象方法与面向对象数据库6 w4 z: d$ Q4 l8 ?" A
1.面向对象技术的形成与发展0 T4 j1 r+ t0 ~) B+ @ E. e* ]
80年代以来,面向对象语言如雨后春笋搬出现,形成了面向对象语言的两大类:一类是纯面向对象的语言,如Smalltalk和Eiffel等;另一类是混合型面向对象语言,即在过程语言中增加面向对象的机制,如C++、Objective-C等等。现在,作为80年代最流行的C语言的扩充的面向对象C++,是目前应用最广泛的语言。C++编译产生的代码性能几乎与传统的C编译产生的代码性能相同。面向对象的Pascal和BASIC也已在DOS、Windows上OS/2中实现。现在,面向对象技术已成为一种广泛使用的成熟的技术和方法,有一系列成熟的商品软件工具支持OON。OON中涉及到下列一些基本概念:信息(Information)是指对事物的一种表示或描述。对象(Object)是一个由信息及其关于信息处理的描述组成的包。消息(Message)是对某种信息的处理的描述。类(Class)是对一个或几个相似对象的描述。实例(Instance)是被某一个特定的类所描述的一个对象。因此,每一个对象都是某个类的一个实例,而类是一些实例的全部相似特征的描述。方法(Method)是描述对象对消息的响应。对象是一个普遍适用的基本的逻辑概念,是一个有组织形式的、含有信息的实体或结构。它既可以表示一个抽象的概念,也可以表示一个具体的程序模块;既可以表示软件,也可以表示硬件。于是,OOM提供了同时在现实世界和机器世界进行系统分析、设计和实现的统一的方法。
2 m( |" w/ r* m. q+ ^/ Y 2.程序设计方法学* a) ?1 d( U+ H- o6 q$ f) H0 i
随着软件系统规模的扩大和复杂性的增加,软件的开销也惊人地增加了,而软件的可靠性和可维护性却明显地下降了。为此,人们惊呼软件危机。产生软件危机的根本原因在于传统的冯•诺依曼机(Von Neumann Machine)的结构和人们求解问题的方法的不一致性。这种不一致性主要表现在以下几个方面:
8 x+ Z3 P/ e. F& `+ m& q. A" N! J7 ~5 O, _ (1)语言的鸿沟;4 ?& U! @- q5 S
(2)程序设计的鸿沟;
! n( ~0 D/ ~7 v4 Z) w+ f (3)Von Neumann机的鸿沟。语言的鸿沟是形成软件危机的主要原因之一。从目前看,面向对象的语言在缓解软件危机方面起到了很大的作用,取得了前所未有的积极效果。
$ g$ O6 \/ J1 C, C3 Q 3.面向对象的程序设计方法
! t z2 i7 {" \ 经验告诉我们:在软件系统中,“过程”或“操作”是不稳定的、多变的,而“数据结构”或“对象”却是相对稳定多了。因此,传统的以过程为中心而设计的软件的可重用性差;而以数据结构或对象为中心而设计的软件的可重用性较好。面向对象的程序设计方法以数据结构或对象为中心,力求问题在现实世界和机器世界中的一致性。在使用OOM进行程序设计时,首先进行的是面向对象的分析(Object Oriented Analysis)。其任务是了解问题所涉及的对象、对象间的关系,然后在现实世界中构造该问题的对象模型,以反映所要解决的“实质问题”。然后,进行面向对象的设计(Object Oriented Design),即设计软件的对象模型。根据软件开发环境的功能,把问题的对象模型从现实世界过渡到机器世界。在软件系统内设计出各个对象、对象间的关系(如继承关系),对象间的通信方式(如消息模式)等等。总之,在该阶段应明确各个对象应做些什么及其关系。面向对象的实现(Object Oriented Implementation)是指软件功能的具体实现,即怎么做的实现其中包括对象内部功能的实现、确定系统的用户接口。在实际开发一个系统时,上述三个阶段必须有机地结合在一起。现在提倡面向对象的软件开发方法,并进一步规范化,还开发了一系列OOM的软件工具和软件环境,以支持软件自动生成。
$ n% c# [- q9 T0 S k! ?5 _% R8 y 4.面向对象的方法的基本概念与特征5 V. {& L, i7 `: ^6 R8 ]
实质上,软件是问题及其求解方法的一种表达形式。显然,如果软件能直接自然地表达求解方法,则软件不仅易于理解,而且也具有较高可靠性与可维护性。如果能按照人们通常的思维方式,在机器世界里建立问题的模型,则可以提高软件的模块化和重用的可能性。面向对象方法的基本原则是:按照人们在现实世界中的通常的思维方式建立问题在机器世界的模型,设计尽可能自然地表现求解方法的软件。在OOM中,对象(object)和消息传递(Message passing)分别作为表达事物及事物间相互联系的概念。类(class)和继承(inheritance)作为适合人们一般思维方式的描述机制。方法(method)允许各种操作作用于某类对象上。这种集对象、类、消息、继承和方法于一体的OOM的基本点在于对象的封装(encapsulation)和继承。通过封装能将对象的定义和其实现分开;通过继承能体现类与类间的关系,并由此带来了动态连接(dynamic binding)和实体的多态性(polymorphisim)从而构成了OOM的基本特征。
) T8 f m# ?0 K: ]5 X# b
. g3 L1 b, X' h- A6 u (1)对象为了使用计算机求解问题,现实世界的对象必须表示成计算机内部的概念,即机器世界的对象(简称机器对象,或对象)。为此,“对象”有在两个不同世界的不同含义,可以从下文中区分开来。从存储角度来看,机器对象占有一块存储空间,其中有数据也有方法。从机器实现机制来看,机器对象中私有数据表示了对象的状态,该对象的状态只能由私有的方法来改变它。每当需要对象来完成一定处理工作时,只能由其它对象向该对象发送消息,本对象响应消息后按照消息模式找出匹配的方法,并执行该方法,方法定义了该对象上的操作。 |