《对象行为说明》PPT课件.ppt
《《对象行为说明》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《对象行为说明》PPT课件.ppt(37页珍藏版)》请在三一办公上搜索。
1、第八章 对象行为说明,$8.1 操作分类 对面向对象的数据库而言,相关的操作可以分为三类:I 对象实例的构造,销毁 II 实例状态的查询 III 实例状态的转换,I 实例构造,该类操作属函数操作,将返回一个新的对象实例OID该类操作又可细分为两类:原始构造:通过创建函数创建特定类型的新实例 例:matrix$create(i)一般构造:通过执行某些计算而创建新实例。即新实例是对老实例的运算过程中产生的 例:矩阵对象的转置而产生一个新的转置矩阵:零件的组装而产生一个新的组件对象实例:商品的拆分销售产生n个其他商品对象 等等,II 对象状态查询,该类操作称为观测函数observer functio
2、n,它返回一个相应对象的内部状态 例.matrix.elem(I,j)-返回一个矩阵中I,j值 Inorigin(vertex)-查询某点是否为原点I,II 类操作均不会造成DB状态的不一致性,III 转换操作 Mutators,该类操作是一个过程,它将按照参数内容改变被激活的对象的内部状态例:矩阵相加m1.add(m2)III类操作会改变DB的状态,因此,设计该类操作时必须考虑DB的一致性状态的维护问题对象类型可以按状态是否能改变而分为:可转换的对象类型-至少包含一个转换操作不可转换的操作类型,$8.2类型相关操作,一个类型相关操作的定义分为两部分:操作说明:定义了操作的接口的抽象特征操作定
3、义:提供了操作实现代码,操作说明子句opretion的语法结构,Opretion declare:-code 在一个对象类型里面唯一的标识了一个操作-不同类型间可以有同名操作指定了参数的数量,相关顺序和类型-参数表可以为空确定了返回结果的类型-若无返回结果,则指定为voidcode为可选部分,它可以对实现部分的代码重新命名。否则,说明部分和实现部分的操作名要一致,操作定义子句implementation结构,Implementation 操作头部:define“(“”)”is 变量段:操作体:在declare子句中说明的每一个操作都必须在定义子句中有相应的代码操作头部的名字和变量表必须与说明子
4、句中描述的一致变量段是声明局部变量的名字和类型操作体是程序段,用beginend括起来,Persistent type Vertex is public body x,y,z:float;operations declare translate:Vertex-void;declare scale:Vertex-void;declare rotate:float,char-void;declare distance:Vertex-float;declare inOrigin:-bool;implementation define translate(t)is begin self.x:=self
5、.x+t.x;self.y:=self.y+t.y;self.z:=self.z+t.z;end define translate;end type Vertex;,类型相关操作的调用,类型相关操作只能由该类型的“接受者对象”(receiver object)来调用接受者对象与操作名间用”.”来分隔执行时,由变量引用(或复引用)的对象实例作为接受者对象来激活由“.”引用的操作例 var myVertex:Vertex;translationVertex:Vertex;myVertex.translate(translationVertex);,操作调用的约束及self概念,接受者类型(rece
6、iverType):接受者对象的类型在对象系统中,一个类型相关操作只能被该类型的对象实例所调用 即.接受者类型应与定义该操作的类型相同在操作定义子句,代码实现部分,接受者对象由self来引用Self可看作为隐式的定义参数-为所有操作的接受者类型参数 例:mycuboid.v1.translate(translationVertex);,自底向上的类型定义,OO建摸中,一般而言总是自底向上构造应用领域在对象类型系统中最低层的类型首先被定义由底向上的逐层定义类型.在定义过程中,尽量利用底层类型的结构和操作构造上层的类型,Persistent type Cuboid is public body v
7、1,v2,v3,v4,v5,v6,v7,v8:Vertex;mat:Material;value:float;Operations declare length:-float;declare width:-float;declare height:-float;declare volume:-float;declare weight:-float;declare translate:Vertex-void code translateVertexCode;declare scale:Vertex-void code scaleCube;declare rotate:float,char-voi
8、d!rotation angle and axis as parameters code rotateCube;,Implementation define length is return self.v1.distance(self.v2)!delegate the computation to vertex v1 define width is return self.v1.distance(self.v4);define height is return self.v1.distance(self.v5);define volume is return self.length*self.
9、width*self.height;define weight is return self.volume*self.mat.specWeight;define translateVertexCode(t)is begin self.v1.translate(t);!Delegate translate to the Vertex instance v1 self.v8.translate(t);!Delegate translate to the Vertex instance v8 end define translateVertexCode;End type Cuboid,$8.4 对象
10、封装 Encapsulation,对象封装可以做到信息隐藏对象状态的转换只能通过调用在public子句中可见的操作来操纵为了保证对象状态转换的一致性,必须对所有的转换操作进行必要的封装。将可能造成不一致的转换操作私有化,或者,将其增加了维护状态一致性的操作后再放到public序列中。,示例:一个cuboid对象实例的转换隐藏,一个cuboid对象实例进行平移时,其一致性约束是8个点对象进行同步转换。而如下的操作则破坏了同步,造成状态不一致且无法检查 var myStrangeCuboid:Cuboid;myStrangeCuboid.create;!initialization of the
11、bounding vertices to form a unit cubemyStrangeCuboid.v1.x:=0.5;myStrangeCuboid.v1.y:=0.5;myStrangeCuboid.v1.z:=0.5;,通过封装控制不一致性的出现,persistent type Cuboid is public length,width,height,volume,weight,translate,scale,rotate body operations implementation end type Cuboid;,类型相关操作包含如下几类操作,内嵌操作 Build_in ope
12、rations不需用户定义,由系统提供的操作用户定义操作 user_defined operations 既在operations段声明,并在implemented 段实现的函数内部操作 inner operations:包含了内嵌和用户定义的操作全集外部操作 outer operations:出现在public子句中的操作,其为内部操作的子集内部操作集中,所有操作只能在self所指定的接受者对象上被激活,O-O对象类型与关系类型在一致性控制的区别,关系模型:不存在嵌套关系,因此,它的 一致性控制是事务级的,更难控 制.关系中关联对象间通过外键连 接,更容易出现不一致O-O模型:通过对象封装来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象行为说明 对象 行为 说明 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5496934.html