当前位置:文档之家› 面向对象数据库简介

面向对象数据库简介

面向对象数据库简介
面向对象数据库简介

面向对象数据库简介

数据模型是数据库系统的核心和基础。数据库系统的发展以数据模型为主线,以数据模型的进展为分代的主要依据。第一代数据库系统是支持层次和网状数据模型的数据库系统。第二代数据库系统是关系型数据库系统关系型数据库系统在商业领域取得巨大成功,已经成为数据处理应用的标准。然而,随着计算机技术的发展和应用的普及,人们要求数据库系统不仅能处理简单的数据类型,还要处理如图形、图像、音频、视频等更加复杂的信息。新一代面向对象的数据库系统是解决上述问题的有效途径。

在当今软件的世界里,面向对象技术一统天下,渗透到几乎所有软件设计领域、应用领域和工程领域。与此同时,在数据库领域中,虽然关系数据库占据了绝大部分的市场份额,Oracle、DB2、SQLServer、Infomix成为数据库中的霸主,但关系数据库究竟还是是数据的一种存储方式,它不属于面向对象领域。当以关系数据库为数据存储方式时,由于关系概念与面向对象概念是完全不同的两个概念,它们之间存在严重的“阻抗失谐(Impedance Mismatch)”。为了解决这个问题,面向对象技术和数据库技术自然而然开始交流和结合,应用上层的面向对象要求渗透到数据库,甚至是数据库底层,并开始影响未来数据库的发展。

1.关系数据库的存在的问题

1)关系数据库的局限性

关系型数据库有比我们想的更多的局限性。存储和表示一些相当普通的数据结构也是非常困难的。试想一条公交线路——简单,有序的一组站点。关系型数据库以无序的方式存放表,只有创建一个特殊的索引,才能提取有序的数据。对象数据库就没有这个问题,它有有序的数组,不需要索引——这种索引是因为关系数据结构的局限性而要求创建的人工索引。

另一个简单的例子是产品用料单。在制造系统中记录一个产品和它的组件。组件自身也许还有组件,组件的组件还有组件,以此类推。一个关系型数据表不能表达这种部件与部件的部件之间的关系。而这些关系却是重要的数据。查询一个产品数据库,它的所有组件应该是一目了然的。关系型数据库结构使得开发员花费很多的工作来回答这种简单的查询,非常的复杂、困难。与这个例子类似的

例子:地图和它的路、河、路标;网站和它的页面、链接以及图像。实际上,搜集的信息越复杂,等级层次和交叉层次就越多,在简单二维表的关系型数据库就越不可能表达清楚。对象数据库没有这样的限制,事实上,他们就是为了解决这个问题而设计的。

2)关系型数据库和“阻抗不匹配”障碍

关系型数据的一个问题是他们所使用的基本数据结构是一种二维形式的表。在关系理论中,数据应该被组织成规范的表——也就是数据应该按唯一的方式组织,使得程序员能够消除冗余,确保数据变化的一致性。这种设计技术的引入确保了关系表中的数据是一组独立的、通过键相关的数据。这种技术来自集合论的数学理论,但问题是集合论不能表达数据之间所有的关系和结构。

以规范的方式存储数据常常要求程序员在存入数据库之前分解对象,并且重新组织数据,但要使用它是,在使用SQL查询(多重连接)。就像在车库中存储车时,你把它的门、椅子、轮子等等分别卸下来存放。这是非常耗时的,而是也是没有任何意义的。

但面向对象的语言占主导地位时,问题就越发明显了。这个问题通常被称为对象-关系不匹配障碍。这个问题是由于面向对象语言和关系型数据库使用语言的方法不同导致的,结果这个问题只能有程序员自己来解决。事实上,大多数关系型数据库在使用的时候并不是完全规范的,但即使是这样,不匹配问题还是发生,对编程人员的工作造成了很大的困难。我们可以估计使用关系型数据库的面向对象开发员25%到40%的时间用于编写代码来解决对象与关系表的匹配问题。

也许这个根本性困难产生了对对象数据的强烈需求,但多数对象数据库也有一个很大的问题:他们对SQL的支持很少。而许多软件工具需要SQL接口,尤其是商业智能应用。甚至有SQL接口的对象数据库也不能创建用于管理商业智能应用所产生的这类查询机制。

