1 / 53
文档名称:

关联对象访问课件PPT.pptx

格式:pptx   大小:191KB   页数:53页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

关联对象访问课件PPT.pptx

上传人:读书之乐 2022/2/8 文件大小:191 KB

下载得到文件列表

关联对象访问课件PPT.pptx

相关文档

文档介绍

文档介绍:关联对象访问
关联对象访问
第1页
多态关联选择操作定义及其实现
关联选择操作需要一个操作对象说明—在某个对象实例集合上,需要一个条件表示式作为选择依据—选择谓词
当定义一个多态选择操作时,选择谓词将以函数变元方式作为操作变元
设定多个参数
编译器依据重载规则,从参数个数,寻找到正确实现版本
其约束条件为:在哑、实结合时,Select参数个数和各自类型必须与选择谓词参数个数、类型完全一致
关联对象访问
第10页
示例1——一个参数选择谓词
对Cuboid定义一个选择谓词bigCuboid,它能选择体积大于某个阈值立方体对象
定义
declare bigCuboid: Cuboid || float -> bool
code bigCuboidCode;
define bigCuboidCode(threshold) is
return( > threshold);
引用
var myCuboids, myBigCuboids: CuboidSet;
……
myBigCuboids:= (bigCuboid, );
关联对象访问
第11页
示例2——二个参数选择谓词
选择体积在一个范围(上限high,下限为low)立方体
declare volumeRange: Cuboid || float, float -> bool;
define volumeRange(low, high) is
return (<=high and >=low);
关联对象访问
第12页
迭代Iterators
能够在筛选基础上利用循环进行各种深入操作
比如:求符合体积要求Cylinders体积累加值
declare bigCyl: Cylinder || float -> bool
code bigCylCode;
define bigCylCode(threshold)
return(>= threshold);
……
var c: Cylinder;
myCylinders: CylinderSet;
bigCylindersTotalWeight: float:=;
……
foreach (c in (bigCyl, ))
bigCylindersTotalWeight:=bigCylindersTotalWeight + ;
关联对象访问
第13页
说明性查询语言GOMql
多态选择函数只是一个关联查询实现基础,对于复杂嵌套查询及其优化,表示力度不够,需要经过定义相关查询语言来实现
查询优化有两个方面处理
关系代数优化:编译时进行
物理查询路径优化:执行时进行
下面内容从用户角度出发,怎样查询需求正确地用对应查询语言序列来表示
GOMql是基于QUEL扩展
关联对象访问
第14页
一个对象实例库
类型定义
Type Emp is
{name:string ;
working:Dept;
salary:int;}
type Dept is
{name:string;
mgr:Manager;
profit:int;};
Type Manager
Supertype Emp is
[cars:{Car};];
type Car is
[license:string;
make:string;
horsepower:int;];
关联对象访问
第15页
路径表示式为查找引用链引用序列
示例:
P≡
示例类型定义中,关联对象联接,仅仅采取一个进入点方式
worksIn
------------
mgr
-----
cars
---->
make
--
Emp Dept Manager Car string
EMP
workIn
Dept
N
1
Dept
mgr
Manager
1
1
Manager
cars
Car
N
M
关联对象访问
第16页