第四章面向对象程序设计语言.ppt
文本预览下载声明
第四章 面向对象程序设计语言 4.1.1 Smalltalk系统 4.1.2 用户界面模型 系统工作空间(System WorkSpace) 工作空间(WorkSpace) 系统副本(System Transcript) 项目(Project) 两种图形编辑窗(Form和Bit) 系统浏览器(System Browser)窗 4.1.3 语言核心 (5) 消息表达式与语句 4.1.5 Smalltalk程序设计范型 程序设计在类的层次上进行,由类静态(于工作空间指明向类发出消息)或动态(方法运行时)生成实例对象。每个对象当接受某消息并执行其方法的消息表达式时都是在自向其它对象发消息。 一个简单的Smalltalk程序 4.1.6 Smalltalk程序设计系统 实例对象的存储 实例对象只存放数据,其存储格式如下图: 4.4 Ada 的面向对象机制 以类宽类型实现多态 扩充程序包机制实现继承的类体系 with OS.Exceptions; package OS.File_Manager is -–OS的子辈程序包 type File_Mode is (Read_Only, Write_Only, Read_Write); function Open(File_Name:String; Mode; File_Mode) return File_Descriptor; procedure Close (File:in File_Descriptor); … end OS.File_Manager; --公有,只用私有类型。也无泄露 with OS.Exceptions; procedure OS.Interpret(Command:String); --命令解释过程,等同子包 private package OS.Internals is -–私有子辈程序包,不用with … end OS.Internals; private package OS.Internals_Debug is -—OS的私有子辈程序包 … end OS.Internals_Debug; Ada的多继承 with Abstract_Sets; package Linked_Sets is type Linked_Set is new Abstruct_Sets with private; --再定义Linked_Set的各种操作 private type Cell; type Cell_Ptr is access Cell; type Cell is record E:Element; next:Cell_Ptr; end record function Copy(P:Cell_Ptr)return Cell_Ptr; type lnner is new Controlled with record The_Set:Cell_Ptr: end record: procedure Adjuse (Obj :in out lnner); type Linked_Set is new Abstract_Sets with -—继承Abstraet_sets record Component:lnner: --其扩展成分又继承了Controlled end record; end Linked_Sets; 动态约束的实现 在每个对象开头(数据域之前)增加一个指针?vt 创建对象时,设置其?vt?指向其所属的类的虚表(运行中始终不变) f?是指向?F?的指针(或引用)调用?f-m(...)的实现 比调用静态约束的方法多了中间的两条指令,它们都需要访问内存 动态约束的实现 虚表的创建: 如果类?B?没有基类,就将其定义里的动态约束方法
显示全部