2.面向对象数据库的发展

面向对象技术和数据库技术的结合,开拓出多种结合方式,出现了许多新兴的概念,创造出来许多优秀的产品,面向对象技术和数据库技术的结合沿着三种途径发展:

1)面向对象数据库管理系统(OODBMS)

面向对象数据库管理系统以一种面向对象语言为基础,增加数据库的功能,主要支持持久对象和实现数据共享。利用类来描述复杂对象,利用封装方法来模拟对象行为,利用继承性来实现对象的结构和方法的重用。但是这种纯粹的面向对象数据库管理系统不能支持SQL语言,不能和现有的数据库结合起来,在扩展性和通用性方面受到限制。

2)对象关系数据库管理系统(ORDBMS)

对象关系数据库管理系统既支持SQL语句,也支持面向对象技术,实现了传统数据库技术和面向对象技术的完美结合。全球的数据库生产商争相研发这种数据库产品,数据库生产商竞争的一个焦点是如何在现有的数据库中加入面向对象技术。

3)对象关系映射数据库系统(ORMDBMS)

对象关系映射数据库系统是在对象层和关系层之间建立一个映射层,使得数据源中的关系数据能够进入对象领域,并且作为对象供上层应用使用。

3.面向对象技术应用到数据库中的优势

关系型数据库不能对大对象提供支持,例如,文本、图像、视频以及地球空间对象等对象就不符合关系模型,而应用到数据库中的面向对象技术解决这个问题。虽然在关系模型中,这些大对象常被作为位(bit)的扩展,但是这对数据库是没有意义的,数据库只可以理解数字、字符串和逻辑值。一部分数据库生产商将关系型数据库产品进行扩展,甚至为用户或合作伙伴提供对大对象嵌入式的搜索和检索的支持,但是这些改进和扩展对于一个不在概念上包括对大对象支持的系统而言是一种不太合适的折衷方案。面向对象技术利用对象、类等技术手段可以满足对一些领域数据库的特殊需求,于关系型数据库相比,面向对象技术的优势主要体现在以下几个方面:

1)利用对象来支持复杂的数据模型

传统的关系型数据库不能支持复杂的数据模型,例如:文本、图像、声音、动画、图像等数据,缺乏对这些数据信息的描述、操纵和检索能力。而面向对象技术具有这些方面的优势,面向对象技术应用到数据库领域后,对象的使用就可以满足对这些类型数据的相关操作。

2)支持复杂的数据结构

传统的关系型数据库不能满足数据库设计的层次性和设计对象多样性的需求,关系型数据库中的二维表不能描述复杂的数据关系和数据类型,面向对象技术中的对象可以描述复杂的数据关系和数据模型。

3)支持分布式计算和大型对象存储

面向对象技术中对象、封装、继承等方法的应用可以支持分布式计算,并且支持独立于平台的大型对象存储。

4)更好地实现数据的完整性

面向对象数据库支持复杂的数据结构和操作的约束、触发机制,从而可以更好地实现数据的完整性。

4.面向对象技术在数据库中的实现

由于计算机网络、多媒体技术、CAD/CASE等新型数据库应用的需要,数据库领域开始借助面向对象技术来满足这些需要。面向对象技术借助对象、封装和继承机制可以实现对复杂对象和复杂数据模型的支持,将面向对象技术应用于数据库是解决当今许多新型数据库应用中遇到的问题的好办法,虽然面向对象技术和数据库的结合沿着三个方向发展,当前多数数据库生产商都在研发如何将面向对象技术应用到关系数据库中。将面向对象技术应用到关系数据库中可以有两种方式:

一种方式是把面向对象技术中的对象作为关系数据库系统中的一种新的数据模型。关系表中的属性值包含对象指针,对象数据的操作在关系数据库之外进行。把面向对象数据模型(ODM)和关系数据模型(RDM)结合起来,对关系数据库管理系统进行扩充,但对象查询功能受到一定的限制。

