关联对象访问AssociativeObjectAccess.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关联对象访问AssociativeObjectAccess

第十四章 关联对象访问 Associative Object Access 本章重点讲述GOM对关联对象查询的支持,即如何实现一个查询和如何描述用户的查询要求 在O-O DBMS中,实现一个查询是通过多态的Select函数来实现的 GOM支持二种查询语言GOMql、GOMsql 其中GOMql是基于关系语言QUEL在面向对象上的扩展 GOMsql是SQL在面向对象上的扩展 关联查询的操作对象为:类型范围(Type Extention),用户定义的集合对象和表对象 多态的关联选择操作定义及其实现 关联选择操作需要一个操作对象说明—在某个对象实例集合上,需要一个条件表达式作为选择的依据—选择谓词 当定义一个多态的选择操作时,选择谓词将以函数变元的方式作为操作变元 当选择谓词本身需要参数时,该参数必须在选择操作的参数表中说明 多态的选择操作的共同名字为Select 无参数的选择谓词—简单的布尔函数 多态选择操作说明为 Polymorph overload select (\t1={\t2}) :\t1 || ( \t2 || - bool ) - \t1 Code selectNoParam 语义为 类型\t1,是一个集合类型,其元素类型为\t2 Select操作有两个变元:接受者类型为\t1,另一个变元是一个布尔函数,它对类型为\t2的对象进行选择,返回一个布尔型结果 Select语义对t1的元素用布尔函数进行筛选; 多态选择操作的实现 define selectNoParam(selPred) is var result: \t1; candidate: \t2; begin result.create; !! 生成空结果集 foreach (candidate in self) if candidate.selPred then result.insert(candidate); return result; end define selectNoParam 应用举例 在立方体实例库中,查找某一个顶点是原点的立方体 分析:其选择谓词需要顺次检查一个立方体的8个点,是否有一个点的x、y、z坐标值为0,0±ε —— inOrigin 操作 其结果应当是下面二个集合的交集: 包含在立方体实例集合中的实例——myCuboid所引用 满足谓词inOrigin 的实例 多态的Select操作可以应用于任何一个集合类型 inOrigin定义 declare inOrigin: Cuboid || ?bool; define inOrigin is !!判断任何一个顶点是否处于坐标原点 return (( self.v1.x=0.0 ±ε and self.v1.y=0.0 ±ε and self.v1.z=0.0 ±ε)OR … ( self.v8.x=0.0 ±ε and self.v8.y=0.0 ±ε and self.v8.z=0.0 ±ε)); 变量定义和引用 var myCuboids, theCuboidsInOrigin:CuboidSet; …… theCuboidsInOrigin:=myCuboids.select(inOrigin); 示例2——查询退休职员 declare isRetired: Employee || ? bool; var retiredEmps: EmployeeSet; … retiredEmps:=ext(Employee).select(isRetired); 示例3——无名的选择谓词的使用 当布尔选择谓词比较简单,则可以λ 符号来实现操作过程的传递 示例:选择红色苹果的选择操作 Ⅰ.选择谓词用命名isRed表达 declare isRed: Apple ||?bool; define isRed is … Ⅱ.选择谓词用λ表达——直接传递过程 redApples:=myApples.select (λ x: x.color = “red”) GoldCuboid=mycuboid.select (λ x: x.met.name = “gold”) 带参数的选择谓词 该参数是为选择谓词服务的,所以需要在谓词函数中说明 由于在引用时,显然需要由Select来引用,因此,在Select的参数表中也要说明,规则如下: poly overload select (\t1={\t2}):\t1||(\t2||\t3 -

文档评论(0)

wumanduo11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档