最新十章继承Inheritance精品课件.ppt
《最新十章继承Inheritance精品课件.ppt》由会员分享,可在线阅读,更多相关《最新十章继承Inheritance精品课件.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 示例: persistent type Person is public name,age,spouse,marry body name : string; age:int; spouse : Person; operations declare marry: Person void; implementation define marry(victim) is self.spouse:= victim; end type Person; persistent type Employee supertype Person is public ss#,salary,boss,isRetired
2、 /public语句也被继承 body ss# : int; salary: float; boss : Employee; operations declare isRetired: bool; return (self.age64); end type Employee;继承解决了类型间的代码和结构的可复用性继承的可替换性概念 OTsub is-a OTsuper 从可替换性角度而言,强调了属于OTsub对象实例中的任一个实例对象,也属于OTsuper的实例集合 即:若 oext(OTsub) 则 oext(OTsuper) 因此ext(OTsub)是ext(OTsuper)的一个真子集
3、任何一个子类的实例都可以被替换为超类的实例 Person类型的特征定义 name age spouse marry Employee类型的特征定义 ss# salary boss isRetiredoPersonoEmployee 子类型Employee包含了超类型Person的所有属性 如果仅针对Person特征的访问,客户无法区别被访问的对象是Person还是Employee 因此,可以使用替换法则,在所有对Person引用的地方,用一个Employee实例不会破坏一致性 解决了类型特化后的灵活性问题 编译通过放松对类型检查(引用和参数的哑实结合时)的约束来解决子类型实例对超类型实例的可替
4、换性 type Type1 is type Type2 is type Type3 is public A ,A supertype Type1 is supetype Type2 is body A:; public B,B public C,C body B: ; body C: ; end type Type1; end type Type2; end type Type3;Type1AType2BType3CTypesis-ais-aA: A: B: A: B: C: id1id2id3InstancesType1Type2Type3ext(Type1)ext(Type2)ext(Ty
5、pe3) 从实例集合的角度来看 超类Type2的实例集合是Type1集合的真子集,Type3是Type2的真子集 类型的实例集合构成了对象的一个类别 class的概念 继承的传递构成了类型的层次结构 从类型定义的角度来看,子类型是超类型的一个扩展 子类型包含了超类型类型层次结构的根:ANY 对于数据库而言,所有对象具有共同特征: 对象标识OID 对象标识的测试 标识的识别 用户不可见的系统操作 建立一个根类型为ANY来承接所有的共性操作ANYOT1is-aOTnis-ais-ais-ais-ais-ais-ais-aCylinderConicalPipePipeinnerRadius2radi
6、us2innerRadiuscenter2center1radius综合举例 persistent type Cylinder is public center1,center2,radius,length,volume body center1: Vertex; center2: Vertex; radius: float; operations declare length: float; declare volume:float; implementation define length is return self.center.distance(self.center2) defin
7、e volume is return self.radius * 2.0 * 3.14 * self.length; end type Cylinder; persistent type Pipe supertype Cylinder is public innerRadius body innerRadius:float; operations declare hollowBodyVolume: float; refine volume: float; implementation define hollowBodyVolume is return self.innerRadius * 2.
8、0 * 3.14 * self.length; define volume is return super.volume-self.hollowBodyVolume; end type Pipe;继承概念下得操作重定义 对于从超类继承而来的操作,如果子类型有特殊的操作扩展,GOM支持对被继承的操作重定义 重定义用refine标识,对操作体进行重写,即定义子类型自己的操作版本 重定义的作用:既支持了操作的继承,又支持了子类型的特殊需求 子类型仍然可以引用超类中定义的各种算法例如:在pipe中用Super.volume来引用Cylinder中的体积计算方法重定义操作的动态捆绑 (Dynamic B
9、inding) 需要有一个控制机制保证对重定义操作的正确引用,即保证接受者对象能引用它所需要的最特殊的操作方式 该控制机制不能通过静态的类型检查实现 原因:可替代性原理支持实例的类型替换,而不考虑是否真需要一个超类型,因此,在编译时确定操作的版本是不可能的 只能在运行时动态检查接受者类型并进行相应操作的动态捆绑.示例:一个Cylinder对象实例库这是一个合法的DB状态 根据可替换性,id2,id3插入到CylinderSet中时合法的id1,id2,id3manyCylindersid0 CylinderSetcenter1:id13center2:id23radius:10.0id1 Cy
10、lindercenter1:id37center2:id49radius:5.0innerRadius:2.5id2 Pipecenter1:id55center2:id77radius:10.0innerRadius:5.0radius2:20.0innerRadius2:10.0id3 ConicalPipe 示例:在id0上的一个体积计算迭代操作 var c:Cylinder; totalVolume:float; foreach (c in manyCylinders) totalVolume:=totalVolume + c.volume; 在foreach的循环中,在语句c.vol
11、ume执行中,控制机制需要随着接受者对象c的类型的不同选择相应的Volume版本。一般的动态捆绑选择机制 从当前接受者对象的直接类型开始,沿着继承的层次结构中指向根ANY的路径进行搜索,所遇到的第一个操作的实现体被执行 该控制机制能保证相对于接受者对象的最特殊的版本被执行。 GOM设计追求的两个基本目标: 模型的灵活性: 利用继承的子类型定义和可替换性原则提供了模型的高度灵活性。即一方面可以逐级抽象,另一方面通过重定义操作可以满足子类型的特殊要求,并利用可替换性,用户可以沿类型层次上下结合,变换角色。 类型设计的类型安全:通过静态类型检查保证不能发生由于类型的不一致所导致的运行错误 这两个要求
12、互相矛盾,如何在保证类型安全下获得最大灵活性基于可替换性的类型定义/检查规则规则1:数据库设计者所施加的静态类型一致性约束必须被执行 静态类型约束为: 对于类型T的一个对象引用,必须确保该引用会获得一个类型T或T的子类的实例对象 无论何时,无论沿着什么程序控制路径,无论对象库处于何种状态,该约束必须被遵守。 规则2:类型检查要验证一个类型的全部特征(操作或属性)都是可获取的。即一个操作或属性的引用必须是接受者对象可获取的。保证类型安全的检查(1) 类型检查按上述的两个规则进行 类型检查的对象为:变量、属性、集合和表的元素、操作说明等 按规则1的要求,对表达式赋值号两端进行类型一致性检查要求::
13、=超类型同类型或子类型 示例: var somePerson: Person; someEmployee: Employee; (1) somePerson := someEmployee; (2) (3) someEmployee := somePerson; /不合法 Employee Person保证类型安全的检查(2) 按规则2:被引用(访问)的属性或操作必须是接受者类型所具有的。 示例: (1)somePerson.name;/合法 (2)somePerson.salary;/不合法 (3)someEmployee.salary; /合法 其中,可能somePerson会引用一个Em
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 继承 Inheritance 精品 课件
限制150内