另一种方式是把面向对象接口添加在关系数据库中,在关系数据库系统中增加一个对象至关系转换器,将上层的面向对象模式转化为关系存储模式,存放到关系数据库中。这样,在面向对象的数据库中关系存储模型位于底层,数据库用户可以利用标准的面向对象数据库语言进行查询处理,用户输入的面向对象数据库语言被转换成关系数据库语言,从而对底层的关系存储模式进行查询等处理,同时将操作结果按照对象方式返回给用户。这种实现方式使得数据库管理系统在

实现关系模型和面向对象模型之间的模型转换时需要一定的开销,执行效率比直接面向对象数据库要低一些,但这种扩充方式实现比较简单。

5.面向对象数据库的优缺点

面向对象数据库系统的优点:1. 能有效地表达客观世界和有效地查询信息:面向对象的方法符合一般人的思维规律、即将现实世界分解成明确的对象,这些对象具有属性和行为。2. 可维护性好:在耦合性和内聚性方面,面向对象数据库的性能尤为突出。这使得数据库设计者可在尽可能少影响现存代码和数据的条件下修改数据库结构。这种先进的耦合性和内聚性也简化了在异种硬件平台的网络上的分布式数据库的运行。3. 能很好地解决Impedance mismatch问题面向对象数据库系统的缺点:1. 技术还不成熟。面向对象数据库技术的根本缺点是这项技术还不成熟,还不广为人知。ODBMS如今还存在着标准化问题,由于缺乏标准化,许多不同的ODBMS之间不能通用。此外,是否修改SQL以适应面向对象的程序,还是用新的对象查询语言来代替它,目前还没有解决,这些因素表明随着标准化的出现,ODBMS还会变化。2. 面向对象技术需要一定的训练时间:人们还需要学习一套新的开发方法使之与现有技术相结合。此外,面向对象系统开发的有关原理才刚开始具有雏形,还需一段时间在可靠性、成本等方面令人可接受。3. 理论还需完善:从正规的计算机科学方面看,还需要设计出坚实的演算或理论方法来支持ODBMS的产品。此外,既不存在一套数据库设计方法学,也没有关于面向对象分析的一套清晰的概念模型,怎样设计独立于物理存储的信息还不明确。

6.结论

“阻抗失谐(Impedance Mismatch)” 的问题引发了当今数据发展的一大趋势——面向对象技术和数据库技术的结合和相互促进。对象是对复杂事物进行抽象思维结果,也是认识事物的普遍方法。对象编程和对象数据库符合人们对于客观世界的认识,事物的复杂行为在程序实现对象时也可以隐藏其复杂性。这些特性在现代的面向对象应用中越来越多地体现。因此,不管选择怎样的道路来实现,未来的几年或者十几年中,伴随着面向对象技术的发展,面向对象技术和数据库技术的结合将会稳步向前,逐渐向产业化和主流化方面发展。

面向对象的数据库技术

