




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高等学校计算机基础教育规划教材 Delphi程序设计 第6章 面向对象程序设计 教学目的 掌握面向对象的程序设计(Object-Oriented Programming ,OOP)的基本概念 了解Delphi的面向对象的程序设计方法 掌握Delphi中类和对象的使用方法 本章介绍了面向对象的程序设计基本知识,主要包括类的定 义、特性及其属性,对象的定义、特性、创建及撤销。针对 Delphi面向对象的特点,重点介绍了OOP中的对象、方法、事 件的概念。通过本章的学习,使大家对Delphi这种基于面向对 象的开发环境有进一步的认识。 高等学校计算机基础教育规划教材 Delphi程序设计 6.1 面向对象的基本概念 6.1.1 什么是类 (1) 类的定义 在Delphi语言中,用保留字Class 来声明类,语法格式为: type 类名称 = class (父类名) 类成员列表 end; 其中,类名称可以为任何合法的标识符,父类名是可选的,而类 成员列表用来声明成员,它们是类的域(field)、方法(method)和属 性(property)。如果省略了父类名,则新声明的类直接继承预定义 类Tobject;如果具备父类名而成员列表为空,则可以省略end。方 法是以函数或过程首部的形式出现在类的声明中,而方法的实现 部分在程序的其他位置, 高等学校计算机基础教育规划教材 Delphi程序设计 type TStudent=class(TPeople) IDinschool,grade:String; entrancemark:Single; procedure setvalue(i,g:string;m:Single); function ispassed:boolean; end; 定义了一个TStudent 类,其父类为TPeople,它包括 IDinschool(学号),grade(年级),entrancemark(入学成绩 )3个域和setvalue,ispassed 2个方法。 高等学校计算机基础教育规划教材 Delphi程序设计 类的方法是在类中声明的函数和过程,如上例中的setvalue过程和 ispassed函数,下面是两个方法的实现代码: procedure Tstudent.setvalue(i,g:string;m:Single); /为学生的各域设 置值 begin IDinschool:=i; grade:=g; entrancemark:=m; end; function Tstudent.ispassed:boolean; /判断是否通过入学考试 begin if entrancemark=450 then ispassed:=true else ispassed:=false; end; 高等学校计算机基础教育规划教材 Delphi程序设计 (2)类的特性 类的封装性 类的封装是指利用抽象数据类型将数据和基于数据的操 作封装到一起,数据被保护在抽象数据类型内部,系统 的其他部分只有通过包裹在数据外面的被授权的操作, 才能与这个抽象数据进行交流和交互。类的所有成员都 有一个标明“能见度”的属性,它们是由保留字private、 protected、public、published 和automated来说明的。通 过这些保留字,可以控制对类中成员的访问权限。每个 保留字的具体含义如下: private:具有private属性的成员称为私有成员,不能被 类所在单元以外的程序访问。也就是说,一个私有的属 性不可以在所在模块之外的其它模块中读写,一个私有 的方法也不可以在所在模块之外的其它模块中被调用。 高等学校计算机基础教育规划教材 Delphi程序设计 protected:具有protected属性的成员称为保护成员,可以 被该类和该类的派生类所访问。 public:具有public属性的成员称为保护成员,可以被该 类以外的类访问。如果两个类不在同一个单元文件中, 则要在uses语句中包括被访问的类所在的单元名称。 published:具有published属性的成员称为发行类型成员, published 型成员和public 型成员具有相同的可见性,区别 在于published 型成员在运行期间和设计期间均可以使用 ,而public 型成员只有在运行期间可以使用。通常发行类 型的成员用在组件类的声明中,这样,就可以在对象编 辑器中访问组件的发行类型的成员。 automated:具有automated属性的成员称为自动类型成员 ,它的访问权限基本与public相同。这种类型的成员一般 用在从TAutoObject类派生的类中,目前只是为了和以前 版本的Delphi兼容才保留了automated属性。 高等学校计算机基础教育规划教材 Delphi程序设计 类的继承性 继承性也是面向对象编程技术的一个共同特点,它是 在已存在的类的基础上去建立新的类,使新建立的类 成为原有类的子类(派生类),原有类即为新类的父类( 基类)。子类继承父类所有的域和方法,且继承具有传 递性。例如: type Tpeople=class private name,sex:string; age:0100; public function getname:string; end; 高等学校计算机基础教育规划教材 Delphi程序设计 先定义了一个Tpeople 父类,其子类定义如下。 type TStudent=class(tpeople) private IDinschool,grade:String; entrancemark:Single; public procedure setvalue(i,g:string;m:Single); function ispassed:boolean; end; 有了以上定义之后,则 Var A:TStudent; A:=TStudent.Create ; 则对象A 就具备了name,sex,age,Idinschool,grade和 entrancemark 6 个域和3 个方法。 高等学校计算机基础教育规划教材 Delphi程序设计 类的多态性 除了覆盖以外,多态性也是实现类的继承多样化的编 程技术。多态性也是面向对象技术的一个重要的特征 ,用户向不同的对象发出相同的指令,但不同对象的 响应可能完全不同。通常在Delphi语言中,函数和过程 都是静态的,而多态性的实现是在运行时才确定所调 用方法的实际地址,具体调用哪个对象方法依赖于与 变量有关的对象类型。 高等学校计算机基础教育规划教材 Delphi程序设计 (3)类的属性 类的数据属性负责捕获状态。例如给出一个类Dog,正 确表示了特定的狗的属性可能会是:颜色、种类、性 别、重量。 类TDog可能会定义如下: TDog = class Color: TColor; Breed: String; Gender: String; Weight: Double; end; 高等学校计算机基础教育规划教材 Delphi程序设计 为重量指定一个范围以避免出现体重超过10000磅或小 于零的狗。在下面的代码中实现了所有的修改。 type TDogColor = (dcBrown, dcWhite, dcBlack, dcYellow); TDogGender = ( dgMale, dgBitch ); TDogBreed = ( dbLabrador, dbPoodle ); TDogWeight = 0300; TDog = class Color : TDogColor; Gender : TDogGender; Breed : TDogBreed; Weight : TDogWeight; end; 高等学校计算机基础教育规划教材 Delphi程序设计 (3) 构造函数和析构函数 构造函数是类的一个特殊的方法,用来创建类的对象 并进行数据初始化。定义构造函数的方法和定义其他 方法基本相同,只不过要使用保留字constructor,例如 : constructor Create; constructor Create(i,g:string;m:Single); 析构函数用来释放类的对象所占用的资源空间,主要 有两种方法:Destroy和Free,Free方法在对象的撤销 部分介绍,用Destroy方法定义析构函数时使用保留字 destructor,例如: destructor Destroy; 高等学校计算机基础教育规划教材 Delphi程序设计 6.1.2 什么是对象 (1)对象的概念 一个对象是一个数据类型。对象就象记录一样,是一种数据结构 。按最简单的理解,我们可以将对象理解成一个记录。 对象的特征 : 对象的封装性 对对象最基本的理解是把数据和代码组合在同一个结构中,这 就是对象的封装特性。 对象的继承性 继承性是指把一个新的对象定义成为已存在对象的后代;新对 象继承了父类的一切东西。 对象的多态性 多态性是在对象体系中把设想和实现分开的手段。如果说继承 性是系统的布局手段,多态性就是其功能实现的方法。多态性意 味着某种概括的动作可以由特定的方式来实现,这取决于执行该 动作的对象。 高等学校计算机基础教育规划教材 Delphi程序设计 建立窗体相关联的库单元中生成了创建这个新窗体对象的程序代码 。 unit Unit1; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) /窗体的类型声明开始 private Private declarations public Public declarations end; /窗体的类型说明结束 var Form1: TForm1; /窗体变量声明 implementation $R *.DFM end. 高等学校计算机基础教育规划教材 Delphi程序设计 假设向窗体中加入了一个按钮部件,并对这个按钮建立了一个 OnClick事件处理过程。再查看Unit1的源程序(见图6.1),会发现 TForm1的类型说明部分如下: type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private Private declarations public Public declarations end; 图6.1 添加按钮的窗体 高等学校计算机基础教育规划教材 Delphi程序设计 如果使用Object Inspector来改变对象(部件)的名称时, 这个名称的改变会反映到程序中。例如,在Object Inspector中将Form1的Name属性命名为ColorBox,相应 的在类型说明部分,会将前文的TForm1改为(如图6.2 ): TColorBox=class(TForm); 图6.2 name属性改变后的窗体 高等学校计算机基础教育规划教材 Delphi程序设计 (2)对象的创建与撤销 对象的创建 要创建一个对象实例,应调用类的构造函数,它的作用是建立这个 类的实例。 例如,声明一个TOneCupOfTea类的变量: Var MyTea: TOneCupOfTea; 现在,MyTea只是一个指针,并不能说它是一个对象。为建立对象 ,应调用它的构造函数Create,其语法如下: MyTea: TOneCupOfTea.create; 上例是通过默认的构造函数实例化了一个TOneCupOfTea对象。对 象还可以用非默认的构造函数来创建。例如,使用一个参数在实例 化对象的过程中设置茶叶品牌: MyTea: TOneCupOfTea.create(龙井); 高等学校计算机基础教育规划教材 Delphi程序设计 对象的撤销 使用完对象后,应及时撤销它,以便把这个对象占用 的内存释放出来。这步工作是由析构函数来完成的。 Delphi的析构函数有两种:Destroy和Free,建议使用 Free,因为它比Destroy更安全,且会生成效率更高的 代码。下面是TObject类的Free方法的代码。 procedure TObject.Free; begin If Self nil do 高等学校计算机基础教育规划教材 Delphi程序设计 begin Ancestorlist.Add(ClassRef.ClassName); ClassRef:=ClassRef.ClassParent; end; if (not sorted) then begin result:=Ancestorlist; exit; end else begin SwitchList:=Tstringlist.create; For loopint:=Ancestorlist.Count-1 downto 0 do 高等学校计算机基础教育规划教材 Delphi程序设计 begin SwitchList.Add(Ancestorlist.Stringsloopint); end; Ancestorlist.Free; result:=SwitchList; end; end; (2)双击按钮Button1,进入编辑页面,编写按钮的 OnClick事件过程。 procedure TForm1.Button1Click(Sender: TObject); begin listbox1.items:=GetsForm(Sender,true)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年秋季初级经济师考试 经济基础知识深度解析试卷
- 2025年春季汽车修理工考试 汽车车身维修技术操作模拟试卷
- 2025年经济师职业资格考试 金融市场与金融工具模拟试卷
- 2025年公共营养师二级考试实战演练试卷及解析
- 2025年高考生物选择题冲刺押题试卷
- 易地搬迁工作情况汇报
- 2026届重庆市酉阳县化学高一上期中调研模拟试题含解析
- 现代兽医工作概述
- 测绘评职称工作总结
- 玩具培训知识内容大全课件
- 一年级小学生行为规范培养指南
- 广州交通辅警试题及答案
- 医院后勤考试试题及答案
- 艾梅乙母婴传播防治培训
- 非标设备项目管理制度
- 2025年临床执业医师考试的院前急救知识试题及答案
- 游戏攻略短视频行业跨境出海战略研究报告
- 高考志愿规划创业
- 2025年度医院医德医风考评表格
- 世界给予我的 课件-2024-2025学年高二下学期开学第一课主题班会
- 智慧消防项目可行性研究报告
评论
0/150
提交评论