《2022年面向对象数据模型补充 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象数据模型补充 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 2.6 空间数据模型面向对象的基本概念1、对象含有数据和操作方法的独立模块,可以认为是数据和行为的统一体。如一个城市、一棵树均可作为地理对象。对于一个对象,应具有如下特征:12)具有一组描述特征的属性,以表明其在某一时刻的状态;3)具有一组表示行为的操作方法,用以改变对象的状态。2、类共享同一属性和方法集的所有对象的集合构成类。从一组对象中抽象出公共的方法和属性,并将它们保存在一类中,是面向对象的核心内容。如河流均具有共性,如名称、长度、流域面积等,以及相同的操作方法,如查询、计算长度、求流域面积等,因而可抽象为河流类。被抽象的对象,称为实例,如长江、黄河等。名师资料总结-精品资料欢迎下载-
2、名师精心整理-第 1 页,共 8 页 -3、消息对对象进行操作的请求,是连接对象与外部世界的唯一通道。4、方法对对象的所有操作,如对对象的数据进行操作的函数、指令、例程等。面向对象的特性面向对象方法具有抽象性、封装性、多态性等特性。1、抽象抽象是对现实世界的简明表示。形成对象的关键是抽象,对象是抽象思维的结果。抽象思维是通过概念、判断、推理来反映对象的本质,揭示对象内部联系的过程。任何一个对象都是通过抽象和概括而形成的。面向对象方法具有很强的抽象表达能力,正是因为这个缘故,可以将对象抽象成对象类,实现抽象的数据类型,允许用户定义数据类型。完名师资料总结-精品资料欢迎下载-名师精心整理-第 2
3、页,共 8 页 -2、封装是指将方法与数据放于一对象中,以使对数据的操作只可通过该对象本身的方法来进行。即一对象不能直接作用于另一对象的数据,对象间的通信只能通过消息来进行。对象是一个封装好的独立模块。封装是一种信息隐蔽技术,封装的目的在于将对象的使用者和对象的设计者分开,用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。也就是说,对用户而言,只需了解这个模块是干什么的即功能是什么,至于怎么干即如何实现这些功能则是隐蔽在对象内部的。一个对象的内部状态不受外界的影响,其内部状态的改变也不影响其它对象的内部状态。封装本身即模块性,把定义模块和实现模块分开,就使得用面向对象技术开发或设计的软
4、件的可维护性、可修改性大为改善。3、多态多态是指同一消息被不同对象接收时,可解释为不同的含义。因此,可以发送更一般的消息,把实现的细节都留给接收消息的对象。即相同的操作可作用于多种类型的对象,并能获得不同的结果。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 8 页 -面向对象模型的四种核心技术1、分类类是具有相同属性结构和操作方法的对象的集合,属于同一类的对象具有相同的属性结构和操作方法。分类是把一组具有相同属性结构和操作方法的对象归纳或映射为一个公共类的过程。对象和类的关系是“实例”(instance-of)的关系。同一个类中的若干个对象,用于类中所有对象的操作都是相同的。属
5、性结构即属性的表现形式相同,但它们具有不同的属性值。所以,在面向对象的数据库中,只需对每个类定义一组操作,供该类中的每个对象使用,而类中每一个对象的属性值要分别存储,因为每个对象的属性值是不完全相同的。例如,在面向对象的地理数据模型中,城镇建筑可分为行政区、商业区、住宅区、文化区等若干个类。以住宅区类而论,每栋住宅作为对象都有门牌号、地址、电话号码等相同的属性结构,但具体的门牌号、地址、电话号码等是各不相同的。当然,对它们的操作方法如查询等都是相同的。2、概括概括是把几个类中某些具有部分公共特征的属性和操作方法抽象出来,形成一个更高层次、更具一般性的超类的过程。子类和超类用来表示概括的特征,表
6、明它们之间的关系是“即是”(is a)关系,子类是超类的一个特例。作为构成超类的子类还可以进一步分类,一个类可能是超类的子类,同时也可能是几个子类的超类。所以,概括可能有任意多层次。例如,建筑物是住宅的完名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 8 页 -超类,住宅是建筑物的子类,但如果把住宅的概括延伸到城市住宅和农村住宅,则住宅又是城市住宅和农村住宅的超类。概括技术的采用避免了说明和存储上的大量冗余,因为住宅地址、门牌号、电话号码等是“住宅”类的实例(属性),同时也是它的超类“建筑物”的实例(属性)。当然,这需要一种能自动地从超类的属性和操作中获取子类对象的属性和操作的机
7、制。3、聚集聚集是将几个不同类的对象组合成一个更高级的复合对象的过程。术语“复合对象”用来描述更高层次的对象,“部分”或“成分”是复合对象的组成部分,“成分”与“复合对象”的关系是“部分”(partsof)的关系,反之“复合对象”与“成分”的关系是“组成”的关系。例如,医院由医护人员、病人、门诊部、住院部、道路等聚集而成。每个不同属性的对象是复合对象的一个部分,它们有自己的属性数据和操作方法,这些是不能为复合对象所公用的,但复合对象可以从它们那里派生得到一些信息。复合对象有自己的属性值和操作,它只从具有不同属性的对象中提取部分属性值,且一般不继承子类对象的操作。这就是说,复合对象的操作与其成分
8、的操作是不兼容的。4、联合联合是将同一类对象中的几个具有部分相同属性值的对象组合起来,形成一个更高水平的集合对象的过程。术语“集合对象”描述由联合而构成的更高水平的对象,有联合关系的对象称为成员,“成员”与“集合对象”的关系是“成员”(member of)的关系。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 8 页 -在联合中,强调的是整个集合对象的特征,而忽略成员对象的具体细节。集合对象通过其成员对象产生集合数据结构,集合对象的操作由其成员对象的操作组成。例如,一个农场主有三个水塘,它们使用同样的养殖方法,养殖同样的水产品,由于农场主、养殖方法和养殖水产品等三个属性都相同,故
9、可以联合成一个包含这三个属性的集合对象。联合与概括在概念上不同。概括是对类进行抽象概括;而联合是对属于同一类的对象进行抽象联合。联合有点类似于聚集,所以在许多文献中将联合的概念附在聚集的概念中,都使用传播工具提取对象的属性值。单重继承和多重继承1、单重继承指仅有一个直接父类的继承,要求每一个类最多只能有一个中间父类,这种限制意味着一个子类只能属于一个层次,而不能同时属于几个不同的层次。如图2-6-9 所示,“住宅”是父类,“城市住宅”和“农村住宅”是其子类,父类“住宅”的属性(如“住宅名”)可以被它的两个子类继承,同样,给父类“住宅”定义的操作(如“进入住宅”)也适用于它的两个子类;但是,专为
10、一个子类定义的操作如“地铁下站”,只适用于“城市住宅”。单重继承可以构成树形层次,最高父类在顶部,最特殊的子类在底部,每一类可看作一个结点,两个结点的“即是”关系可以用父类结点指向子类结点的矢量来表示,矢量的方向表示从上到下、从一般到特殊的特点。完名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 8 页 -继承不仅可以把父类的特征传给中间子类,还可以向下传给中间子类的子类。图 2-6-9 中的三个层次的继承体系。“建筑物”的特征(如“户主”、“地址”等)可以传给中间子类“住宅”,也可以传给中间子类的子类“城市住宅”和“农村住宅”。2、多重继承允许子类有多于一个的直接父类的继承。严格
11、的层次结构是一种理想的模型,对现实的地理数据常常不适用。多重继承允许几个父类的属性和操作传给一个子类,这就不是层次结构。GIS 中经常遇到多重继承问题。图2-6-10 是两个不同的体系形成的多重继承的例子。一个体系为交通运输线,另一个体系为水系。运河具有人工交通运输线和河流等两个父类特性,通航河流也有自然交通运输线和河流等两个父类的特性。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 8 页 -继承和传播的区别继承和传播在概念和使用上都是有差别的。这主要表现在:1)继承是用概括(“即是”关系)体系来定义的,服务于概括,而传播是用聚集(“成分”关系)或联合(“成员”关系)体系来定义的,作用于联合和聚集;2)继承是从上层到下层,应用于类,而传播是自下而上,直接作用于对象;3)继承包括属性和操作,而传播一般仅涉及属性;4)继承是一种信息隐含机制,只要说明子类与父类的关系,则父类的特征一般能自动传给它的子类,而传播是一种强制性工具,需要在复合对象中显式定义它的每个成员对象,并说明它需要传播哪些属性值。完完名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 8 页 -
限制150内