面向对象的数据库技术 肖阳辉 摘要:面向对象的数据库极有可能是数据库发展的方向,关系型数据库已显得力不从心,面向对象技术已经渗透到了数据库领域,把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库的技术机理并不高深,但它的设计思想却极有价值。论文关键词:关,键,词,数据库,面向对象,技术 随着应用的日趋复杂和智能化,传统的关系数据库的缺点一点点的暴露出来,人们迫切希望产生一种新的数据库解决方案来适应这些复杂需求。一种新的解决方案呼之欲出。而这个解决方案极有可能就是面向对象数据库技术。面向对象数据库的技术机理并不高深,但它的设计思想却极有价值。在传统的面向对象应用开发中,由于传统的关系数据库开发风格完全不同于面向对象风格,使得许多程序员难以从复杂的SQL编程中解脱出来(尽管已经有一些成熟的ORM技术框架,如Hibernate,但程序员仍需要做大量的数据库代码工作),从而也无法从实质上提高工作效率。 1、面向对象数据库技术概述 面向对象是当前计算机界关心的重点,面向对象是一种新的方法学,也是一种认知方法学。它是一种支持模块化设计和软件重用的实际可行的编程方法,它把程序间的逻辑活动建立在对象间的消息传递之上,且设计上更加符合现实世界,更加自然,所以面向对象方法得到了更广泛的应用。 面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。在数据库中提供面向对象的技术是为了满足特定应用的需要。随着许多基本设计应用(如MACD和ECAD)中的数据库向面向对象数据库的过渡,面向对象思想也逐渐延伸到其它涉及复杂数据的应用中,其中包括辅助软件工程(CASE)、计算机辅助印刷(CAP)和材料需求计划(MRP)。这些应用如同设计应用一样在程序设计方面和数据类型方面都是数据密集型的,它们需要识别于类型关系的存储技术,并能对相近数据备份进行调整。 还有许多应用要求多媒体数据库。它们要求以集成方式和文本或图形信息一起处理关系数据,这些应用包括高级办公室系统的其它文档管理系统。 面向对象数据库从面向程序设计语言的扩充着手使之成为基于面向对象程序设计语言的面向对象数据库。例如:ONTOS、ORION等,它们均是C++的扩充,熟悉C++的人均能很方便地掌握并使用这类系统。 面向对象数据库研究的另一个进展是在现有关系数据库中加入许多纯面向对象数据库的功能。在商业应用中对关系模型的面向对象扩展着重于性能优化,处理各种环境的对象的物理表示的优化和增加SQL模型以赋予面向对象特征。如UNISQL、O2等,它们均具有关系数据库的基本功能,采用类似于SQL的语言,用户很容易掌握。 2.面向对象数据库的优点 面向对象数据库是数据库技术与面向对象程序设计方法相结合的产物,由于同是面向对象方法学,所以其具有了所有面向对象的优点。同时,由于数据库主要操作的是集合(而不是单个数据),所以其又具有自身的特点和优点。 (1)提高数据库开发效率

面向对象数据模型

第三节面向对象数据模型 1、传统数据模型存在的主要问题 已于前述,目前非空间数据最主要的数据模型是层次模型、网状模型和关系模型。这里,我们分别介绍它们用于GIS地理数据库的局限性 (1)层次模型用于GIS地理数据库的局限性 层次模型反映了地理世界中实体之间的层次关系,在描述地理世界中自然的层次结构关系时简单、直观,易于理解,并在一定程度上支持数据的重构。它用于GIS地理数据库存在的主要问题是: 1)、很难描述复杂的地理实体之间的联系,描述多对多的关系时导致物理存储上的冗余; 2)、对任何对象的查询都必须从层次结构的根结点开始,低层次对象的查询效率很低,很难进行反向查询; 3)、数据独立性较差,数据更新涉及许多指针,插入和删除操作比较复杂,父结点的删除意味着其下层所有子结点均被删除; 4)、层次命令具有过程式性质,要求用户了解数据的物理结构,并在数据操纵命令中显式地给出数据的存取路径; 5)、基本不具备演绎功能和操作代数基础。 (2)网状模型用于GIS地理数据库的局限性 网状模型是层次模型的一般形式,反映了地理世界中常见的多对多关系,在一定程度上支持数据的重构,具有一定的数据独立和数据共享特性,且运行效率较高。用于GIS地理数据库的主要问题如下: 1)、由于网状结构的复杂性,增加了用户查询的定位困难,要求用户熟悉数据的逻辑结构,知道自己所处的位置; 2)、网状数据操作命令具有过程式性质,存在与层次模型相同的问题; 3)、不直接支持对于层次结构的表达; 4)、基本不具备演绎功能和操作代数基础。 (3)关系模型用于GIS地理数据库的局限性

