第十三章多重继承和多重替换MultipleInheritanceandMultiple.ppt
《第十三章多重继承和多重替换MultipleInheritanceandMultiple.ppt》由会员分享,可在线阅读,更多相关《第十三章多重继承和多重替换MultipleInheritanceandMultiple.ppt(23页珍藏版)》请在三一文库上搜索。
1、第十三章 多重继承和多重替换Multiple Inheritance and Multiple Substitutability,多重继承当一个子类从一个以上的超类型继承属性和方法 多从替代不同类型的对象之间的相互替代,多重继承,现实世界的复杂性,由于一个实体的多哥角色性,在进行泛化抽象时,常常需要从不同角度进行。反之,一个实体可以从不同继承特征,构成多重继承。 如图 OT3继承了OT1和OT2的全部特征(属性,操作) OT3是OT1和OT2的一个类型扩展 OT3的实例既可以替换OT1实例,也可以替换OT2实例,多重继承的有向无环图 DAG,多重继承构造了一个有向无环图,其总根为ANY 类型的
2、层次结构是连通的,没有孤立子,从根可以到达每一个类型结点,反子亦然 类型的层次结构是无回路的,即多重继承不支持递归 若只有单重继承,则DAG转化为树 GOM的多重继承是全继承概念,多重继承带来的问题,(一)操作OP的歧义-操作冲突 冲突原因: 一个op名字分别在不同父类(祖先)OT1, OT2中说明,操作体不同,则造成子类OT3在全继承情况下, op操作名的二义性。 若op在共同的祖先,如OT0中被定义,但在不同的父类型如OT1, OT2中被分别重定义,从而造成在OT3中的二义性。,操作二义性举例,一个操作bonus(奖励)分别在Student和Employee有定义,当一个奖励作用在”TA”
3、上时,究竟应当怎么处理呢?,declare bonus : Student | float declare bonus : Employee - void |float- void code bonusForStudents; code bonusForEmps; define define bonusForStudents(gpaInc) is bonusForEmps(salInc) is self.gpa := self.gpa * gpaInc; self.salary := self.salary * salInc; ;增加一个百分点的GPA ;增加一个百分点的Salary,var
4、bestEmp : Employee; bestStudent : Student; myTA, yourTA : TeachAsst; boss : Manager; (1) bestEmp := myTA; (2) bestEmp.bonus(1.1); ! 假定应当增加salary (3) bestStudent := yourTA; (4) bestStudent.bonus(1.05); ! 假定应当增加gpa (5) boss.bonus(1.5); ! 不会产生二义性,多重继承的操作冲突解决方案,注意:为了兼容已有程序,不能通过修改超类中的操作名来解决问题 解决冲突的方法 定义优
5、选权,允许用户指定继承的优先权 用户通过对Supertype子句中超类型队列来指定优先权 type OT supertypes OT1, OTn is,方法(1)实现选择op的方法: A:首先确定op是否在本类型中被定义 B:按DAG图,从优先队列中每一个超类开始,向上扫描每个枝条直到根,顺序检查op名称,首先被遇到的op被选中,解决冲突之方法二-显式重命名,对所继承的同名的操作,分别在当前子类型中重新命名 虽然操作op的名字在超类中不能修改,但在当前子类中可以用重命名来代替,不会影响兼容性。 Type OT Supertypes OT1(renames op to op1) OTm-1(re
6、names op to opm-1) OTm, is ,解决冲突方法三重定义操作,对op进行重新精化有两种选择: A:在当前子类型OT3中重新定义op操作 B:在OT3中指定凡遇到op操作实际上将与哪一个超类的op捆绑。 define type OT3 supertypes OT1,OT2 is operations refine op implementation define op self. OT1$op(); !执行OT1中定义op方法 end type OT3;,多重继承带来的冲突二-类型冲突,类型冲突是更严重的且目前无法消解的问题 (1)属性类型冲突:从不同的父类分别继承了一个同名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十三 多重 继承 替换 MultipleInheritanceandMultiple
链接地址:https://www.31doc.com/p-2584434.html