- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象语言的编译11.1 面向对象语言的概念11.1.1 对象和对象类对象由一组属性和操作于这组属性的过程组成属性到值的映射称为对象的状态 ,过程称为方法对象类一类对象的总称,规范了该类中对象的属性和方法,包括它们的类型和原型对象有自己存放属性的存储单元;对象可以共享方法的代码对象类形成了面向对象语言的模块单元下面我们将把术语“类”和“类型”看成是同义的GraphicalObj translate scale PolyLine translate scale length… …ClosedGraphics area… … Ellipse translate scale areaPolyGon area… … TriangleRectanglearea11.1 面向对象语言的概念11.1.2 继承图形对象的继承层次结构11.1 面向对象语言的概念继承基类、派生类、子类、抽象类子类型规则 当某个类型的一个对象在某个输入位置被需要或作为函数的返回值时,其任何子类型的对象允许出现在这些地方。类B的一个对象,若它不同时是B的某个真子类的对象,那么称该对象是B的真对象,称B是该对象的运行时类型GraphicalObj translate scale PolyLine translate scale length… …ClosedGraphics area… … Ellipse translate scale areaPolyGon areaB… … TriangleRectanglearea11.1 面向对象语言的概念11.1.2 继承图形对象的继承层次结构11.1 面向对象语言的概念方法选择规则 如果类B继承类A并且重写了方法m,那么对类B的对象b来说, 即使它作为类A的对象使用, 也必须使用在类B中定义的方法mGraphicalObj translate scale PolyLine translate scale length… …ClosedGraphics areaA… … Ellipse translate scale areaPolyGon areaB… … TriangleRectanglearea11.1 面向对象语言的概念11.1.2 继承图形对象的继承层次结构11.1 面向对象语言的概念动态绑定规则 当对象o的一个方法可能被子类重新定义时,如果编译器不能确定o的运行时类型,那么必须对该方法进行动态绑定void zoom (GraphicalObj obj, double zoom_factor, Point center) { obj.translate (?center.x, ?center.y); // 将“中心”移至“点(0, 0)” obj.scale (zoom_factor); // 缩放}11.1 面向对象语言的概念11.1.3 信息封装大多数面向对象语言提供了一种机制,它可用来将类的特征分成私有的和公共的某些面向对象语言用不同的上下文区分作用域,如“在一个类中”、“在派生类中”、“在友元类中”等等由编译器来实现这些作用域规则是简单而又明显的 11.2 方法的编译 先定义一般的图形对象类GraphicalObj如下:class GraphicalObj {virtual void translate (double x_offset, double y_offset);virtual void scale (double factor);. . . // 可能还有一些其它方法}; 11.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 *= factor; 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 );};11.2 方法的编译 将一个C++语言的类翻译成C语言的程序段,主要工作有如下几点(由继承引出的问题暂不考虑)将C++语言中一个类的所有非静态属性构成一个C语言的结构类型,取类的名字作为结构类型的名字类的
您可能关注的文档
最近下载
- 2025年文山州砚山县中医医院第十一期招聘(18人)笔试备考题库及答案解析.docx VIP
- C186015【基础】2025年海南医学院105300公共卫生《353卫生综合之医学统计学》考研基础.pdf VIP
- 2025年湖南有色金属职业技术学院单招职业技能测试题库及一套答案.docx
- 中国乙型肝炎病毒母婴传播防治指南(2024年版)解读.pptx
- 有机磷农药中毒.ppt VIP
- 骨科手术护理培训.pptx VIP
- 2025退役分类考试题及答案.docx VIP
- 护线宣传方案课件.pptx VIP
- 2025年文山州砚山县中医医院第十一期招聘(18人)笔试备考试题及答案解析.docx VIP
- SL 557-2012水利基本建设项目竣工决算审计规程.pdf
文档评论(0)