关系模型表示各种地理实体及其间的关系,方式简单、灵活,支持数据重构;具有严格的数学基础,并与一阶逻辑理论密切相关,具有一定的演绎功能;关系操作和关系演算具有非过程式特点。尽管如此,关系模型用于GIS地理数据库也还存在一些不足。主要问题是: 1)、无法用递归和嵌套的方式来描述复杂关系的层次和网状结构,模拟和操作复杂地理对象的能力较弱; 2)、用关系模型描述本身具有复杂结构和涵义的地理对象时,需对地理实体进行不自然的分解,导致存储模式、查询途径及操作等方面均显得语义不甚合理; 3)、由于概念模式和存储模式的相互独立性,及实现关系之间的联系需要执行系统开销较大的联接操作,运行效率不够高。 不难看出,关系模型的根本问题是不能有效地管理复杂地理对象。 2、面向对象的概念 面向对象的基本概念是在本世纪70年代萌发出来的,它的基本做法是把系统工程中的某个模块和构件视为问题空间的一个或一类对象。到了80年代,面向对象的方法得到很快发展,在系统工程、计算机、人工智能等领域获得了广泛应用。但是,在更高级的层次上和更广泛的领域内对面向对象的方法进行研究还是90年代的事。 (1)基本思想和基本概念 面向对象的基本思想是通过对问题领域进行自然的分割,用更接近人类通常思维的方式建立问题领域的模型,并进行结构模拟和行为模拟,从而使设计出的软件能尽可能地直接表现出问题的求解过程。因此,面向对象的方法就是以接近人类通常思维方式的思想,将客观世界的一切实体模型化为对象。每一种对象都有各自的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了各种不同的系统。 在面向对象的方法中,对象、类、方法和消息是基本的概念。 对象——含有数据和操作方法的独立模块,可以认为是数据和行为的统一体。如一个城市、一棵树均可作为地理对象。对于一个对象,应具有如下特征: ·具有一个唯一的标识,以表明其存在的独立性; ·具有一组描述特征的属性,以表明其在某一时刻的状态; ·具有一组表示行为的操作方法,用以改变对象的状态。

面向对象数据库的应用范围和优缺点

面向对象数据库面向谁? 它的市场在哪里? 陶伟编译 当今冠以面向对象的东西很多,什么面向对象分析,面向对象设计,面向对象语言,面向对象操作系统,面向对象软件工程,等等,诸如此类,不胜枚举。似乎凡是和面对象挂上了边,就要好卖得多。其实面向对象也不是包治百病的灵丹妙药,数据库加上了面向对象同样不可能解决所有的问题,它不是大街上的冰棍,人人都可以买,它有自己独特的应用领域和特有的用户群。向不懂C++或Smalltalk的人兜售面向对象数据库,无异于对牛弹琴。 面向对象数据库的用户主要是从事系统软件和高级应用软件开发的程序员和系统设计人员,它不是大众数据库,在这方面它有别于关系数据库面。面向对象数据库好比是医生用的手术刀,干的是"细活儿",和家庭主妇用的菜刀(关系数据库)不一样,那是用来干"粗活儿"的。面向对象数据库是什么? 面向对象数据库=数据库系统+面向对象系统面向对象数据库必须满足两条准则:首先,它是一个数据库管理系统,其次它是一个面向对象系统。第一条准则可以翻译成六条特征:持久性、缓冲管理、数据共享、数据可靠性(事务管理和恢复)、即席查询以及模式修改。第二条准则可以翻译成:封装性、继承性、多态、对象标识、计算完整性、复杂对象和可扩展性。除了基本定义之外,为了满足所谓的非常规应用领域,还要引入一些扩展的特征:如版本管理、长事务、协同工作、触发和约束等。其中最重要的是封装性、继承性、多态,它们充分体现了面向对象的特征。面向对象数据库的应用领域面向对象数据库的应用面比较窄,主要集中于系统级的软件开发,以及数据密集的、复杂的应用软件开发,包括: ▲计算机辅助设计CAD ▲计算机辅助制造CAM ▲计算机集成制造系统CIMS ▲计算机辅助软件工程CASE ▲超大规模集成电路设计VLSI Design ▲地理信息系统GIS ▲决策支持系统DSS 这些应用领域和传统的商业应用领域有着显著不同,它们表现为复杂的数据类型,而不是简单的二维表,复杂的数据结构上定义着复杂的操作语义,需要不同层次的数据抽象能力,这些均是传统数据库系统所无法满足的。面向对象数据库与文件系统和关系数据库的区别文件系统存贮的数据格式因程序员的设计的不同而不同,一般不能保证数据的一致性和完整性,也很难多个用户共享。关系数据库存贮的是二维表,能保证数据的一致性与完整性,但只能用关系数据模型去描述世界。面向对象数据库则用面向对象数据模型去映射客观世界,存贮的不仅是数据,而且存贮了定义在数据上的操作语义,以及对象之间的复杂引用和约束关系。相对于文件系统和关系数据库而言,面向对象数据库的特点可以做以下的形象描述:面向对象数据库提供了一种存贮对象的更好方法,因为它提供了传统数据库的全部服务,然而却无存储和检索对象时对象的拆卸与装配的开销,比较关系数据库和面向对象数据库存储复杂对象,后者好似直接把汽车开进车库存放,而前者则是把汽车拆成零部件来保存。如何应用面向对象数据库面向对象数据已进入了商业应用领域,但没有取代现有的数据库系统,通常是在处理非常复杂的数据,或者数据很难被分解为关系数据库二维表的情况时,才采用面向对象数据库。一般认为图像数据的处理,使用面向对象数据库非常合适,其实还有许多数据类型可以用面向对象数据库来存储。就目前使用情况看,计算机辅助设计CAD是面向对象数据库最大的应用领域,现在电信、金融服务、医疗保健、制造过程控制等诸多领域,也开始推广使用。主要的面向对象数据库厂商主要的面向对象数据库厂商有以下几家。·Object Design,Inc. ·Gemstone System,Inc. ·O2 Technology,Inc. ·Objectivity,Inc. ·Versant Object Technology

