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

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

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章多态操作Polymorphic和一般类型

第十二章 多态操作Polymorphic和一般类型 多态操作需求的引入:在数据库概念上,有许多操作,例如查询操作,需要一个通用的独立于类型的格式,从而增加了软件设计的灵活性和可复用性 多态操作的分类: ---特定的多态:即是普通的重载操作 ---包含多态:允许一个特定类型的操作可以作用载子类型对象上 ---有界多态:多态的一般化描述,一个操作可以定 义在多种类型上 多态引入的需要实例 示例1.对类型“人”,有年龄age和增加年龄 IncAgeP的操作; 对类型“酒”,有酒龄age和酒龄的增加 操作IncAgeW Type Person is type wine is [name: string; [name:string; age:int; age:int; spouse: Person;]; bouquet:string;]; declare increaseAge:Person||int-Person Declare increaseAge:Wine||int -Wine (1)define incAgeP(n) is self.age:=self.age+n; (2)define incAgeW(n) is self.age:=self.age+n; 示例2:不同表结构类型的长度操作定义 Type CylinderList is type WineList is Cylinder; Wine; (1)declare length:CylinderList||-int code lengthC; (2)declare length:WineList||-int code lengthW; (1)define lengthC is (2) define lengthW is var cyl:Cylinder; var wine:Wine; I:int:=0; I:int:=0; Begin begin foreach(cyl in self) foreach(wine in self ) I:=I+1; I:=I+1; return I; return I; End define lengthC; end define lengthW; 有界多态需要的新概念 类型变量 type variables 类型表达式 type expressions 类型界限 type boundaries 多态操作说明 Polymorphic operation declaration 类型变量 引入目的:类型变量可以提供必要的抽象机制来隐藏不同类型的定义和操作说明. 作用:在多态操作说明时,用一个类型变量来表达操作参数的抽象类型,只有在该操作被引用激活时,这个类型变量才被替换 类型变量的说明形式: 在特殊符号“\”后面随一个普通的标识符例:\Agetype ;\Listtype… 示例1定义了一个通用的增加年龄的操作: polymorph declare increaseAge:\AgeType|| -\AgeType code polyIncAge; and the unmodified definition define polyIncAge(n) is self.age:=self.age+n; 示例2: 定义一个通用的求表长度的操作: Polymorph declare length:\ListType||-int code polyLength; Define polyLength is var item :\ElementType; I:int:=0; begin foreach(item in self) I:=I+1; End define polyLength; 产生的问题分析 需要

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档