编译原理 面向对象语言的编译12.ppt
《编译原理 面向对象语言的编译12.ppt》由会员分享,可在线阅读,更多相关《编译原理 面向对象语言的编译12.ppt(33页珍藏版)》请在三一文库上搜索。
1、第十二章 面向对象语言的编译,本章内容 概述面向对象语言的重要概念和实现技术 以C+语言为例,介绍如何将C+程序翻译成C程序 实际的编译器大都把C+程序直接翻译成低级语言程序,12.1 面向对象语言的概念,12.1.1 对象和对象类 对象 由一组属性和操作于这组属性的过程组成 属性到值的映射称为对象的状态 ,过程称为方法 对象类 一类对象的总称,规范了该类中对象的属性和方法,包括它们的类型和原型 对象有自己存放属性的存储单元;同一个类的对象可以共享方法的代码 对象类形成了面向对象语言的模块单元 下面将把术语“类”和“类型”看成是同义的,12.1 面向对象语言的概念,12.1.2 继承,图形对象
2、的继承层次结构,12.1 面向对象语言的概念,继承 基类、派生类、子类、抽象类 子类型规则 当某个类型的一个对象在某个输入位置被需要或作为函数的返回值时,其任何子类型的对象允许出现在这些地方 类B的一个对象,若它不同时是B的某个真子类的对象,那么称该对象是B的真对象,称B是该对象的运行时类型,12.1 面向对象语言的概念,12.1.2 继承,图形对象的继承层次结构,12.1 面向对象语言的概念,方法选择规则 如果类B继承类A并且重写了方法m,那么对类B的对象b来说, 即使它作为类A的对象使用, 也必须使用在类B中定义的方法m,12.1 面向对象语言的概念,12.1.2 继承,图形对象的继承层次
3、结构,12.1 面向对象语言的概念,动态绑定规则 当对象o的一个方法可能被子类重新定义时,如果编译器不能确定o的运行时类型,那么必须对该方法进行动态绑定 void zoom (GraphicalObj / 缩放 ,12.1 面向对象语言的概念,12.1.3 信息封装 大多数面向对象语言提供了一种机制,它可用来将类的特征分成私有的和公共的 某些面向对象语言用不同的上下文区分作用域,如“在一个类中”、“在派生类中”、“在友元类中”等等 由编译器来实现这些作用域规则是简单而又明显的,12.2 方法的编译,先定义一般的图形对象类GraphicalObj如下: class GraphicalObj vi
4、rtual void translate (double x_offset, double y_offset); virtual void scale (double factor); . . . / 可能还有一些其它方法 ;,12.2 方法的编译,class Point : public GraphicalObj double xc, yc; public : void translate (double x_offset, double y_offset) xc += x_offset; yc += y_offset; void scale (double factor) xc *= fa
5、ctor; yc *= factor; Point(double x0 = 0, double y0 = 0) xc = x0; yc = y0; void set(double x0, double y0) xc = x0; yc = y0; double x(void) return xc; double y(void) return yc; double dist (Point ,12.2 方法的编译,将一个C+语言的类翻译成C语言的程序段,主 要工作有如下几点(由继承引出的问题暂不考虑) 将C+语言中一个类的所有非静态属性构成一个C语言的结构类型,取类的名字作为结构类型的名字 类的静态
6、属性是该类的所有对象所共有的,应当翻译成C中的全局变量,但是需要改一个名字 C+语言中类的对象声明不加翻译就成了C语言中相应结构类型的变量声明,12.2 方法的编译,将C+语言中类的非静态方法翻译成C语言的函数,对应的方法和函数的区别有下面几点: 函数的名字必须在原来方法名的基础上修改 函数声明增加一个形参this 在函数体中出现的函数调用也要增加一个实参 在方法中对本对象的非静态属性的访问,改成对this相应域的访问。在方法中对其它对象的非静态属性的访问不必修改 类的静态方法在定义和调用的地方都需要改名,12.2 方法的编译,类C的方法m被翻译成函数fm,12.2 方法的编译,类Point的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 面向对象语言的编译12 编译 原理 面向 对象 语言 12
链接地址:https://www.31doc.com/p-3640489.html