1.面向对象概述

面向对象概述0.英语单词 1.课程介绍

2.面向过程编程和面向对象编程 1)面向对象是相对面向过程而言,两者都是编程思想。 2)面向过程强调的是功能行为,程序的实现是基于一个一个功能的实现;而面向对象强 调的是将功能封装进对象,程序的实现是基于对象的之间的消息传递。 3)面向对象是基于面向过程的,也就是说面向对象是在面向过程的基础上发展起来的。 4)面向过程程序设计中,程序的构成主体是一个一个的方法,而面向对象的程序设计中, 程序的构成主体是一个一个的类(生成对象的原型) 实例: ---------------------------------- 3.面向对象思想的特点 是一种符合人类思考或做事的习惯的思想,可以将复杂的事情简单化; 将程序员从执行者转换成了指挥者,不是将一件事情拆分完成,而是找到具有所需功能的对象来用,如果对象不存在,那么就创建一个具有所需功能的对象。 实例: --------------------------------------- 4.面向对象开发、设计的特征 设计的过程:其实就是在管理和维护对象之间的关系 开发的过程:其实就是在不断的创建对象,使用对象,指挥对象做事情 特征: 抽象abstract 封装encapsulation 继承inheritance 多态polymorphism ----------------------------------- 5.如何发现对象(抽象) 我们认识事物的过程一般是这样的:这是什么?有什么样的特征?能够做什么?所以,从现实中抽象出类分为三步: 1)找出它的种类?是什么?找(简单)名词 2)找出它的属性?有什么特征?找(修饰性)名词、形容词 3)找出它的行为?能够做什么?找动词 4)方法放的位置,那个类最清楚,就放在那个类中 5)只找关心的 实例1:美女 Gril 颜值:非常漂亮 实例2:帅哥钟打开玻璃门 人 姓:钟 性别:男

第9章 面向对象数据库系统习题解答

第9章面向对象数据库系统 习题解答 一. 简答题 1.面向对象程序设计的基本思想是什么?它的主要特点是什么? 面向对象程序设计的基本思想是用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)。 面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。 2.解释面向对象模型中的对象、对象标识、封装、类、类层次等概念。 对象是一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。是对现实世界某个实体的抽象。 对象标识:唯一地标识某个对象。 封装:隐藏属性,方法或实现细节的过程,对外仅公开接口。 类:对象类的简称,即共享所有属性和方法的所有对象集合。 类层次:一组父子关系的类构成的层次结构 3.给出一个面向对象数据库的类层次的实例。 4.举例说明超类和子类的概念。 超类是子类的抽象,子类是超类的特殊化,如学生、本科生、研究生三个类,学生是本科生和研究生的超类,而本科生和研究生是学生的子类。因为本科生和研究生继承了学生的所有属性和行为。 224

