《面向对象数据库》PPT课件.ppt
OODBS面 向 对 象 数 据 库 系 统Object Oriented Database System(OODBS)(一)1OODBS3.1 面向对象概念与数据库系统面向对象概念与数据库系统 传统的关系数据库系统数据模型简单,无法满足新的计算机应用特别是非事务处理领域对数据库支撑要求的需要,如:计算机辅助设计与制造(CAD/CAM)计算机集成制造(CIM)计算机辅助软件工程(CASE)地理信息系统(GIS)物流资源规划(MRP,MRP2)企业资源规划(ERP)2OODBS3.1 面向对象概念与数据库系统面向对象概念与数据库系统解决方法开发各种专用数据库系统:RDBS的扩充如:工程数据库、多媒体数据库、图形数据库及图像数据库等不足:只能满足专门应用的需要,缺乏通用性开发新的数据模型与数据库系统:新一代的数据模型与数据库系统的主要特征与要求应该是:有构造复杂数据结构与模式的能力:嵌套、递归、抽象、分类、组装、分解具有多种数据类型及构造抽象数据类型的能力:聚集、时间、空间、几何形状、变长、大容量、具有多种操作能力,特别是操作复杂语义模型的能力,如:旋转、放大、具有对数据模型进行扩充演化的能力:模式修改3OODBS3.1 面向对象概念与数据库系统面向对象概念与数据库系统面向对象数据模型以及采用该模型的数据库系统能够满足上述主要特征与要求。以面向对象数据模型为核心的数据库系统称为面向对象数据库系统(object oriented database system,简称OODBS)。同样,以面向对象数据模型为核心的数据库管理系统称为面向对象数据库管理系统(object oriented database system,简称OODBMS)。4OODBS3.1 面向对象概念与数据库系统面向对象概念与数据库系统关系模型与关系数据库系统目前仍是在商业、事务处理、OA、MIS等传统数据库应用领域占主导地位的数据库系统。而对非传统应用,关系数据库系统的支撑度就较为低下,因此,从90年代初开始陆续出现了一些商品化的面向对象数据库管理系统,著名的如Object Store、O2,ONTOS等,并在非传统应用领域中发挥了重大作用。到90年代中期,不少关系数据库厂家如Oracle、Sybase、SQL Server、DB2以及Ingres、Informix等,经过不断努力都在其推出的新版本中不同程度地采用了面向对象中的一些思想与机制。由于这类数据库系统的本质还是关系数据库,因此我们称其为对象-关系数据库系统,采用的数据模型相应被称为对象-关系数据模型。在通常情况下,我们也将对象-关系数据库系统作为面向对象数据库系统的实现途径之一。5OODBS3.3.2 2 面向对象方法的基本思想面向对象方法的基本思想3.2.1 概概 述述OO是一种方法使用OO方法不仅可以认识客观世界,而且也可以表示客观世界,其特点是通过可构造的手段将客观要求表示出来,也就是说可用有限的构造手段与有限的步骤建立起一个客观世界的模型。目前该方法已广泛应用在计算机的各个方面:面向对象程序设计语言(OOP)面向对象分析(OOA)面向对象设计(OOD)面向对象数据库(OODB)面向对象用户界面面向对象的体系结构6OODBS3.2.1 概概 述述OO方法与传统方法的比较“面向计算机”方法:Computer Oriented是一种模块化、树状层次结构方法。该方法以便于计算机实现为主要目的,较少考虑其客观世界的实际背景。特点:在计算机中的实现方便,但模型构筑困难。(距客观世界较远,工具不统一)“面向对象”方法:Object Oriented以客观世界中的“实体”为中心的方法,能够较好地反映客观世界的实际要求,也可以通过OO工具在计算机中方便地实现。特点:统一的建模工具(OOA,OOD)易于实现(OOP,OODB)实现了方法的一致化和接口的无缝性7OODBS3.2.1 概概 述述例:数据库设计(RDB与OODB)客观世界关系数据关系数据库的的实现途径途径ER模型关系模型计算机实现面向对象数据库的实现途径面向对象数据库的实现途径面向对象模型 我们以图论中的树状结构的模型设计为例,来解释这两种方法在设计过程和设计结果上的差别。8OODBS3.2.1 概概 述述在关系数据库中的设计步骤概念设计(图1),概念设计(图2),逻辑设计(图3)起点 P(pno1,x,y)边 L(pno1,pno2)终点 P(pno2,x,y)P(pno,x,y,pno)终点 起点图图39OODBS3.2.1 概概 述述在OODB中的设计步骤概念模型与逻辑模型(图4-1 或 图4-2)点pnoxy终点图图4-1 OO模型模型点pnoxy起点图图4-2 OO模型模型10OODBS3.2.1 概概 述述数据操作方面的区别在树状结构中,操作具有一定的方向性,即从起点到终点。RDB:从起点到终点查找困难(图3)OODB:很方便(图4)11OODBS3.2 2.2 2 简单回顾简单回顾 面向对象方法起源于20世纪60年代末70年代初:SIMULA67、SMALLTALK、EIFFEL、C、Ada面向对象方法在80年代初开始在计算机的若干领域中得到了推广,它们是:在人工智能领域中知识表示方法、专家系统的开发方法、基于面向对象的人工智能语言在软件工程领域中面向对象的分析 与 面向对象的设计方法在可视化界面中在数据库中其它方面面向对象计算机IAPX432,面向对象分布式计算机Eden等12OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念 1.对象(object)客观世界中的任意一个实体。组成对象标识,静态特征,动态行为2.属性(attribute)反映对象的状态与特性,是每个对象固有的静态表示。属性型属性名,数据类型属性值可以赋予该属性的数值。属性值的多值性结构化值、集合值、OID例学生(学号,姓名,性别,出生日期,系别,所修课程)13OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念3.方法(method)又称为操作(operation),用于反映对象的行为特征,是对象的固有动态行为的表示,可用于审视并改变对象的内部状态(属性值)。方法的表示方法的接口:是方法的外部表示,如方法的名称,调用参数及返回结果的类型。方法的实现:代码4.对象标识符OID(object identifier)外界赋予每个对象的一个具有唯一性的名字,是区分不同对象的唯一标记。以替代传统观念中的“关键字”从上述的介绍内容可以知道,每个对象都是由一组属性、一组方法和一个具有唯一性的OID组成的,这样的对象具有稳定性、封装性和隐蔽性三个特性。14OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念5.稳定性(stationary)以属性(数据)为核心,以方法(程序)为附属体,可构成一个稳定的实体。6.封装性(encapsulation)对象的封装性将一个对象划分为两个部分对象的内部表示(即对象中的属性组成与方法实现)对象的外部表示(即方法接口,亦称对象界面)。对象封装的优点有利于对象代码及数据结构的维护提高对象的可靠性与可重用性。15OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念7.隐蔽性(hiding)对象的外部界面与内部表示的分离,使得外界只能通过方法的外部接口来访问该对象,而对象的属性组成和方法的内部实现则是不可见的。对象的隐蔽性屏蔽了对象的内部实现细节,简化外界对对象的认识与了解,方便了用户的使用。8.消息(message)消息是对象间的一种协作机制,一个对象可以通过向另一个对象发送消息来调用另一个对象中的方法,以获得其协作来共同完成某一个任务。消息仅作用于对象界面,再通过对象界面调用相应的方法来进一步影响与改变对象自身。用户对一个对象所做的操作也可以看成是一条发向该对象的消息,并通过该消息执行对象中的方法,以实现用户的操作要求或获得操作结果。16OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念消息的组成:Type A.Op(O1,O2,On)接收者:对象A操作名:Op操作参数及其返回结果的类型:O1,O2,On及Type例:int V1.weight()return(V1.车厢.weight()+V1.底盘.weight()+V1.驱动设备.weight();17OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念消息与方法的比较:方法是对象的内部操作,它包括方法的外部调用接口和内部实现细节两个部分。消息则是一个跨对象的对象间的操作。综上所述,综上所述,对象对象是一个由一组是一个由一组属性属性和一组和一组方法方法所组成所组成的一个的一个封装封装实体,每个对象都有一个系统赋予的具有实体,每个对象都有一个系统赋予的具有唯一性的名字(唯一性的名字(OID),),消息消息则是则是对象对象之间的一种协之间的一种协作机制。作机制。18OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念9.类(class)具有相同属性与方法的对象集合称为类。实例(instance):类中的对象类的定义可以简化人们对复杂世界的了解。例:类名类名属性属性方法方法学生学号,姓名,性别,出生日期,系别,年级,所修课程选课,登记成绩,统计学分绩,升级,转系19OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念有了类后,类中实例的属性与方法可以统一说明,同时类也可有一个统一的界面,消息不仅可以作为对象间作用的工具,更重要的可作为类间沟通的工具。同一个类中的属性由于实例的不一致而可能导致值的不一致,因此类的属性实际上是个变量(Instance variable)。类常量(Class value):在特殊情况下有些变量值在该类中是一致的,此时该变量称为类常量。如:人的耳朵有两个缺省值(default value):有些类的属性规定有缺省值。在创建一个新的对象(实例)时,如果没有给某个属性明确赋值,则该属性的取值就是其缺省值。类与类之间的关系:继承 与 合成20OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念10.继承(inheritance)在客观世界中存在着许多各种各样的对象和它们之间的复杂关系,为理解这些关系,常用的手法是对它们进行分类。例如:21OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念这样的分类有一些非常明显的特点:层次性:不循环继承性:下面的分类具有上面分类的部分/全部特性与行为,同时也有它自己的特性与行为。包含语义:上面的分类集合包含下面分类集合。这样的分类关系我们称之为继承。其中,下层的分类我们称其为上层分类的子类(sub class),而上层的分类则称为下层分类的超类(super class)。22OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念在数据库中,继承有其特定的语义含义:分类语义:子类继承超类的性质和行为全体/部分语义:超类的实例集合包含子类的实例集合抽取(象)语义:从子类到超类是对子类共有特性与行为的抽取(普化,generalization)个性语义:从超类到子类是一个特殊化、具体化的过程(特化,specialization)类继承提供了一个分析、了解和观察客观世界的一种方法。一般而言,子类继承超类的全部特性与行为(我们称其为全继承),但实际上往往发展为只继承超类的部分特性与行为(部分继承)。23OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念11.类继承层次结构(class inheritance hierarchy structure)链状层次结构,没有循环单继承一般情况下,类继承层次是一种树状结构(tree),这样的继承我们称之为单继承(图8)。24OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念多继承在有的情况下,也允许一个子类拥有多个直接超类,这样的继承我们称之为多继承(图9)。在多继承情况下,我们要求所有的类都具有一个共同的超类,从而构成一个格状结构(Lattice)。25OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念12.多态性(polymorphism)在继承过程中,可以重新修改或定义被继承下来的方法(属性)的定义信息(方法的调用接口)或方法的实现代码,该特性被称为多态性。重载(overloading):在继承过程中重新定义方法的实现代码。重定义(overriding):在继承过程中,重新定义被继承下来的属性或方法的调用参数的数据类型。例如:几何图形的面积计算个人所得税计算多态性的实现手段迟联编(late binding)动态联编(dynamic binding)26OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念13.类合成(class composition)用于反映对象的分解与组成关系(嵌套),它具有下述三种语义信息:组成语义(is-part-of):一个类可以有若干个合成类组成嵌套语义:一个类中属性的值域可以是另一个类(包括自己)联系语义:通过类中属性建立与其它类的联系27OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念14.类合成层次结构(class hierarchy structure)类合成关系一般而言是一种层次结构,即由下层的类合成上层的类,但它不是树结构,即在合成关系中允许一个类可以是上层多个类的组成类。合成关系允许循环,类合成层次结构图是一个网状结构。15.类层次结构(class hierarchy structure)类与类之间存在着三种关系:继承、合成与消息。其中:合成:用于反映类中属性与另一个类的联系继承:用于反映类与类之间的联系消息:根据应用需要而定义的一种类与类之间的协作机制继承与合成都具有特定的语义信息,而消息本身并不具有某种特定的语义含义。因此,在OODM中,我们主要考虑类的合成与继承关系,由它们可构成一个类层次结构。客观世界中的任何事物都可以用合成和继承这两种方式构造出来。28OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念29OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念16.持久性(persistance)对象的持久性挥发性对象:仅存在于应用的执行过程中的对象持久性对象:可以长期保存的对象类的持久性持久类:实例的OID、属性值、方法均可以长期保存,并具有共享性,可以为多个应用服务挥发类:与特定的应用相关,随应用程序的产生而产生、消亡而消亡,并具有共享性30OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念例:C+中的类与对象都是挥发性的,而OODB中的类与对象则均是持久性的。C+与OODB这两个面向对象系统的区别在于:C+中没有OID的概念;C+主要讨论(管理)对象,而OODB则主要讨论(管理)类;C+主要关心类与类之间的继承关系,而OODB也很重视类的合成关系;OODB中的持久类需要长期保存,并具有共享性,因此,OODB非常重视类(对象)的安全性、完整性、并发控制和故障恢复能力,而C+中则没有这些功能。31OODBS3.3 3 面向对象方法的基本概念面向对象方法的基本概念小结对象属性方法对象标识符OID稳定性封装性隐蔽性消息类继承类继承层次结构多态性 类合成类合成层次结构类层次结构持久性32