2 持久性 不同对象的标识的持久性程度是不同的。若标识能在程序或查询的执行期间保持不变,则称该标识具有程序内持久性。若标识在从一个程序的执行到另一个程序的执行期间保持不变,则称该标识具有程序间持久性。若标识不仅在程序执行过程中而且在对数据的重组重构过程中一直保持不变,则称该标识具有永久持久性。例如,面向对象数据库中对象标识具有永久持久性,而SQL与严重的关系名不具有永久持久性,因为数据重构可能修改关系名。 对象标识具有永久持久性含义是:一个对象一经产生,系统就给它赋予一个在全系统中唯一的对象标识符,指导它被删除。对象标识是由系统统一分配的,用户不能对对象标识符进行修改。对象标识是稳定的,它不会因为对象中某个值的改变而改变。 3 面向对象数据库 面向对象数据库模式是类的集合。面向对象的数据模型提供了一种类层次结构。在面向对象数据库模式中,一组类可以形成一个类层次。一个面向对象数据库可能有多个类层次。在一个类层次中,一个类继承其所有超类的全部属性、方法和消息。 面向对象的数据库系统在逻辑上和物理上从面向记录上升为面向对象、面向可具有复杂结构的一个逻辑整体。允许用自然的方法,并结合数据抽象机制在结构和行为上对复杂对象建立模型,从而大幅度提高管理效率,降低用户使用复杂性。 4 面向对象数据库的特性 面向对象数据库的特性有主要表现在滞后联编和对象的嵌套两方面。 1) 滞后联编 在OO模型中,当子类定义方法与继承下来的超类的方法产生同名冲突,即子类只继承了超类中操作的名称,子类自己实现操作算法,并有自己的数据结构和程序代码。这样,同一个操作名就与不同的实现方法、不同的参数相联系。 一般地,在OO模型中对于同一操作,可以按照类的不同重新定义操作的实现,这称为操作的重载(同名函数,不同参数)。 例如,定义Tdate类,同时为了满足不同的设置需要,可以设定3个Set函数(): 以下是引用片段: Class Tdate { public: int month,day,year; //三个属性 void set(int m,int d,int y); //同时设置三个属性月,日,年 void set(int m); //设置月 void set(int d,int y); //设置日,年 } |
以下是引用片段: 程序中用到如下定义: Tdate myDate; 可以有以下不同的set方法(函数)的应用: MyData.set(12,3,2002); MyData.set(12); MyData.set(12,2002); |
为了正确执行myDate的一个set方法,OODBMS不能在编译时就把操作set联编到程序上,而必须根据运行时的实际需求,选择相应的对象类型的相应的程序进行联变,这个推迟的转换称为滞后联变。 在同一个面向对象数据库模式中,对象的某一属性可以是一个对象,这样对象之间就产生一个嵌套的层次结构。例如:设Obj1和Obj2是两个对象,如果Obj2是Obj1的某个属性的值,称Obj2属于Obj1,或Obj1包含Obj2。一般的,如果对象Obj1包含Obj2,则称Obj1位复杂对象或复合对象。 对象嵌套概念是面向对象数据库系统的一个重要概念,它允许不同的用户采用不同的粒度来观察对象。对象嵌套层次结构和类层次结构形成了对象横向和纵向的复杂结构。  
2/2 首页 上一页 1 2 |