第 11章 面向对象数据库
? 新的数据库应用和新的数据类型
? 面向对象的数据模型
? 对象关系数据库与对象数据库
? 面向对象数据库研究中的几个特点
? RDBMS,ORDBMS和 OODBMS的比较
新的数据库应用和新的数据类型
? 新的数据库应用
? 计算机辅助设计( CAD),多媒体技术(音
频、视频文件的存储和处理)等
? 复杂的数据类型
? 用户定义的抽象数据类型
? 构造类型
? 继承
面向对象的数据模型
? 对象与类
? 对象的属性、方法和状态
? 对象的交互与消息
? 类的确定与划分
? 封装
? 继承性
? 多态性
? 对象标识符
对象与类
? 对象
? 数据特征、状态特征和行为特征
? 对象应该具有如下特性
? 每一个对象必须能够通过某种方式(如名称)
区别于其它对象
? 用特征或属性来描述对象
? 有一组操作,每一个操作决定对象的一种行为

? 具有相同数据特征和行为特征的所有对
象称为一个对象类,简称类。
? 对象是类的一个实例,类是型的概念,
对象是值的概念
类和数据类型 的区别
? 类型只表示数据结构的描述,而类将数据结构
和操作作为一个整体描述;
? 类型通常是静态的概念,而类却可以用方法表
现出其动态性;
? 类型在常规程序设计语言中的作用主要体现在
保证程序的正确性,而类的作用则在于作为一
种重要的模拟手段,以统一方式构造现实世界
模型;
? 类型与程序代码和代码共享无关,而类却提供
了软件重用和代码共享的机制。
对象的属性、方法和状态
? 属性
? 描述对象的数据特征
? 方法
? 完成具体操作的行为特征
? 状态
? 具体的操作通过改变属性的值体现了对象的状态
对象的交互与消息
? 对象之间的通讯是通过消息传递实现的
? 一个对象可以通过接收来自其他对象的消息而执行某些操
作(方法)
? 面向对象中的消息具有如下性质:
? 一个对象可以接收来自不同对象的相同形式的消息,可
以做出相同的响应;
? 一个对象可以接收来自其它对象不同形式的多个消息,
做出不同的响应;
? 相同形式的消息可以传递给不同的对象,从而得到不同
的响应;
? 如果消息的发送不考虑具体的对象,则对象可以响应消
息,也可以不响应消息。
类的确定与划分
? 如何确定和划分类是面向对象方法中的关键
? 需要做细致的需求分析
? 没有统一的方法和固定的标准
? 依赖于设计人员的知识、经验、技巧和对实际问
题的把握程度
? 基本原则就是把握事物的共性,将有相同的属性、
相同的操作的对象确定为一个类
? 不能把面向过程程序设计中的函数和过程简单地
组合成类,类不是函数的集合
封装
? 类包括了数据和操作,它们是被“封装”在类
定义中的。
? 用户通过类的接口(即可以在该对象类上执行
的操作的说明)进行操作。
? 对用户来讲“功能”是可见的,而实现部分是
封装在类定义中的,用户是看不见的。
? 消息传递是对象之间联系的唯一方式,这保证
了对象之间的高度独立性,这种特性有利于保
证软件的质量。
继承性
? 在面向对象系统中允许用一个类去定义一个新
类,或者用几个类去定义一个新类,再或者用
一个类去定义几个新类,把这种特性称为继承
性。
? 继承、子类(派生类)、超类(基类)
? 子类可以继承超类的性质,也可以定义自己的
数据特征和方法。
继承包含的三个基本含义
? 如果类 B继承类 A,则类 B的对象具备类 A的对象的
全部能力;
? 如果类 B继承类 A,则类 B对象的内部结构包含类
A对象的内部结构;
? 如果类 B继承类 A,则类 A中实现其对象能力的代
码可以被类 B所引用。
超类和子类之间的明显特性
? 类之间有共享特征,子类可以共享超类中的数
据和程序代码;
? 类之间有数据差别或功能差别,在子类中可以
定义新的属性和新的方法,也可以屏蔽超类中
的部分属性和方法。
继承性概念带来的明显优点
? 它是一个强有力的建模工具,可以以自然的、
符合人们思维规律的方式给现实世界一个简明
准确的描述;
? 它有助于软件可重用性的实现。
多态性
? 同一个函数根据不同的引用对象可以完成不同
的功能;
? 同一个函数即便引用同一个对象,但由于传递
的参数不同也可以完成不同的功能。
对象标识符
? 在面向对象数据库中对象由对象标识符唯一标识。
? 对象标识符是内置的,它不像在文件系统中用文
件名标识一个文件,也不像在关系数据库中用关
键字标识一个元组。对象标识符在创建对象时由
数据库管理系统自动生成,并在整个生命周期中
唯一标识一个对象。
对象关系数据库与对象数据库
? 面向对象数据库的研究方法
? 扩充关系数据模型
? 在面向对象语言中嵌入数据库功能而形成面
向对象数据库
? 开发全新的数据模型,从底层实现面向对象
数据库系统
? 归纳为两种
? 对象关系数据库系统
? 对象数据库系统
三个术语和英文缩写
? 关系数据库管理系统( RDBMS)
? 对象关系数据库管理系统( ORDBMS)
? 面向对象数据库管理系统( OODBMS)
ODMG数据模型和 OQL
? 对象数据库使用全新的面向对象数据模型,该
模型的标准由 ODMG( 对象数据库管理组)制
定,所以也称为 ODMG数据模型,同时 ODMG
也定义了相应的对象查询语言 OQL。
? OQL类似于 SQL,其查询的语法结构也是
SELECT…FROM…WHERE ( 甚至支持
GROUP BY,HAVING和 ORDER BY),OQL
还支持复杂数据类型。
面向对象数据库研究中的几个特点
? 面向对象模型的优势
? 面向对象数据库发展过程的特点
? 面向对象数据库系统的基本特征
? 面向对象数据库研究中存在的问题
面向对象模型的优势
? 具有表示和构造复杂对象的能力;
? 由封装和信息隐藏概念提供的模块化机制;
? 通过封装、继承和类层次概念提供的软件重用
机制;
? 通过滞后联编( late binding) 等概念得到系统
扩充能力等。
面向对象数据库发展过程的特点
? 缺乏通用的数据模型;
? 缺乏坚实的形式化的理论基础;
? 具有较强的实践性。
面向对象数据库系统的基本特征
? 在数据模型方面支持对象、复合对象、封装、类、继承、
重载、滞后联编、多态性等基本概念。
? 数据库管理系统除了具有传统的数据库管理系统所具有的
功能(如并发控制、故障和恢复)外,还支持永久对象、
长事务处理和嵌套事务,具有版本管理和模式演化的能力,
能维护数据完整性,适合在分布式环境下工作。
? 数据库访问界面要支持消息传递,提供计算能力完备的数
据库程序设计语言,能解决数据库语言与宿主语言的某些
不匹配问题,提供类似 SQL的非过程化查询功能。
面向对象数据库研究中存在的问题
? 缺乏通用数据模型;
? 缺乏理论基础;
? 缺乏友好的用户界面与工具环境;
? 缺乏有力的查询优化。
RDBMS,ORDBMS和 OODBMS的比较
? RDBMS和 ORDBMS
? RDBMS不支持构造数据类型和面向对象特征,ORDBMS
是对 RDBMS的扩展,它基于关系模型,但支持构造数据
类型和面向对象特征。
? ORDBMS和 OODBMS的相似之处
? 支持构造数据类型和面向对象特征,类似的查询语言,
一般数据库管理系统的功能
? ORDBMS和 OODBMS的不同之处
? 基本原理不同
【本章小节】
? 本章首先介绍了面向对象数据库的概念
和特点,然后介绍了面向对象数据库 的
研究路线,以及 ORDBMS和 OODBMS各
自的研究方法,最后还比较了 RDBMS、
ORDBMS和 OODBMS的异同之处。