- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 -
您可能关注的文档
- 人教版初中物理教材修订简介.doc
- 人教版化学必修二化学与自然资源的开发利用.doc
- 人教版必修一.ppt
- 人教版高二数学选修3测试卷.doc
- 人类发展所面临的问题.ppt
- 什么是手足口病手足口病(Hand-foot-mouthdiseaseHFMD.ppt
- 人教版八年级下册中国历史第九课.ppt
- 什么是社会保障卡.doc
- 什么是技术技术就是人类为了满足自身的需求愿望.ppt
- 今年4月我国氧化铝进口量小幅下降.doc
- 初中语文经典古文教学的有效性分析教学研究开题报告教学研究课题报告.docx
- 初中语文筛选与分析课文的方法探讨教学研究课题报告.docx
- 高中生物课程改革的挑战与对策教学研究课题报告.docx
- 高中生创造性思维训练的途径教学研究课题报告.docx
- 高中生科学实验报告写作的指导方法教学研究课题报告.docx
- 高中物理教学中概念图的应用实证研究教学研究课题报告.docx
- 教师情绪管理对教学效果的影响研究教学研究课题报告.docx
- 教师在课堂观察中的有效反馈机制研究教学研究课题报告.docx
- 初中生学习方式的变迁与教育应对教学研究课题报告.docx
- 初中生自我管理能力培养的研究教学研究课题报告.docx
文档评论(0)