面向对象的数据库
随着近年来面向对象技术的兴起,面向对象方法在数据库应用领域也日益显示出其强大的生命力,其中主要的原因在于对象模型能够更好地描述复杂的对象,更好地维护复杂的对象语义信息。由于多媒体数据的特殊性,模型对象数据库的这种机制正好满足了多媒体数据库在建模方面的要求。但我们必须指出,面向对象数据库并不等于多媒体数据库,它们在很多方面研究的侧重点是不同的。
对象、属性、方法、消息的概念
对象 在面向对象的系统中,现实世界中所有概念实体都将模型化成为对象。对象由实体所包含的数据和定义在这些数据上的操作组成。
属性 组成对象的数据就称为对象的属性。对象的属性可以是系统或用户定义的数据类型,也可以是一个抽象的数据类型,也就是说,组成对象的某个属性本身可能仍然是一个对象,具有自己的属性和定义在属性上的操作。属性的这种本身仍然可以是对象的性质,可以方便地用来描述不同对象之间的联系。
方法 定义在对象属性上的一组操作称为对象的方法。方法体现了对象的行为能力,它与属性一样是对象的组成部分。在对象这个抽象层次上,我们用户只需要了解对象的外部特征,即对象具有哪些处理能力,而不需要了解其内部构成,包括数据和处理能力的实现方法。
消息 在面向对象的系统中,对象之间的通信和请求对象完成某种处理工作是通过消息传送实现的。消息传送相当于一个间接的过程调用。对象对它能够接受的每一个消息有一个相应的方法解释消息的内容,并执行消息指示的操作。一个对象可以同时向多个对象发送消息,也可以接受多个对象发送的消息。由于消息内容由接受消息的对象解释,同样的消息可能被不同对象解释为不同的含义。
对象的划分与界定
实际上,对于对象的划分与界定我们可以用一个概念――“对象封装”来表示。从数据存储的角度来看,所谓封装就是把一个个对应具体事物的数据集合明确地定义为一个个对象,并以对象作为数据库存储和访问的基本单位。这里有两点值得注意:第一,既然封装的数据对象是对应某一具体事物属性、特征的数字描述,那么,由于客观事物是运动的、动态变化的,对象封装的数据也应该体现这种动态性,所以在面向对象技术中,强调应该把数据与访问这些数据的有关程序一起封装到对象之中。程序实际上就是对数据如何进行处理和可能进行哪些处理的一种描述,所以,程序也是一种信息类型,一种特殊的动态数据。程序在未执行时,是以一种二进制数字代码文件方式存储或传输的,计算机网络或通信网络也把它当成一种广义的数据看待;程序在执行时对有关数据进行处理、操作,体现了客观事物属性、特征的动态变化。所以,在面向对象数据库中,把数据与其相关的程序封装在一起,能够更准确地体现客观事物的动态特征,也体现系统的动态性和生命力。如果存储的静态数据永远不去访问和使用它,那么,所存储的数据信息将失去其价值,也有人称为信息“腐烂”了。第二,对象封装的定义是一个逻辑的概念,封装在一个对象中的数据或程序可以是实际上集中在一起的,也可以是分布的,甚至可以分布在网络中的不同通信点上,重要的是封装的对象要有一个清楚的界限和一个明确的对外联系的接口。这样,我们就可以把对象的内部和对象的定义与实现分开,从而使内部内容受到保护,使数据信息内容更为隐蔽。所以,对象封装技术,有时也称为是一种信息隐蔽技术。
对象在多媒体中的应用
既然对象在计算机网络和通信网络中是对某种事物属性、特征的数字化的描述,而客观事物属性、特征又通常是以多媒体――多种信息类型综合表现的,那么用对象作为存储多媒体信息的基本单位,用面向对象方法构造数据库来解决多媒体信息的存储、检索和管理也就顺理成章了。例如,一幅图像、一首歌曲、一部包括伴音的电影以至一篇文章,都可以与它们对应的访问程序、操作方法封装在一起,作为一个个对象存储。关系型数据库主要面向数值、字符等比较简单的数据类型,而面向对象数据库则不限制存储数据的类型,自然支持多媒体的任何结构和类型的数据,包括综合的多媒体数据和允许用户自行定义的任何类型数据。允许用户自行定义数据类型进行存储,被认为是面向对象数据库方法的一个重要特点,也是面向对象数据库能够支持多媒体信息存储的一种体现。
对象的继承性与可重复利用性
对象的继承性与可重复利用性,是面向对象数据库技术的基础。在现实世界中,事物是以其不同属性和特征进行区分的,以其相同属性而联系的,这是系统划分子系统形成系统层次结构的基本概念与方法。它是面向对象数据库中形成对象数据模型和实现对数据存储、访问和管理的重要基础。俗话说物以类聚,把许多具有一定共同属性、特征的对象集合在一起,就可以形成一类对象或称为一个对象类,例如,黄种人、黑种人、白种人都具有能够思维、能够使用工具等人类的共同属性而形成人类,人类就是一个对象类,称为人类对象;反过来,黄种人、黑种人、白种人又都是人类对象的一个个实例,称为实例对象。这样分类以后,在类对象中只定义这一类对象的共同属性――人类的共性,而在实例对象中只定义各种人的不同个性――不同的肤色等。这体现了认识客观世界常用的两种方法:综合与分析方法。综合方法从不同具体事物属性、特征中归纳其共同特征,认识事物之间的联系和本质特征;分析方法从相似事物属性中分析其不同特征,认识事物之间的差异,以更深刻地认识具体事物。
面向对象方法中引入类的概念后,可以极大地减少数据存储的重复和提高访问效率,因为同一类数据中的相同数据和对这类数据的相同操作程序,都可以集中封装在一个类对象中,为属于这个类对象的所有实例对象所共享。共享的实现是与面向对象方法中的继承概念相联系的,因为实例对象自动继承它所属类对象的所有属性和特征,当访问具体实例对象时,就可以根据其在对象类别当中的位置,自动调用它属于的类对象中的操作程序。这种对象属性的继承性,大大提高了共用程序和数据的可重用性。
对象之间的“交流”
对象之间的“交流”是对面向对象数据库访问的基础。如果我们把面向对象数据库看成是一个系统,那么存储于面向对象数据库中按照一定数据模型和结构关系组织起来的数据对象,就是这个系统中的一个个子系统。数据对象的封装和数据对象之间的联系,要求为对象之间的通信交流设计一种规范的方法,我们称之为消息传递,它既是对象之间信息传递的一种通信协议,又是每个封装对象与外界联系的途径。封装在对象内部的程序及对有关数据的操作,只能由接收外部的消息来启动和执行。因此,敏感对象所能够接收的消息,实际上是根据对象中可能的操作来决定的。每一类操作设计一类消息,我们称之为消息模式,它规定了消息的基本格式。在给定的消息模式中设定一定参数,就可以形成具体的消息,对应对象中的各种具体操作。一个对象可以接受多种消息模式,对应对象内部的多种消息具体操作。
对对象发送消息的消息源,可能是访问和使用面向对象数据库而设计的应用程序或用户,也可能是数据库内部的另一个对象。应用程序通过规定格式的消息访问数据库,是面向对象数据库系统与外界联系的途径。数据对象接收到应用程序发送来的消息,执行消息规定的有关操作。在执行中可能需要根据与其他对象的继承关系,调用其他对象的共享数据,于是它也以发送消息的方式通知其他对象,所以用户的每次数据库访问,可能是在数据库中多个对象协同活动而完成的。面向对象数据库的各个子系统,正是利用这种通过消息传递方式的联系方式,既保证了对象内部操作的隐蔽性,又体现了数据库系统的结构整体性和对象之间的相关性。
[上一页] [下一页]
|