1.类与对象
从20世纪90年代开始,面向对象编程(Object Oriented Programming,OOP)成为编程语言最主要的特征。在Delphi中,在Pascal语言中添加了面向对象的特性,构成了面向对象的Pascal语言(Object Pascal)。
1.1 OOP基本概念
面向对象程序设计中的概念主要包括:对象、类、抽象、封装、继承、多态等。通过这些概念面向对象的思想得到了具体的体现。 本节主要介绍类与对象的概念。
对象是OOP应用程序的一个重要的组成部件。在该部件中,封装了部分应用程序,应用程序中包含过程、数据或更抽象的实体。对象非常类似于记录类型,与记录类型不同的是:对象不但能够包含数据成员(字段),也可以包含函数和过程(方法),这些数据和方法被称为类的成员。
在Delphi中,对象是从类型中创建的,与变量的声明一样。对象的类型称为类。类和对象的关系类似于类型和变量的关系。
1.2类的基本概念
类是一种用户自定义的数据类型,类中包含数据和过程、函数形式的方法,通常用来描述一些相似对象所共有的特征和行为。
对象是类的实例,由类定义的数据类型的变量。在程序运行时,对象为其内部表达占用一定的内存空间。
1.3对象的基本概念
对象是类的实例,对象中的几个基本概念:
-
字段
字段就是对象中的数据成员,可以是一组Delphi支持的类型变量的集合。字段一般用来标识对象的状态,与记录类型的变量是一致的。
-
属性
属性与字段一样,都是对象中包含的数据成员。不同之处:属性不能直接访问,需要通过方法来访问。
-
方法
方法是表示对象中的过程或函数。与字段和属性是一样的,方法也可以是共有的或私有的,可以根据需要限制外部的访问。
-
对象的生命周期
对象的生命周期是从使用类定义开始一直到删除它为止。
1.4类的定义与对象声明
在Delphi中,通过关键字Class来定义类,其基本语法格式如下:
Type <类名> = Class <数据成员1>: <数据类型1>; <数据成员1>: <数据类型1>; ...... <数据成员1>: <数据类型1>; Procedure <过程名>([参数列表]); ...... Function <函数名>([参数列表]):<返回类型>; ...... end; Procedure <类名>.<过程名>([参数列表]); ...... Function <类名>.<函数名>([参数列表]):<返回类型>; ......
对象声明与其他变量声明是相同的,格式:
var <对象名>: <类名>
Delphi中类库的约定:使用T来作为每个类的前缀。所有类使用同一个前缀有助于代码的理解。
示例代码:
Type TStudent = Class name: string; sex: string; chinese: real; math: real; english: real; Function sum(): real; Function avg(): real; End; Function TStudent.sum; begin result := chinese + math + english; end; Function TStudent.avg; begin result := (chinese + math + english) / 3; end; var student1, student2: TStudent; begin student1 := TStudent.Create; student1.name := 'zhaohb'; student1.sex := 'girl'; student1.chinese := 98.5; student1.math := 97; student1.english := 99; student2 := TStudent.Create; student2.name := 'liuq'; student2.sex := 'boy'; student2.chinese := 92.5; student2.math := 93.5; student2.english := 95; writeln(student1.name, ' ', student1.sex, ' ', student1.sum:5:1, ' ', student1.avg:5:1); writeln(student2.name, ' ', student2.sex, ' ', student2.sum:5:1, ' ', student2.avg:5:1); end.
运行结果:
zhaohb girl 294.5 98.2 liuq boy 281.0 93.7