时间:2022-11-02 02:30:01 | 来源:信息时代
时间:2022-11-02 02:30:01 来源:信息时代
面向对象数据库分析 : 应用系统设计的基础和前提,它的主要目的是采用面向对象的分析方法(object oriented analysis,OOA),通过理解问题空间所涉及到的对象以及对象间的联系作用(即操作),建立相应的面向对象数据模型,并且力求该模型能真实地反映出所要解决的“实质问题”。
随着计算机应用领域的不断拓展,计算机辅助设计/制造(CAD/CAM)、计算机辅助软件工程(CASE)、图像处理、地理信息系统(GIS)等新的领域层出不穷,已具有广泛的实际应用背景。这些新型的应用领域对数据管理、数据库系统提出了全新的需求。而传统数据库系统由于数据结构简单,不能很好地支持新的数据类型和嵌套、递归的数据结构,因此很难满足新型应用的需要。正是在这种应用需求的驱使下,面向对象数据模型和面向对象数据库系统应运而生,它们是面向对象的程序设计技术与数据库技术相互结合的产物。
显然,面向对象数据库分析的最主要任务就是实现对象数据的建模,利用面向对象数据模型来描述和表达客观世界的种种事物。可见,面向对象数据模型是面向对象数据库应用分析的主要工具,它包括对象和类两个基本概念。
1.对象
在面向对象数据模型中,将客观世界中的实体抽象称为对象。对象可以定义为对一组信息及其操作的描述。对象间的相互操作均是通过发送消息和执行消息完成的,而消息是对象间的接口。严格地讲,在面向对象模型中,实体的任何属性都必须表示为相应对象中的一个变量和一对消息。其中,变量用于保存属性值,一个消息用来读取该属性值,另一个消息则用来更新该属性值。
此外,每一个对象都有一个类型(类),具体的单个对象成为类的一个实例。对象的操作也称为方法,对象都是封装的,即对象的物理表示和内部结构对于对象外部的世界是不可见的,外部的其他对象只能通过对象的消息来进行对象之间的交互。
2.类
具有相同特性的对象归为一类,对象的归并必须有意义,属于同一类的对象其特性必须相同。类描述了对象的行为。类的外部视图,或者说公共视图,描述了可能会发到实例的消息。每一个可能的消息定义为一个方法,用以响应消息。类的内部视图,或者说私有视图,则描述了包含实例信息的属性与私有方法。
数据库中通常有很多相似的对象。“相似”是指它们响应相同的消息,使用相同的方法,并有相同名称和类型的变量。对每个这样的对象单独进行定义是很浪费的,因此可以将相似的对象分组形成了一个类。一个类中的所有对象共享一个公共的定义,尽管它们对变量所赋予的值不同。面向对象数据模型中类的概念相当于E-R模型中实体集的概念。
通常,类与类之间存在三种基本的联系:
(1)继承: 是面向对象的一个基本特征,继承性允许不同类的对象共享它们公共部分的结构和特性。如果构造一个新类来继承另一个类,那么新类中不仅包含被继承类的属性和方法,还将有新的属性和方法,逻辑上被继承类称为超类,新类称为超类的子类,继承性可以用超类和子类的层次联系实现。一个子类可以继承某一个超类的结构和特性,称为“单继承性”;一个子类也可以继承多个超类的结构和特性,这称为“多继承性”。继承性是数据间的泛化/细化联系,是一种“is a”联系。
(2)包含: 不同类的对象之间可能存在着包含关系。包含其他对象的对象称为复合对象。包含关系可以有多层,形成类包含层次图。包含是一种“是一部分”(is part of)联系,因此包含与继承是两种不同的数据联系。目前,一种结合关系数据库和面向对象特点的数据库为那些希望使用具有面向对象特征的关系数据库用户提供了一条捷径。这种数据库系统称为“对象关系数据库”,它是在传统关系数据模型基础上,提供元组、数组、集合一类丰富的数据类型以及处理新的数据类型操作能力,并且有继承性和对象标识等面向对象特点。
(3)消息: 消息是根据应用需要而定义的一种类与类之间的协作机制。
在上述三种类间的基本联系中,由于继承与包含具有特定的语义信息,而消息本身并不具有某种特定的语义含义,因此在面向数据库应用系统设计过程中,只需考虑类与类之间的继承和包含关系,由它们构成一个类层次结构。类层次结构体现了对象数据的全局结构、操作及约束,如图1所示。
图1 类层次结构示例图
表1 关系模型与面向对象数据模型的对应关系
关系数据库 | 面向对象数据库 |
表(元组) | 类(对象) |
主KEY | OID |
属性 | 属性 |
关系上的操作(增、删、改、查询) | 方法、消息 |
完整性约束 | 约束方法、消息 |
E-R模型 | 类层次(OO模型) |