二.问答题 1.对于实体集学生、课程、班级以及它们相互之间的联系,请用ODL来描述。要求为所有的属性和联系(正向、反向)进行说明,并且指出每个类的范围和键码。 Interface Student { attribute integer StudentNo; attribute string StudentName; attribute integer Age; attribute string Dept; relationship Set courses; inverse Course::students; relationship Class bemasterof; Inverse Class::master; relationship Class inclassof; Inverse Class::students; }; Interface Course { attribute integer CourseNo; attribute string CourseName; attribute string Teacher; relationship Set students; Inverse Student::courses; }; Interface Class { attribute integer ClassNo; relationship Student master; Inverse Student::bemasterof; relationship Set students; Inverse Student::inclassof; } 2.对于第1题的ODL描述,请将ODL设计转换为关系数据库模式。 Student(StudentNo, StudentName,Age,Dept) Course(CourseNo,CourseName,Teacher) Class(ClassNo) 3. 根据第1题的ODL描述,请你应用FOR ALL和EXISTS量词设计一个OQL查询,并编程实现之。 输出李红选修的课程名称 Select c.CourseName from Course c where exists s in c.students: s.StudentName=’李红’ 225

面向对象程序设计概述

1.什么是结构化程序设计方法?这种方法有哪些优点和缺点? 【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。结构化程序设计的思路是:自顶向下、逐步求精。程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。 虽然结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;但与面向对象程序设计方法相比,结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。 2.面向对象程序设计有哪些重要特点? 【解答】软件设计的目的是为了解决日常生活中存在的各种实际问题,面向对象程序设计与以往各种程序设计方法的根本区别是程序设计的思维方法的不同。它主要具有如下重要特点: (1)面向对象程序设计实现了较直接地描述客观世界中存在的事物(即对象)及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象,并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。 (2)面向对象的程序设计将客观事物看作具有属性和行为的对象,通过对客观事物进行抽象来寻找同一类对象的共同属性(静态特征)和行为(动态特征),并在此基础上形成类。 (3)面向对象的程序设计将数据和对数据的操作封装在一起,提高了数据的安全性和隐蔽性。

面向对象的关系数据库设计

面向对象的关系数据库设计 2007-11-23 21:29 一、概念的区分 有些人把面向对象的数据库设计(即数据库模式)思想与面向对象数据库管理系统(OODBMS) 理论混为一谈。其实前者是数据库用户定义数据库模式的思路,后者是数据库管理程序的思路。用户使用面向对象方法学可以定义任何一种DBMS数据库,即网络型、层次型、关系型、面向对象型均可,甚至文件系统设计也照样可以遵循面向对象的思路。 面向对象的思路或称规范可以用于系统分析、系统设计、程序设计,也可以用于数据结构设计、数据库设计。OOSE自上至下、自始至终地贯彻面向对象思路,是一个一气呵成的统一体。面向对象的数据库设计只是 OOSE 的一个环节。 二、数据库设计的重要性 一般数据库设计方法有两种,即属性主导型和实体主导型。属性主导型从归纳数据库应用的属性出发,在归并属性集合(实体)时维持属性间的函数依赖关系。实体主导型则先从寻找对数据库应用有意义的实体入手,然后通过定义属性来定义实体。一般现实世界的实体数在属性数 1/10 以下时,宜使用实体主导型设计方法。面向对象的数据库设计是从对象模型出发的,属于实体主导型设计。 一般数据库应用系统都遵循以下相关开发步骤: 1 、设计应用系统结构; 2 、选择便于将应用程序与 DBMS 结合的DBMS体系结构,如RDBMS; 3 、根据应用程序使用的环境平台,选择适宜的DBMS(如Oracle)和开发工具(如PB); 4 、设计数据库,编写定义数据库模式的SQL程序; 5 、编写确保数据正确录入数据库的用户接口应用程序; 6 、录入数据库数据; 7 运行各种与数据库相关的应用程序,以确认和修正数据库的内容。 对以上各步骤,有几点需要说明: (1) 这不是瀑布模型,每一步都可以有反馈。以上各步不仅有反馈、有反复,还有并行处理。 比如一些库表在数据录入时,另一些库表设计还在修改。 这与我们的递增式开发方法有关,也与面向对象的特征有关。 (2) 上述顺序不是绝对的,大多数场合是从第三步开始的。 (3) 对大多数数据库应用系统来说,上述各步中最重要、最困难的不是应用系统设计而是数据库设 三、DBMS的支持和数据库设计 很多数据库应用系统开发者不重视数据库设计的原因是:他们太迷信DBMS,认为购入一个功能强大的 DBMS后数据库设计就不困难、不重要了。一些国内外的数据库教材常常是在为DBMS的开发厂商做宣传,而很少站在数据库用户角度,从数据库应用系统出发介绍数据库设计方法。结果往往使读者搞不清书中介绍的是数据库管理程序的设计思想,还是应用这种 DBMS 进行数据库设计的思想。 其实,DBMS只是给用户为已采用的数据库提供一个舞台,而是否使用这个舞台上

