第10章面向对象数据库课件.ppt
《第10章面向对象数据库课件.ppt》由会员分享,可在线阅读,更多相关《第10章面向对象数据库课件.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库系统基础教程数据库系统基础教程(第2版)叶小平叶小平 汤汤 庸庸 汤汤 娜娜 潘潘 明明 编著编著普通高等教育普通高等教育“十一五十一五”国家级规划教材国家级规划教材清华大学出版社清华大学出版社2数据模型是对现实世界中实体本身及其约束的抽象描数据模型是对现实世界中实体本身及其约束的抽象描述和实体间相互联系的逻辑刻画。以面向对象方法为述和实体间相互联系的逻辑刻画。以面向对象方法为指导对数据模型做语义解释,就可构建面向对象数据指导对数据模型做语义解释,就可构建面向对象数据模型(模型(object oriented data model,OODM)。而)。而按照按照OODM定义行为和联系的数据
2、对象构成的数据库定义行为和联系的数据对象构成的数据库称为面向对象数据库(称为面向对象数据库(object oriented database,OODB)。第第10章章 面向对象数据库面向对象数据库 对对OODB进行有效管理的数据管理系统称为面向对象进行有效管理的数据管理系统称为面向对象数据库管理系统(数据库管理系统(object oriented database management system,OODBMS)。以)。以OODBMS为核心构造的数据库系统则称为面向对象数据库系统为核心构造的数据库系统则称为面向对象数据库系统(object oriented database system,O
3、ODBS)。)。面向对象数据模型吸收了面向对象程序设计方法中的面向对象数据模型吸收了面向对象程序设计方法中的核心概念和基本方法,其要点是采用面向对象的观点核心概念和基本方法,其要点是采用面向对象的观点来描述现实世界中的实体(对象)的逻辑结构和对象来描述现实世界中的实体(对象)的逻辑结构和对象之间的联系与限制。之间的联系与限制。第第10章章 面向对象数据库面向对象数据库 3 “对象对象”(object)可以解释为客观世界中的客)可以解释为客观世界中的客体;体;“面向对象方法面向对象方法”(OO方法)则可以理解为以客方法)则可以理解为以客观世界中的客体为观察目标的方法。观世界中的客体为观察目标的方
4、法。OO方法出发点和基本目标在于使得人们分析、设计和方法出发点和基本目标在于使得人们分析、设计和实现一个系统的方法尽可能接近于人们认识该系统的实现一个系统的方法尽可能接近于人们认识该系统的方法,即描述问题的客体空间和解决问题的方法空间方法,即描述问题的客体空间和解决问题的方法空间在结构上尽可能一致。在结构上尽可能一致。10.1 对象与类对象与类10.1.110.1.1 对象对象45 OO方法突出特点是通过可构造手段表现客观要求以方法突出特点是通过可构造手段表现客观要求以及使用有限构造手段与步骤建立客观世界模型,从本及使用有限构造手段与步骤建立客观世界模型,从本质上来说,面向对象方法所构造模型可
5、在计算机上有质上来说,面向对象方法所构造模型可在计算机上有效实现,因此面向对象方法成为计算机科学技术中一效实现,因此面向对象方法成为计算机科学技术中一种广泛使用的方法。种广泛使用的方法。10.1 对象与类对象与类10.1.110.1.1 对象对象6人们将客观世界中所关注客体的抽象单位称之为人们将客观世界中所关注客体的抽象单位称之为“对对象象”。对象是面向对象方法中基本单位,需要作进一。对象是面向对象方法中基本单位,需要作进一步描述才能使其具体化与技术化,对象结构就是这种步描述才能使其具体化与技术化,对象结构就是这种技术化的描述。技术化的描述。对象是由一组数据结构以及其上的一组方法即程序代对象是
6、由一组数据结构以及其上的一组方法即程序代码封装起来的基本单位。由属性集合、方法集合和消码封装起来的基本单位。由属性集合、方法集合和消息集合三部分加上对象标识组成的对象封装体称为对息集合三部分加上对象标识组成的对象封装体称为对象结构。象结构。10.1 对象与类对象与类10.1.110.1.1 对象对象7对象具有封装性、隐蔽性与稳定性等重要特性。对象具有封装性、隐蔽性与稳定性等重要特性。(1)封装性)封装性 封装(封装(encapsulation)是使对象的外)是使对象的外部界面与内部实现之间实行清晰隔离的一种技术,是部界面与内部实现之间实行清晰隔离的一种技术,是OO模型的主要特征之一。封装使得用
7、户只能看到对象模型的主要特征之一。封装使得用户只能看到对象外在的界面信息(正如规格说明等),而看不到对象外在的界面信息(正如规格说明等),而看不到对象内部的信息(如方法实现细节),对象内部信息对于内部的信息(如方法实现细节),对象内部信息对于用户是屏蔽的。封装的意义首先在于安全性保证,其用户是屏蔽的。封装的意义首先在于安全性保证,其次在于相关模块的可扩展性。次在于相关模块的可扩展性。10.1 对象与类对象与类10.1.110.1.1 对象对象8(2)隐蔽性)隐蔽性 对象分为内部表示和外部表示。内部的对象分为内部表示和外部表示。内部的属性与行为的捆绑,封装之后对于外部用户透明,用属性与行为的捆绑
8、,封装之后对于外部用户透明,用户通过对象外部表示即界面(户通过对象外部表示即界面(interface)认识对象并)认识对象并与之通信联系。对象界面实际上是若干个外部接口,与之通信联系。对象界面实际上是若干个外部接口,它对外部开放并为外部所见,但屏蔽了内部细节,即它对外部开放并为外部所见,但屏蔽了内部细节,即具有隐蔽性(具有隐蔽性(hiddening)。对象隐蔽的意义在于外)。对象隐蔽的意义在于外部用户只需掌握简单的对象界面而不需了解复杂的内部用户只需掌握简单的对象界面而不需了解复杂的内部属性与行为,复杂处理简单化,方便了用户关于对部属性与行为,复杂处理简单化,方便了用户关于对象的认识与操作。象
9、的认识与操作。10.1 对象与类对象与类10.1.110.1.1 对象对象9(3)稳定性)稳定性 对象内部的对象行为建立在对象属性之对象内部的对象行为建立在对象属性之上,即行为服务于属性或行为依赖于属性,这中在对上,即行为服务于属性或行为依赖于属性,这中在对象内部建立起的以属性为核心并以行为为附属的稳定象内部建立起的以属性为核心并以行为为附属的稳定实体特性称为对象的稳定性(实体特性称为对象的稳定性(stationary)。如对于)。如对于树具有树叶、树干、树茎和树根等属性,只有对应于树具有树叶、树干、树茎和树根等属性,只有对应于这些属性才会有吸收地面水分(树根)、光合作用这些属性才会有吸收地面
10、水分(树根)、光合作用(树叶)及输送养分(树茎)等行为,这些构成了以(树叶)及输送养分(树茎)等行为,这些构成了以树的属性为核心的稳定实体。树的属性为核心的稳定实体。10.1 对象与类对象与类10.1.110.1.1 对象对象10消息(消息(message)是对象之间的联系信息。由于对象)是对象之间的联系信息。由于对象的封装性和隐蔽性,对象的消息仅仅作用于对象界面,的封装性和隐蔽性,对象的消息仅仅作用于对象界面,然后再通过界面进一步作用于对象内部。然后再通过界面进一步作用于对象内部。消息的作用消息的作用 请求对象为其服务;向对象传递消息请求对象为其服务;向对象传递消息并对对象操作;反馈服务结果
11、。并对对象操作;反馈服务结果。消息的组成消息的组成 接收者:表示消息所施加作用的对象;接收者:表示消息所施加作用的对象;操作要求:消息对对象的造作要求;操作参数:消息操作要求:消息对对象的造作要求;操作参数:消息行使操作时作需要的外部数据。行使操作时作需要的外部数据。10.1 对象与类对象与类10.1.210.1.2 消息消息11 消息发送与接收消息发送与接收 每个对象都可以发送和接收若干每个对象都可以发送和接收若干消息。面向对象数据模型中的消息。面向对象数据模型中的“消息消息”与计算机网络与计算机网络中传输的消息含义不同。它是指对象之间的操作请求中传输的消息含义不同。它是指对象之间的操作请求
12、的传递,而不考虑操作实现细节。的传递,而不考虑操作实现细节。10.1 对象与类对象与类10.1.210.1.2 消息消息12消息中仅包含发送者的要求,它告诉接收者要完成哪消息中仅包含发送者的要求,它告诉接收者要完成哪些处理,但并不指示接收者如何完成。消息由接收者些处理,但并不指示接收者如何完成。消息由接收者解释,并选择所需操作。一个对象可以接收不同形式解释,并选择所需操作。一个对象可以接收不同形式与内容的多个消息,同时,相同形式的消息也可发往与内容的多个消息,同时,相同形式的消息也可发往不同对象。不同对象对形式相同的消息可有不同解释不同对象。不同对象对形式相同的消息可有不同解释并完成不同操作。
13、消息在提供对象使用时应规定的格并完成不同操作。消息在提供对象使用时应规定的格式称为消息协议。式称为消息协议。10.1 对象与类对象与类10.1.210.1.2 消息消息13例例 设一个对象设一个对象A要求对象要求对象B完成其中的某种操作,则完成其中的某种操作,则只需向对象只需向对象B发送一个消息即可。发送一个消息即可。B接收到这个消息后,接收到这个消息后,根据消息模式找到与之匹配的方法,执行该方法后将根据消息模式找到与之匹配的方法,执行该方法后将执行的结果又以消息的形式发送给对象执行的结果又以消息的形式发送给对象A。10.1 对象与类对象与类10.1.210.1.2 消息消息1410.1 对象
14、与类对象与类10.1.210.1.2 消息消息15类(类(Class)是对具有共同属性和方法的对象全体的)是对具有共同属性和方法的对象全体的概括描述,它相当于关系模型中的关系模式。类给出概括描述,它相当于关系模型中的关系模式。类给出了属于其全部对象属性与行为的抽象定义,类中对象了属于其全部对象属性与行为的抽象定义,类中对象仅是类定义中的一个实体,即对象实例。学生是一个仅是类定义中的一个实体,即对象实例。学生是一个类,一个具体学生,例如类,一个具体学生,例如John就是学生类中一个对象就是学生类中一个对象实例。与关系模型需要首先描述关系模式类似,对象实例。与关系模型需要首先描述关系模式类似,对象
15、模型也首先需要抽象描述具有共同属性的对象的类,模型也首先需要抽象描述具有共同属性的对象的类,按照类来定义属性和方法,从而避免对每个对象一一按照类来定义属性和方法,从而避免对每个对象一一重复定义。查询操作等方法也定义在类上。重复定义。查询操作等方法也定义在类上。10.1 对象与类对象与类10.1.310.1.3 类类16类概念简化了人们对客观世界的认识,众多复杂对象类概念简化了人们对客观世界的认识,众多复杂对象因为有了类而简单清晰,人们可以对属于类的全体对因为有了类而简单清晰,人们可以对属于类的全体对象进行统一研究而不必对每个对象做个别重复讨论。象进行统一研究而不必对每个对象做个别重复讨论。类可
16、有统一界面,此时,消息不仅作为对象间通信工类可有统一界面,此时,消息不仅作为对象间通信工具,还可作为类之间通信工具。类也具有封装性、隐具,还可作为类之间通信工具。类也具有封装性、隐蔽性和稳定性,在原理分析上,类取代对象成为面向蔽性和稳定性,在原理分析上,类取代对象成为面向对象方法中实际研究与讨论的基本抽象单位。对象方法中实际研究与讨论的基本抽象单位。10.1 对象与类对象与类10.1.310.1.3 类类17类间基本关系可分为继承关系、组合关系和通信关系类间基本关系可分为继承关系、组合关系和通信关系(消息)三种情形。继承关系和组合关系是类之间的(消息)三种情形。继承关系和组合关系是类之间的两个
17、基本关系,反映的是类与类之间静态联系;类之两个基本关系,反映的是类与类之间静态联系;类之间类似于对象之间间类似于对象之间“消息消息”那样的通信关系反映的是那样的通信关系反映的是类与类之间的动态联系,下面主要讨论类的继承关系。类与类之间的动态联系,下面主要讨论类的继承关系。10.1 对象与类对象与类10.1.310.1.3 类类18(1)类继承基本概念)类继承基本概念 类与类之间的层次结构重要特类与类之间的层次结构重要特点之一就是继承(点之一就是继承(inheritance)。继承反映一个类能)。继承反映一个类能够自动继承其它某些类所具有的属性和方法。这是面够自动继承其它某些类所具有的属性和方法
18、。这是面向对象数据模型中避免重复定义的一个重要机制。继向对象数据模型中避免重复定义的一个重要机制。继承性比较自然地体现了类之间的承性比较自然地体现了类之间的“A is B”联系,它表联系,它表示示A中对象也是中对象也是B中对象,但中对象,但A中对象也具有中对象也具有B中对象中对象所不具有的属性或方法。所不具有的属性或方法。10.1 对象与类对象与类10.1.310.1.3 类类19此时,类此时,类A是类是类B的子类(的子类(subclass),类),类B是类是类A的的超类(超类(superclass).一个子类可以有一个或多个超类,一个子类可以有一个或多个超类,一个超类也可以有一个或多个子类,
19、这样形成了类与一个超类也可以有一个或多个子类,这样形成了类与类之间一种基本层次结构。类之间一种基本层次结构。10.1 对象与类对象与类10.1.310.1.3 类类20如果子类仅限于继承超类中的属性和方法,则定义子如果子类仅限于继承超类中的属性和方法,则定义子类就失去了意义。子类除了能继承超类中的属性和方类就失去了意义。子类除了能继承超类中的属性和方法外,还可用增加和取代的途径定义子类所具有的特法外,还可用增加和取代的途径定义子类所具有的特殊属性和方法。所谓增加就是在子类中定义新的属性殊属性和方法。所谓增加就是在子类中定义新的属性和方法;所谓取代就是在子类中以新的内容重新定义和方法;所谓取代就
20、是在子类中以新的内容重新定义超类中已有的属性和方法。超类中已有的属性和方法。10.1 对象与类对象与类10.1.310.1.3 类类21抽象类(抽象类(abstract class)是一种不能建立实例的类。)是一种不能建立实例的类。抽象类将有关的类组织在一起,抽象出一个公共的超抽象类将有关的类组织在一起,抽象出一个公共的超类,其它子类都从这个超类派生出来。通常一个抽象类,其它子类都从这个超类派生出来。通常一个抽象类只是描述了与这个类有关的方法接口或者方法的部类只是描述了与这个类有关的方法接口或者方法的部分实现,而具体的实现则在一个或几个子类中定义。分实现,而具体的实现则在一个或几个子类中定义。
21、抽象类一般用于定义一种协议或概念。抽象类一般用于定义一种协议或概念。10.1 对象与类对象与类10.1.310.1.3 类类22(2)类继承基本特性)类继承基本特性 类继承通常具有下面的四个基类继承通常具有下面的四个基本性质。本性质。传递性传递性 设有设有A,B,C三个类,其种类三个类,其种类C继承类继承类B,而,而类类B继承类继承类A,此时必有类,此时必有类C继承类继承类A。例如动物、哺。例如动物、哺乳动物与灵长类动物均为类,而其中灵长类动物继承乳动物与灵长类动物均为类,而其中灵长类动物继承哺乳动物,哺乳动物继承动物,此时必有灵长类动物哺乳动物,哺乳动物继承动物,此时必有灵长类动物继承动物。
22、继承动物。10.1 对象与类对象与类10.1.310.1.3 类类23单向性单向性 设有类设有类B继承类继承类A,则此时一定不能有类,则此时一定不能有类A继继承类承类B,如研究生类继承学生类,但学生类必不继承,如研究生类继承学生类,但学生类必不继承研究生类。研究生类。传递性和单向性说明了类继承具有单向层次性。传递性和单向性说明了类继承具有单向层次性。10.1 对象与类对象与类10.1.310.1.3 类类24可重用性可重用性 可重用性(可重用性(reuse)指得是子类可以重用超)指得是子类可以重用超类的全部资源,同时根据继承的传递性,它还可以重类的全部资源,同时根据继承的传递性,它还可以重用继
23、承链上所有超类资源。用继承链上所有超类资源。包含性包含性 继承除了具有类之间一般与特殊关系之外,继承除了具有类之间一般与特殊关系之外,还可以有包含关系,即灵长类继承哺乳动物类,此时还可以有包含关系,即灵长类继承哺乳动物类,此时灵长类必包含在哺乳动物中。类中继承的包含关系一灵长类必包含在哺乳动物中。类中继承的包含关系一般是真包含关系。般是真包含关系。10.1 对象与类对象与类10.1.310.1.3 类类25(3)多态性与联编多态性与联编 多态性与联编是类继承的重要技多态性与联编是类继承的重要技术特性术特性 多态性多态性 在类继承过程中,超类属性与方法在子类在类继承过程中,超类属性与方法在子类中
24、可以有不同的实现形式、方法与语义,这就称为多中可以有不同的实现形式、方法与语义,这就称为多态性(态性(polymophic)。如在图)。如在图2-12所示的类继承当中,所示的类继承当中,动物均有吃食物的行为,但是人类吃食物的实现形式动物均有吃食物的行为,但是人类吃食物的实现形式与一般动物不同,人类用工具吃食物,动物则直接用与一般动物不同,人类用工具吃食物,动物则直接用爪子。另外,同是用工具吃食物的方式也有所不同,爪子。另外,同是用工具吃食物的方式也有所不同,东方人使用筷子方式,而西方人使用刀叉。东方人使用筷子方式,而西方人使用刀叉。10.1 对象与类对象与类10.1.310.1.3 类类261
25、0.1 对象与类对象与类10.1.310.1.3 类类27多态性实际上反映了多态性实际上反映了“一名多义一名多义”,即一个名字可以,即一个名字可以具有多种语义。在具有多种语义。在“图形图形”类中,可以定义一个打印类中,可以定义一个打印(print)方法用于打印图形。对图形类中不同实例,)方法用于打印图形。对图形类中不同实例,其打印过程可以不同。只有当消息送到具体对象时,其打印过程可以不同。只有当消息送到具体对象时,才能确定采用什么打印过程。这即是才能确定采用什么打印过程。这即是“打印打印”方法的方法的多态性。多态性的意义在于可以为系统需求分析和设多态性。多态性的意义在于可以为系统需求分析和设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 面向 对象 数据库 课件
限制150内