第十二章多态操作Polymorphic和一般类型.ppt

第十二章多态操作Polymorphic和一般类型.ppt

ID:59056642

大小:137.50 KB

页数:32页

时间:2020-10-29

第十二章多态操作Polymorphic和一般类型.ppt_第1页
第十二章多态操作Polymorphic和一般类型.ppt_第2页
第十二章多态操作Polymorphic和一般类型.ppt_第3页
第十二章多态操作Polymorphic和一般类型.ppt_第4页
第十二章多态操作Polymorphic和一般类型.ppt_第5页
资源描述:

《第十二章多态操作Polymorphic和一般类型.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第十二章多态操作Polymorphic和一般类型多态操作需求的引入:在数据库概念上,有许多操作,例如查询操作,需要一个通用的独立于类型的格式,从而增加了软件设计的灵活性和可复用性多态操作的分类:---特定的多态:即是普通的重载操作---包含多态:允许一个特定类型的操作可以作用载子类型对象上---有界多态:多态的一般化描述,一个操作可以定义在多种类型上多态引入的需要实例示例1.对类型“人”,有年龄age和增加年龄IncAgeP的操作;对类型“酒”,有酒龄age和酒龄的增加操作IncAgeWTypePersonistypewineis[name:string;[name:string

2、;age:int;age:int;spouse:Person;];bouquet:string;];declareincreaseAge:Person

3、

4、int->PersonDeclareincreaseAge:Wine

5、

6、int->Wine(1)defineincAgeP(n)isself.age:=self.age+n;(2)defineincAgeW(n)isself.age:=self.age+n;示例2:不同表结构类型的长度操作定义TypeCylinderLististypeWineListis;;(1)declarelength:Cy

7、linderList

8、

9、->intcodelengthC;(2)declarelength:WineList

10、

11、->intcodelengthW;(1)definelengthCis(2)definelengthWisvarcyl:Cylinder;varwine:Wine;I:int:=0;I:int:=0;Beginbeginforeach(cylinself)foreach(wineinself)I:=I+1;I:=I+1;returnI;returnI;EnddefinelengthC;enddefinelengthW;有界多态需要的新概念类型变量typevariable

12、s类型表达式typeexpressions类型界限typeboundaries多态操作说明Polymorphicoperationdeclaration类型变量引入目的:类型变量可以提供必要的抽象机制来隐藏不同类型的定义和操作说明.作用:在多态操作说明时,用一个类型变量来表达操作参数的抽象类型,只有在该操作被引用激活时,这个类型变量才被替换类型变量的说明形式:在特殊符号“”后面随一个普通的标识符例:Agetype;Listtype…示例1定义了一个通用的增加年龄的操作:polymorphdeclareincreaseAge:AgeType

13、

14、->AgeTypecodep

15、olyIncAge;andtheunmodifieddefinitiondefinepolyIncAge(n)isself.age:=self.age+n;示例2:定义一个通用的求表长度的操作:Polymorphdeclarelength:ListType

16、

17、->intcodepolyLength;DefinepolyLengthisvaritem:ElementType;I:int:=0;beginforeach(iteminself)I:=I+1;EnddefinepolyLength;产生的问题分析需要一个对类型变量的约束机制,以控制被代真(替换)的类型都是合法类型对例

18、1:能够替换Agetype的类型必须有一个int类型的属性Age;对例2:能够替换ListType的类型只能是表结构类型对例2:如果一个元素为t类型的表结构被代入ListType;那么只有t可以替换ListType类型变量的约束机制称为类型界限类型界限需要用类型表达式来描述类型表达式允许有三种表达方式:---元组表达:[A1:T1,…An:Tn]---集合表达:{T}---表表达:类型表达式定义1.每个类型符号是一个类型表达式2.每个类型变量是一个类型表达式3.如果A1,…An是属性符号,e1…en是类型表达式,那么[A1:e1,…An:en]也是类型表达式4.如果

19、e是类型表达式,则也是类型表达式5如果e是类型表达式,则{e}也是类型表达式示例[age:int][age:AttrType]{ElementType}[A:Elementtype>;]类型界限定义如果TV是一个类型变量,e是一个类型表达式,则TV<=e是一个类型界限示例1:AgeType<=[age:int]语义:在类型替换时,只有具有一个名字为age的属性,且该属性类型为int的对象类型才能被替换示例2:ListType<=<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。