第十三章 面向对象数据库系统


1. 举例说明超类和子类的概念。

正确答案: 在第4题例子中: 工人和干部是人的子类,在职工人、退休工人、下岗工人是工人的子类, 行政干部、技术干部是干部的子类; 人是工人和干部的直接超类。人也是在职工人、退休工人、下岗工人、行政干部、技术干部的间接超类。


2. 面向对象程序设计的基本思想是什么? 它的主要特点是什么?

正确答案: 答案要点: 面向对象程序设计的基本思想是封装和可扩展性。 封装的特点: 面向对象程序设计就是把数据结构和数据结构上的操作算法封装在一个对象之中。 对象是以对象名封装的数据结构和可施加在这些数据上的私有操作。对象的数据结构 描述了对象的状态,对象的操作是对象的行为。 面向对象程序设计中,操作名列在封装对象的界面上,当其他对象要启动它的某个操作时,以操作名发一条消息,该对象接受消息,操作动作起来,完成对私有数据的加工。当一个面向对象的程序运行完毕时,各对象也就达到了各自的终态。输入、输出也由对象自己完成。 这种全封装的计算实体给软件带来了模块性、安全性等显著优点。因为它基本没有数据耦合,对象间没有因操作而产生的边界效应,出了错可以很快找到原因,所以易于维护和修改。 可扩展性的特点: 面向对象程序设计的可扩展性体现在继承性和行为扩展两个方面。 因为对象具有一种层次关系。每个对象可以有子对象。子对象可以继承父对象(及其祖先对象)的数据结构和操作,继承的部分就可以重用。 另一方面子对象还可以增加新的数据结构和新的操作。新增加的部分就是子对象对父对象发展的部分。 面向对象程序设计的行为扩展是指可以方便地增加程序代码来扩展对象的行为而不会影响该对象上的其他操作。


3. 定义并解释OO模型中以下核心概念: 对象与对象标识、封装、类、类层次。

正确答案: 答案要点:  对象与对象标识OID 现实世界的任一实体被模型化为一个对象,每个对象有一个唯一的标识,称为对象标识。  封装 每一个对象是其状态与行为的封装,其中状态是该对象一系列属性值的集合,而行为是在对象状态上操作的集合,操作也称为方法。  类 共享同样属性和方法集的所有对象构成了一个对象类简称类,一个对象是某一类的一个实例。类的属性的定义域可以是任何类,即可以是基本类也可以是包含属性和方法的一般类,还也可是这个类自身。  类层次 在一个面向对象数据库模式中,可以定义一个类(如C1)的子类(如C2),类C1称为类C2的超类(或父类)。子类(如C2)还可以再定义子类(如C3)。这样,面向对象数据库模式的一组类形成一个有限的层次结构,称为类层次。


4. OO模型中对象标识与关系模型中的“码”有什么区别?

正确答案: 答案要点: 对象标识具有永久持久性。一个对象一经产生系统就给它赋于一个在全系统中唯一的对象标识符,直到它被删除。对象标识是由系统统一分配的,用户不能对对象标识符进行修改。对象标识是稳定的,独立于值的,它不会因为对象中某个值的修改而改变。 关系模型中的“码”是值标识,不具有永久持久性,只具有程序内持久性。码是由用户 建立的,用来区分关系的不同元组。


5. 什么是单继承?什么是多重继承?继承性有什么优点?

正确答案: 答案要点: 若一个子类只能继承一个超类的特性(包括属性、方法和消息),这种继承称为单继承;若一个子类能继承多个超类的特性,这种继承称为多重继承。 继承性优点:  它是建模的有力工具,提供了对现实世界简明而精确的描述。  它提供了信息重用机制。由于子类可以继承超类的特性,这就可以避免许多重复定义。 (详细参见《概论》13.2.4)


6. 什么是操作的重载?在OODB中为什么要滞后联编?

正确答案: 答案要点: 在OO模型中对于同一个操作,可以按照类的不同,重新定义操作的实现,这称为操作的重载。这样,同一个操作名就与不同的实现方法,与不同的参数相联系。 为了提供这个功能,OODBMS不能在编译时就把操作名联编到程序上,必须在运行时根据实际请求中的对象类型和操作来选择相应的程序,把操作名与它联编上(即把操作名转换成该程序的地址),这个推迟的转换称为滞后联编。 (详细参见《概论》13.2.5)


7. 什么是OODB模式演进?为什么面向对象数据库模式的修改要比关系模式的修改复杂得多?

正确答案: 答案要点: 面向对象数据库模式是类的集合。模式为适应需求的变化会随着时间而变化,这称为模式演进。模式演进包括创建新的类、删除旧的类、修改类的属性和操作等。 面向对象数据库模式的修改要比关系模式的修改复杂的原因是:  模式改变频繁 使用OODB系统的应用通常需要频繁地改变OODB数据库模式。例如OODB经常运用于工程设计环境中,设计环境特征之一就是不断变化。  模式修改复杂 OO模型具有很强的建模能力和丰富的语义,包括类本身的语义、类属性之间和类之间丰富的语义联系,这使得模式修改操作的类型复杂多样。  OODB中模式演进往往是动态的,使得实现技术更加复杂。 (详细参见《概论》13.4)


8. 什么是对象-关系数据库?它的主要特点是什么?常用的实现方法有哪些?

正确答案: 答案要点: 对象-关系数据库系统是将关系数据库系统与面向对象数据库系统两方面的特征相结合,不仅支持核心的面向对象数据模型,而且支持传统数据库系统所具有的特征。 主要特点有: 1) 具有原来关系数据库的各种特点; 2) 扩充数据类型; 3) 支持复杂对象; 4) 支持继承的概念; 5) 提供通用的规则系统; 实现对象-关系数据库系统的方法主要有以下五类。 1) 从头开发对象-关系DBMS。 2) 在现有的关系型DBMS基础上进行扩展。扩展方法有两种:  对关系型DBMS核心进行扩充,逐渐增加对象特性。  不修改现有的关系型DBMS核心,而是在现有关系型DBMS外面加一个包装层。 3) 将现有的关系型DBMS与其他厂商的对象-关系型DBMS连接在一起,使现有的关系型DBMS直接而迅速地具有了对象-关系特征。连接方法主要有两种:  关系型DBMS使用网关技术与其他厂商的对象-关系型DBMS连接。  将对象-关系型引擎与关系型存储管理器结合起来,即以关系型DBMS作为系统的最底层,对象-关系型系统作为上层。 4) 将现有的OO型DBMS与其他厂商的对象-关系型DBMS连接在一起,使现有的面向对象型DBMS直接而迅速地具有了对象-关系特征。 5) 扩充现有的面向对象的DBMS,使之成为对象-关系型DBMS。