类型系统之程序设计语言原理.ppt

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.3 基于RC的面向对象编程 对象模型:继承 (2) 继承方式:提供哪些继承方式? R语言基于RC的面向对象系统沿用R4的继承方式,用contains 参数表示; 其具有单继承和多重继承两种继承方式; 单继承 * 4.3 基于RC的面向对象编程 对象模型:继承 (2) 继承方式:提供哪些继承方式? R语言基于RC的面向对象系统沿用R4的继承方式,用contains 参数表示; 其具有单继承和多重继承两种继承方式; 多重继承 * 4.3 基于RC的面向对象编程 对象模型:继承 (3) 采用基于继承的模型,还是基于指派的模型? R语言基于RC的面向对象系统是基于继承的模型; * 4.3 基于RC的面向对象编程 对象模型:多态 多态:是指同样的消息被不同类型的对象接收时导致不同的行为。 多态 类属 方法覆盖 * 4.3 基于RC的面向对象编程 对象模型:多态 类属:方法覆盖 * 4.3 基于RC的面向对象编程 其他问题 (1) 是不是追求“纯粹”的面向对象语言? R语言中的基于RC的面向对象系统,接近“纯粹”的面向对象语言: 1) 不存在全局变量和全局函数; 2) 但,main函数不是类的方法; 3) R语言中的基于RC的面向对象系统中,一切皆为对象。 * 4.3 基于RC的面向对象编程 其他问题 (2) 变量的语义模型:采用值模型还是引用模型? 在变量的值模型中,值保存在变量的存储区里; 而在变量的引用模型中,变量的值需要用另一个值对象表示,变量的存储区里存放的是对值对象的引用; R语言中基于RC的面向对象系统,采用引用模型; * 4.3 基于RC的面向对象编程 其他问题 (3) 是否允许静态对象或者堆栈对象(自动对象)? R语言中基于RC的面向对象系统支持静态对象和自动对象; (4) 是否依赖自动废料收集(GC)? R语言中基于RC的面向对象系统依赖自动废料收集机制(GC); * 4.3 基于RC的面向对象编程 其他问题 (5) 是否所有方法都采用动态约束? 面向对象语言里的方法调用通常采用“x. m(...)”的形式。其中,x 是一个指向或者引用对象的变量,m是x的定义类型的一个方法。 如果是根据变量x的类型静态确定,我们就称之为静态约束; 如果是根据方法调用时被指向或引用的对象的类型确定,我们就称之为动态约束。 R语言中基于RC的面向对象系统中所有的方法都采用动态约束; * 4.3 基于RC的面向对象编程 其他问题 (6) 类类型对象的动态转换机制 R语言基于RC的面向对象系统中类类型对象之间不提供动态转换机制; 而是采用名-值(对象)动态约束机制。 * 4.4 基于R6的面向对象编程 基于R6的面向对象编程 R6类型非常接近于RC类型(Reference classes),但比RC类型更轻; 由于R6不依赖于S4的对象系统,所以用R6的构建面向对象系统会更加有效率。 * 4.4 基于R6的面向对象编程 对象模型:封装 (1) 类的定义 在基于R6的面向对象系统中,类的定义和实例化的格式如下: * 4.4 基于R6的面向对象编程 对象模型:封装 (2) 访问控制机制: R语言中基于R6的面向对象系统,提供的访问控制机制,包括:public和private两种类型。 在类中访问公有成员时,需要使用self对象进行调用。 在类中访问私有成员变量时,要通过private对象进行访问。 * 4.4 基于R6的面向对象编程 对象模型:封装 (3) 对象的独立性: R语言中对象不具有独立性,也就是对象必须属于某一个类; (4) 类本身是不是对象? R语言中基于R6的面向对象系统中,类本身是对象; (5) 基于类的模型,还是基于对象或原型的模型? R语言中基于R6的面向对象系统是基于对象的模型; * 4.4 基于R6的面向对象编程 对象模型:继承 (1) 类层次结构:采用单根的类层次结构,还是任意的类层次结构? R语言基于R6的面向对象系统采用任意的类层次结构; * 4.4 基于R6的面向对象编程 对象模型:继承 (2) 继承方式:提供哪些继承方式? R语言基于R6的面向对象系统的继承是通过inherit来实现 ,其具有单继承和多重继承两种继承方式; 单继承 * 4.4 基于R6的面向对象编程 多重继承 * 4.4 基于R6的面向对象编程 对象模型:继承 (3) 采用基于继承的模型,还是基于指派的模型? R语言基于R6的面向对象系统是基于继承的模型; * 4.4 基于R6的面向对象编程 对象模型:多态 多态:是指同样的消息被不同类型的对象接收时导致不同的行为。 多态 类属 方法覆盖 * 4.4 基于R6的面向对象编

文档评论(0)

懒懒老巢 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档