欢迎来到天天文库
浏览记录
ID:26930729
大小:336.82 KB
页数:37页
时间:2018-11-30
《《对象行为说明》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章对象行为说明$8.1操作分类对面向对象的数据库而言,相关的操作可以分为三类:I对象实例的构造,销毁II实例状态的查询III实例状态的转换I实例构造该类操作属函数操作,将返回一个新的对象实例OID该类操作又可细分为两类:原始构造:通过创建函数创建特定类型的新实例例:matrix$create(i)一般构造:通过执行某些计算而创建新实例。即新实例是对老实例的运算过程中产生的例:矩阵对象的转置而产生一个新的转置矩阵:零件的组装而产生一个新的组件对象实例:商品的拆分销售产生n个其他商品对象等等II对象状态查询该类操作称为观测函数observerfunction,
2、它返回一个相应对象的内部状态例.matrix.elem(I,j)----返回一个矩阵中I,j值Inorigin(vertex)----查询某点是否为原点I,II类操作均不会造成DB状态的不一致性III转换操作Mutators该类操作是一个过程,它将按照参数内容改变被激活的对象的内部状态例:矩阵相加m1.add(m2)III类操作会改变DB的状态,因此,设计该类操作时必须考虑DB的一致性状态的维护问题对象类型可以按状态是否能改变而分为:可转换的对象类型----至少包含一个转换操作不可转换的操作类型$8.2类型相关操作一个类型相关操作的定义分为两部分:操作说明:定
3、义了操作的接口的抽象特征操作定义:提供了操作实现代码操作说明子句opretion的语法结构Opretiondeclare:->[code]在一个对象类型里面唯一的标识了一个操作----不同类型间可以有同名操作指定了参数的数量,相关顺序和类型----参数表可以为空确定了返回结果的类型----若无返回结果,则指定为void[code]为可选部分
4、,它可以对实现部分的代码重新命名。否则,说明部分和实现部分的操作名要一致操作定义子句implementation结构Implementation操作头部:define[“(“”)”]is变量段:操作体:在declare子句中说明的每一个操作都必须在定义子句中有相应的代码操作头部的名字和变量表必须与说明子句中描述的一致变量段是声明局部变量的名字和类型操作体是程序段,用begin…end括起来PersistenttypeVertexispublic…b
5、ody[x,y,z:float;]operationsdeclaretranslate:Vertex->void;declarescale:Vertex->void;declarerotate:float,char->void;declaredistance:Vertex->float;declareinOrigin:->bool;…implementationdefinetranslate(t)isbeginself.x:=self.x+t.x;self.y:=self.y+t.y;self.z:=self.z+t.z;enddefinetranslate;
6、…endtypeVertex;类型相关操作的调用类型相关操作只能由该类型的“接受者对象”(receiverobject)来调用接受者对象与操作名间用”.”来分隔执行时,由变量引用(或复引用)的对象实例作为接受者对象来激活由“.”引用的操作例varmyVertex:Vertex;translationVertex:Vertex;…myVertex.translate(translationVertex);操作调用的约束及self概念接受者类型(receiverType):接受者对象的类型在对象系统中,一个类型相关操作只能被该类型的对象实例所调用即.接受者类型应与
7、定义该操作的类型相同在操作定义子句,代码实现部分,接受者对象由self来引用Self可看作为隐式的定义参数----为所有操作的接受者类型参数例:mycuboid.v1.translate(translationVertex);自底向上的类型定义O—O建摸中,一般而言总是自底向上构造应用领域在对象类型系统中最低层的类型首先被定义由底向上的逐层定义类型.在定义过程中,尽量利用底层类型的结构和操作构造上层的类型PersistenttypeCuboidispublic…body[v1,v2,v3,v4,v5,v6,v7,v8:Vertex;mat:Material;v
8、alue:float;]Operati
此文档下载收益归作者所有