您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 第三章Delphi中的面向对象
本章学习要点了解面向对象程序设计的基本思想及其ObjectPascal的语言实现。掌握类的定义和对象的使用掌握构造函数和析构函数的含义及定义掌握派生类的定义及继承的意义理解多态性的概念及多态性的实现:重载和虚方法(或动态方法)理解Delphi中组件属性和方法的含义第三章Delphi中的面向对象3.1面向对象程序设计概述3.2类与对象3.3类成员的访问权限3.4继承3.5多态性3.6属性与方法3.1面向对象程序设计概述面向对象的方法学认为:客观世界由各种“对象”构成,每个对象都有自己的运行规律和内部状态。通过归类,具有相同属性和行为的对象抽象为类,每个对象都属于某个类,都是该类的一个实例。类之间通过继承关系构成类的层次结构,子类可以直接继承父类的性质和功能。对象之间通过消息相互作用,相同的消息作用于不同的对象会产生不同的反应.面向对象方法学的中心是围绕着对象、类、消息、继承性和多态性等概念、机制和原理展开的。其中,对象和类是面向对象方法的核心,消息是连接它们的纽带,封装是面向对象的基本要素,继承性是面向对象方法的独特贡献,而多态性则使面向对象方法更加完美。3.2类与对象一、类与对象的概念二、定义类三、对象的使用四、构造函数与析构函数一、类与对象的概念类(class)是具有相同或相似属性和行为的一组对象的共同描述,是对相似对象建立的模板(template)。它是一个抽象的概念,每个对象则是一个有意义的实体。对象(object)由属性和方法构成。属性是描述对象静态特征的一组数据项;方法描述了该类对象动态特征的一个操作序列,体现对象的行为特征或功能。二、定义类在ObjectPascal中,使用保留字class定义类,定义格式如下:type类名=class数据成员成员函数或过程end;说明:数据成员可以是任何数据类型的变量,描述类的状态特征,即属性。不能在类中对数据成员进行初始化。成员函数或过程描述类的行为特征,即方法。成员函数或过程必须在类体以外定义,格式如下:function类名.成员函数名(参数表):返回类型;{函数体}procedure类名.成员过程名(参数表);{过程体}三、对象的使用1.对象声明var对象名:类名;对象名的命名规则和其他标识符相同。例如:varc1:Circle;//对象p:^Circle;//指针a:array[1..10]ofCircle;//数组2.访问对象成员声明了对象后,就可以通过对象使用类中的成员。使用类成员的一般格式为:对象名.成员3.类作用域类作用域在类体范围内,此外,成员函数体或成员过程体也属于类体的一部分,在类的作用域内。四、构造函数与析构函数由类说明一个对象后,系统并没有实际创建该类的对象,只是定义了一个指向该类对象的指针。为此,ObjectPascal提供了构造函数,它是专用的创建对象和初始化对象的成员函数。由于构造函数是专用的成员函数,因此,在定义时不使用保留字function,而使用保留字constructor,函数名通常为Create。ObjectPascal允许用户自定义一个或多个构造函数,自定义的构造函数可以带参数。若在定义类时没有定义构造函数,则系统会自动为该类生成一个默认的构造函数。析构函数的功能正好和构造函数相反,它是专用的删除对象和为对象进行善后处理的成员函数。在定义析构函数时同样不使用保留字function,而是使用保留字destructor,函数名通常为Destroy。ObjectPascal允许用户自定义一个或多个析构函数。若在类定义时没有定义析构函数,则系统会自动为该类生成一个默认的析构函数。3.3类成员的访问权限一、封装二、类成员的访问权限一、封装在程序设计中,封装(encapsulation)就是把一组数据和与这组数据有关的操作集合组装在一起,形成一个能动的实体,也就是对象。这样的封装体包括外部特征和内部实现两个方面,用户不必知道对象的内部实现,只需根据对象提供的外部特性接口访问对象。二、类成员的访问权限在ObjectPascal中,类的所有成员都有一个标明其可见性的属性,由保留字private、protected、public、published或automated来说明。通过这些保留字,可以控制对类中成员的访问权限。Private:具有private访问权限的成员称为私有成员,不能被类所在单元以外的程序访问,但在本单元是可见的。Protected:具有protected访问权限的成员称为保护成员,可以被该类及该类的所有派生类访问,并成为派生类的私有成员。Public:具有public访问权限的成员称为公有成员,可以被该类以外的类访问。如果两个类不在一个单元文件中,则要在uses语句中加入被访问的类所在的单元名称。Published:具有published访问权限的成员称为公布类型成员,它除了与公有成员具有相同的访问权限以外,在设计期间的对象观察器窗口中也是可见的。Automated:具有automated访问权限的成员称为自动类型成员,它与公有成员具有相同的访问权限,常用于响应对象链接与嵌入(简称OLE)自动化类型信息的公用接口。类定义的完整格式如下:type类名=classprivate私有数据成员、成员函数或过程protected保护数据成员、成员函数或过程public公有数据成员、成员函数或过程published公布类型数据成员、成员函数或过程automated自动类型数据成员、成员函数或过程end;在类说明中,访问权限声明的出现次序和次数可以是任意的。每遇到一个访问权限声明,编译器就将其后成员的访问权限确定为该保留字所规定的访问权限,直到遇到下一个访问权限声明为止。3.4继承一、继承的概念及意义二、派生类的定义及使用三、派生类的构造函数和析构函数一、继承的概念及意义继承的实质就是在既有类的基础上构造新的类,即新类从一个或多个已有的类中继承数据和方法,同时增加或重新定义数据和方法,由此构造出一个新的类型,称为派生类(或子类),那些已有的类则称为基类(或父类)。继承的主要目的是实现代码的重用。二、派生类的定义及使用派生类的定义格式为:type派生类=class(基类){派生类新增或改写部分}end;三、派生类的构造函数和析构函数在ObjectPascal中,在派生类的构造函数的开始部分,使用inherited保留字来调用基类的构造函数,首先初始化基类的成员,然后构造派生类的特有成员。在派生类的析构函数的结尾部分,使用inherited保留字来调用基类的析构函数,最后释放基类的成员部分。3.5多态性一、多态性的概念二、重载三、虚方法四、抽象方法与抽象类五、类引用及类型信息运算符一、多态性的概念在面向对象程序设计中,多态性是指相同的操作,在不同类的对象中具体的实现过程不同。ObjectPascal支持两种多态性:编译时的多态性和运行时的多态性。编译时的多态性通过重载实现,运行时的多态性通过虚方法来实现。二、重载在面向对象程序设计中,重载的含义是相同名字的函数或过程,在不同的场合可以表现出不同的行为,也就是说,可以同时定义多个具有相同名字的函数或过程,而它们的操作对象具有不同的类型。重载函数或过程用保留字overload来说明。三、虚方法方法调用中,在运行时才确定对象方法的调用地址,这种调用方法叫动态联编。动态联编通过虚方法来实现,虚方法使用指令字virtual说明。重载参数个数和类型完全相同的方法时使用保留字override,而不使用保留字overload。动态联编除可以通过虚方法实现外,还可以通过动态方法实现,动态方法使用指令字dynamic。虚方法和动态方法在功能上是等价的,它们的不同在于:虚方法的调用速度比较快,而动态方法的代码数量比较少。四、抽象方法与抽象类在定义虚方法或动态方法时,使用指令字abstract说明,则该方法成为抽象方法,包含抽象方法的类称为抽象类。抽象方法不可以定义函数体,且必须是虚方法或动态方法。五、类引用及类型信息运算符1.类引用类引用(classreference)是一种数据类型,是类的类型引用。其定义格式如下:TypeRT=classofT;其中,T为已经定义的类,RT定义为T类的引用类型。2.类型信息运算符类型信息运算符是在程序运行期间,用来进行类型信息检测和类型转换的运算符。is运算符is运算符的表达式格式为:对象名is类名表达式的作用是判别某对象是否是某个类的一个实例。如果该对象是某类的一个实例,则运算结果为True,否则结果为False。as运算符as运算符的表达式格式为:对象名as类名表达式的作用是返回一个指定类的对象引用。该对象原所属必须与引用类兼容,或者为空(nil)。通常可以先用is运算先检测其与引用类的兼容性。3.6属性与方法一、属性二、方法一、属性在Delphi中,组件的属性可以看成是对类中数据进行访问和修改的特殊的辅助域。当然,在Delphi中,我们并不需要了解属性是如何实现的,我们只要通过ObjectInspect窗口就可以设置组件的属性值了。二、方法方法在ObjectPascal中的形式就是类的过程成员或函数成员。方法描述对象的行为特征。在所有对象的方法中都有一个名为self的隐含变量,self是一个指向调用方法的对象的指针。当某个对象调用方法时,编译器将self指针指向该对象。在定义类的成员函数或过程时,如果在procedure或function前加上class保留字,则该方法称为类方法。类方法用类调用,而不是用对象调用,它们对类进行操作,而不是对具体的对象操作。
本文标题:第三章Delphi中的面向对象
链接地址:https://www.777doc.com/doc-3230979 .html