面向对象数据模型

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三节面向对象数据模型

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)基本思想和基本概念

面向对象的基本思想是通过对问题领域进行自然的分割,用更接近人类通常思维的方式建立问题领域的模型,并进行结构模拟和行为模拟,从而使设计出的软件能尽可能地直接表现出问题的求解过程。因此,面向对象的方法就是以接近人类通常思维方式的思想,将客观世界的一切实体模型化为对象。每一种对象都有各自的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了各种不同的系统。

在面向对象的方法中,对象、类、方法和消息是基本的概念。

对象——含有数据和操作方法的独立模块,可以认为是数据和行为的统一体。如一个城市、一棵树均可作为地理对象。对于一个对象,应具有如下特征:

·具有一个唯一的标识,以表明其存在的独立性;

·具有一组描述特征的属性,以表明其在某一时刻的状态;

·具有一组表示行为的操作方法,用以改变对象的状态。

类——共享同一属性和方法集的所有对象的集合构成类。从一组对象中抽象出公共的方法和属性,并将它们保存在一类中,是面向对象的核心内容。如河流均具有共性,如名称、长度、流域面积等,以及相同的操作方法,如查询、计算长度、求流域面积等,因而可抽象为河流类。被抽象的对象,称为实例,如长江、黄河等。

消息——对对象进行操作的请求,是连接对象与外部世界的唯一通道。

方法——对对象的所有操作,如对对象的数据进行操作的函数、指令、例程等。

(2)面向对象的特性

面向对象方法具有抽象性、封装性、多态性等特性。

抽象是对现实世界的简明表示。形成对象的关键是抽象,对象是抽象思维的结果。抽象思维是通过概念、判断、推理来反映对象的本质,揭示对象内部联系的过程。任何一个对象都是通过抽象和概括而形成的。面向对象方法具有很强的抽象表达能力,正是因为这个缘故,可以将对象抽象成对象类,实现抽象的数据类型,允许用户定义数据类型。

封装是指将方法与数据放于一对象中,以使对数据的操作只可通过该对象本身的方法来进行。即一对象不能直接作用于另一对象的数据,对象间的通信只能通过消息来进行。对象是一个封装好的独立模块。封装是一种信息隐蔽技术,封装的目的在于将对象的使用者和对象的设计者分开,用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。也就是说,对用户而言,只需了解这个模块是干什么的即功能是什么,至于怎么干即如何实现这些功能则是隐蔽在对象内部的。一个对象的内部状态不受外界的影响,其内部状态的改变也不影响其它对象的内部状态。封装本身即模块性,把定义模块和实现模块分开,就使得用面向对象技术开发或设计的软件的可维护性、可修改性大为改善。

多态是指同一消息被不同对象接收时,可解释为不同的含义。因此,可以发送更一般的消息,把实现的细节都留给接收消息的对象。即相同的操作可作用于多种类型的对象,并能获得不同的结果。

(3)面向对象数据模型的四种核心技术

1)、分类

类是具有相同属性结构和操作方法的对象的集合,属于同一类的对象具有相同的属性结构和操作方法。分类是把一组具有相同属性结构和操作方法的对象归纳或映射为一个公共类的过程。对象和类的关系是“实例”(instance-of)的关系。

相关文档
最新文档