java面向对象的概述

1 类的定义 /* 手机事物: 属性:品牌,价格,颜色... 行为:打电话,发短信,玩游戏... 手机类: 成员变量:品牌,价格,颜色 成员方法:打电话,发短信,玩游戏 */ class Phone { //品牌 String brand; //价格 int price; //颜色 String color; //打电话的方法 public void call(String name) { System.out.println("给"+name+"打电话"); } //发短信的方法 public void sendMessage() { System.out.println("群发短信");

//玩游戏的方法 public void playGame() { System.out.println("玩游戏"); } } 2 手机类测试 /* 手机类的测试 */ class Phone { //品牌 String brand; //价格 int price; //颜色 String color; //打电话的方法 public void call(String name) { System.out.println("给"+name+"打电话"); } //发短信的方法 public void sendMessage() { System.out.println("群发短信");

//玩游戏的方法 public void playGame() { System.out.println("玩游戏"); } } class PhoneDemo { public static void main(String[] args) { //创建手机对象 //类名对象名 = new 类名(); Phone p = new Phone(); //直接输出成员变量值 System.out.println(p.brand+"---"+p.price+"---"+p.color); //给成员变量赋值 p.brand = "诺基亚"; p.price = 100; p.color = "灰色"; //再次输出 System.out.println(p.brand+"---"+p.price+"---"+p.color); //调用方法 p.call("林青霞"); p.sendMessage();

面向对象复习题

第一部分面向对象方法概述 一、填空题 1.对象的抽象是,类的实例是。 2.动态模型描述了系统的结构。 3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流, 有、和三种外部事件控制流。控制流是一个处理内 部的控制,均可结构化。 4.在C++和C中有一个函数,可以使用这个过程来说明构成系统主要对象 的那些类的实例。 5.继承性是自动共享父类属性和的机制。 6.对象具有封装性,实现了的组合。 7.在面向对象方法中,信息隐藏通过对象的来实现。类结构分离了 和,从而支持了信息隐藏。 8.抽象是指强调实体的、,忽略一些无关紧要的属性。类实现了对象 的和的抽象,它是对象的共性的抽象。 9.子类只继承的属性和操作,称为单重继承。 10.对象的抽象是,类的具体化就是,也可以说类的实例 是。 11.类具有,它是的行动的抽象。 12.对象具有状态,对象用来描述它的状态。 13.概念模型描述了系统的。功能模型指出,动态模型确定, 而对象模型确定。功能模型由组成。 14.面向对象有三个基本要素,它们是、、。 15.面向对象技术在三个级别上促进了共享,它们是、、。 16.活动是一种有时间间隔的操作,它是依附于。动作是一种瞬时操作,它 是与联系在一起的操作。 17.封装性是指所有软件部件内部都有明确的以及清楚的。每个软 件部件都有友好的,软件部件的与分离。 18.主要的对象类型有、、和。 19.同一个类中的共享是指同一个类中的对象有着相同的和相同 的。 20.结构化方法的本质是,其、可修改性和可重用性都比较差。 21.对象还有,用于改变对象的状态。对象实现了和的 结合。 22.面向对象方法认为系统是由应用域的组成。 23.对象具有状态,描述对象的状态用它的。 24.类具有属性,描述类的属性用。 25.一个方法有、和。 26.动态模型描述了系统的。 27.对象模型的主要元素是类,关联和。 28.通过这种机制和构造来实现不同应用中的信息共享。 29.面向对象程序设计语言与其它程序设计语言的主要区别是它具有。 30.对象具有很强的能力和功能。

相关主题
文本预览
相关文档 最新文档