面向对象语言在编译器中的考虑.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象语言在编译器中的考虑   摘要:相对于非面向对象语言而言,面向对象语言的语法结构及其语义的特征,主要体现在它的类结构、类与类之间的关系及类的继承结构上。该文考虑了现代编译器中对面向对象语言的支持,分析了面向对象语言的封装、继承和多态三个主要特性在编译器中的编译实现方案。   关键词:面向对象语言;编译器;类;继承;多态   中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)31-7688-02   Considerations of Object-oriented Language in the Compiler   WU Yan-qiu   (Hefei University, Hefei 230000, China)   Abstract: Compared in terms of non-object-oriented language, object-oriented language grammatical structure and semantic characteristics, mainly in its class structure, the relationship between class and class, and class inheritance structure. This paper we consider the modern compiler for object-oriented languages support, analysis of object-oriented language, encapsulation, inheritance and polymorphism of three main features in the compiler implementations.   Key words: object-oriented language; compiler; class; inheritance; polymorphic   程序设计语言是与现代计算机共同诞生、共同发展的,至今已有40余年的历史,早已形成了规模庞大的家族[1]。进入80年代以后,随着计算机的日益普及和性能的不断改进,程序设计语言也相应得到了迅猛发展。其中经历了机器语言时代,汇编语言时代,以及所谓的高级语言时代,这也使得编译器的设计和实现愈趋的复杂。本文浅析了当前比较热门的面向对象语言的三个主要特性-封装、继承和多态在编译器中的考虑。   1 面向对象语言中的类和对象   1.1 类及其成员   类和成员的元素都作为一种数据类型,它们也都作为符号表的一个表项;在符号表的表项属性中,这样的类结构除了通常非面向对象语言所定义的属性之外,还应该包括类和成员的区分属性,类成员的显露属性--类的公开成员、私有成员、选择性显露成员。   编译程序中处理类及其状态和操作成员等元素时,与非面向对象语言C中的变量及其函数申明一样,他们之间的关系就类似于C中的结构体与它的成员之间的关系,同时还要通过类型检查解决成员与例程之间绑定的相容性要求。   1.2 对象   一个对象是一个包含有内置方法及一些附加功能的记录。它的类型通常称为类。在一些语言中,对象与抽象数据类型相似,不同之处在于对象中只有方法是外部可见的,而对象字段(即对象属性)只能由方法实体访问。在另外一些语言中,对象字段可以像记录字段一样被访问。   在创建对象时,基本类型创建的对象是该类型的对象本身,而复杂类型(即类)创建的对象是指向该类型的对象的指针。根据面向对象的类型一致性原则,应把基本类型和复杂类型作为用语言定义的一致性的类型,这时可使这种一致性类型所创建的对象都是指向该类型的对象的指针。从而像int、char等基本类型,也同样作为符号表中的一个表项来处理。   2 类的继承   2.1 继承类   继承存在于所有的面向对象语言中,它允许程序员基于类A创建类B。因此,除自己的字段和方法外,B还继承了A的方法和字段。这一特征也被称为类型扩展;类B用0个或多个字段和方法扩展类A。现在假定类B通过增添方法m3和字段b1来扩展类A。那么类B的运行时表示如图1所示,另外,类B的方法的编译时表如图2所示。   对继承类的编译分析,能得到继承关系的信息。因此在继承类的符号表项中,应具有继承类的标识以及指向它的被继承类的标识,最终得到一支表达该继承类继承关系的继承链。   2.2 多重继承   假定有拥有字段c1、c2和方法m1、m2的对象类C,拥有字段d1和方法m3、m4的对象类D以及对象类E,E从C和D继承,但增加了一个字段e1,并且重定义了方法m2、m4,增添了方法m5,如图

文档评论(0)

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

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

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档