收藏 分享(赏)

Delphi程序设计的一般问题1.ppt

上传人:jinchen 文档编号:8034998 上传时间:2019-06-05 格式:PPT 页数:37 大小:84KB
下载 相关 举报
Delphi程序设计的一般问题1.ppt_第1页
第1页 / 共37页
Delphi程序设计的一般问题1.ppt_第2页
第2页 / 共37页
Delphi程序设计的一般问题1.ppt_第3页
第3页 / 共37页
Delphi程序设计的一般问题1.ppt_第4页
第4页 / 共37页
Delphi程序设计的一般问题1.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、Delphi程序设计的一般问题,Delphi不但可以开发Windows应用程序,而且也可以开发跨平台的应用程序。 为了使我们后面的讨论更加透彻,首先需要对Delphi程序设计的一般问题做一个研究。,第一节 程序和单元,Pascal的主程序格式是Program 程序名;beginstatement;end.,一、工程文件,【Project】【View Source】,就可以看到下面的工程文件:program Project1;uses /定义被引入的单元Forms,Unit1 in Unit1.pas Form1; $R *.resbeginApplication.Initialize; /初始

2、化Application.CreateForm(TForm1, Form1); /运行构造函数,建立一个Form的实例Application.Run; /程序运行end.,完整的工程文件结构如下:Program 程序名Uses 单元名Const 常量定义Type 类型定义Var 变量定义过程和函数定义Begin语句 end.,二、单元文件,典型的单元文件的结构如下: unit Unit1; /单元名interface/接口部分,以interface开头,这里做的任何说明,都可以被自己或引用这个单元的程序调用。 /单元声明uses Windows, Messages, SysUtils, Var

3、iants, Classes, Graphics, Controls, Forms, Dialogs;/类型声明typeTForm1 = class(TForm) procedure FormCreate(Sender: TObject);private Private declarations public Public declarations end;,varForm1: TForm1;/实现部分implementation$R *.dfm /编译开关procedure TForm1.FormCreate(Sender: TObject);beginend;end.,三、单元的引用,要想

4、在一个程序调用另一个单元的变量或者函数、过程等,必须在Uses子句中声明。 Uses可以在interface声明,也可以在implementation中声明。 如果引用的内容会出现在接口部分,应该在interface中声明,如果引用的内容仅仅出现在实现部分,应该在implementation中声明。,第二节 面向对象的程序设计方法,一、名词解释: 对象(Object):数据和代码封装的统一体,可以把对象和实例等同起来,实例是从类的角度定义对象,表示一个建立在特定类基础上的对象。 类(Class):描述具有相似性质的一组对象,这组对象具有相同的数据结构,相同的操作,它定义了这组对象共同的属性和操

5、作。 属性(propertiy):属性是用来描述对象基本性质的一组参数,可以认为是对象的一个数据域。 方法(Method):方法是类提供的操作,可以是过程也可以是函数。 事件(Event):事件是由某种操作所触发的,事件在类中声明,但具体的程序是用户写的。,对象的组成,每个对象必须包括三个内容: 对象接口; 对象行为; 对象数据;,接口,接口定义本身包括一组方法(Procedure或Function)、属性(Property)、事件和属性标志(变量),这些属性在作用域中声明为Public。 例如,在类中可以有这样的代码: Public Function Car(x:integer): inte

6、ger; 但下面的代码就不是接口的一部分:Private Procedure street(x:integer); 它只能被类中的代码调用。但我们可以这样做:PublicFunction Car(x:integer):integer;beginstreet(x);end; 通过Car使得客户可以调用street,这往往使程序更容易维护。,二、类,1. 类的定义 Type 类名 =Class(父类)数据域定义过程和函数定义属性的定义End; Tobject 是所有类的最终祖先,如果不声明父类,将默认是Tobject。,例子,建立一个新的Delphi工程,File-New-Unit,加入一个新的单

7、元。格式如下: unit Unit2;interfaceimplementationend.,例子,在interface下写入类的定义:typeTRect=classPublicFleft,Ltop:integer;end;Tline=class(TRect)Public Fline:integer;end;,例子,然后,在Unit1下作如下定义:Uses Unit1; var a: tline; 可以看到,变量a 的下面将具备TRect内容,这实际上是一种继承关系。,2. 方法,在类中定义方法的语法如下: 定义type 类名=Class(父类)保护方式关键字(Public或Private)p

8、rocedure 方法名(参数表);Function 函数名(参数表):返回值类型;end;实现procedure 类名.方法名(参数表);(Function 类名.函数名(参数表):返回值类型;)beginend;,例子,调用对象实例.方法名(参数表) 下面是一个实际的例子: unit Unit2; interfacetypeTRect=classPublicFleft,Ltop:integer;procedure ABC;end;Tline=class(TRect)PublicFline:integer;end;,例子,下面是一个实际的例子: unit Unit2; interfacety

9、peTRect=classPublicFleft,Ltop:integer;procedure ABC;end;Tline=class(TRect)PublicFline:integer;end;,例子,Implementationuses unit1,Dialogs;procedure Trect.ABC; beginshowmessage(您现在使用的是自己创建的方法) end;end.,例子,在Unit1中调用 uses Unit2;var a: tline;procedure TForm1.Button1Click(Sender: TObject); begina.ABC; end;,

10、3 构造方法,有的时候,需要用构造方法来进行一些初始化。 声明格式 type.constructor 构造方法名(参数表)end; 实现构造方法constructor 构造方法名(参数表);beginend; 调用构造方法对象变量:= 类名.构造方法名(参数表);,例子,unit Unit2; interfacetypeTRect=classPublicFleft,Ltop:integer;procedure ABC;constructor RectCreate(L,T:integer);end;Tline=class(TRect) PublicFline:integer;constructo

11、r LineCreate(L,T,F:integer);end;,例子,Implementation uses unit1,Dialogs;constructor Trect.RectCreate(L,T:integer);begin/首先调用基类的构造方法inherited create;Fleft:=L;Ltop:=T;end;constructor Tline.LineCreate(L,T,F:integer);begin/调用父类的构造方法inherited RectCreate(L,T); Fline:=F;end;,例子,procedure Trect.ABC;beginshowm

12、essage(您现在使用的是自己创建的方法)end;end.,例子,在Unit1中实现调用 uses Unit2; Vara: tline; procedure TForm1.Button1Click(Sender: TObject); begina:=Tline.LineCreate(1,2,3);edit1.Text:=inttostr(a.Fleft);edit2.Text:=inttostr(a.Ltop);edit3.Text:=inttostr(a.Fline);a.ABC; end;,4. 析构方法,析构方法一般用于释放类的对象实例,设置析构的方法如下所示: type 类名=Cl

13、ass(父类)Destructor 析构方法名(参数表);End; 实现时:Destructor 析构方法名(参数表);beginend; 调用时:对像变量.析构方法名(参数表); 但是,一般不采用这个方法,而是使用Free,也就是释放。,三、属性,1. 最简单的属性 首先看一个比较简单的方法,用一个变量(数据域),来记录属性的值,这个变量也称其为属性标志: 定义属性 private数据域变量:类型; Property 属性名:类型 read 数据域 write 数据域;调用变量:=对像名.属性名;对像名.属性名:=变量;,例子,unit Unit2; interfacetypeTRect=c

14、lassPublicFleft,Ltop:integer;procedure ABC;constructor RectCreate(L,T:integer);end;Tline=class(TRect)PublicFline:integer;constructor LineCreate(L,T,F:integer);/注意,下面是构造属性privateMyp:string;publishedproperty Mypro:string read Myp write Myp;end;,例子,implementation uses unit1,Dialogs;constructor Trect.Re

15、ctCreate(L,T:integer);begin/首先调用基类的构造方法inherited create;Fleft:=L;Ltop:=T;end;constructor Tline.LineCreate(L,T,F:integer);begin/调用父类的构造方法inherited RectCreate(L,T);Fline:=F;end;,例子,procedure Trect.ABC; beginshowmessage(您现在调用的是自己创造的方法) end; end. 调用属性 uses Unit2;var a: tline; procedure TForm1.Button1Cli

16、ck(Sender: TObject); begina:=Tline.LineCreate(1,2,3);edit1.Text:=inttostr(a.Fleft);edit2.Text:=inttostr(a.Ltop);edit3.Text:=inttostr(a.Fline);a.mypro:=ddd;edit4.Text:=a.Mypro;a.ABC; end;,2. 使用专用的输入输出过程,属性的第二个方法是使用专门的输入输出过程和函数。 定义属性(读写是站在用户的角度上说的)privateprocedure 写过程名(value:类型);function 读函数名:类型;Prope

17、rty 属性名:类型 read 读函数名 write 写过程名; 实现 implementation procedure 类名.写过程名(value:类型); begin处理程序 end; function 类名.读过程名:类型; begin处理程序过程名:=值 end;,例子,调用变量:=对像名.属性名;对像名.属性名:=变量; interfacetypeTRect=classPublicFleft,Ltop:integer;procedure ABC;constructor RectCreate(L,T:integer);end;,例子,Tline=class(TRect)PublicFl

18、ine:integer;constructor LineCreate(L,T,F:integer);privateMyp:string;procedure Setpro(value:string);function Letpro:string;publishedproperty Mypro:string read Myp write Myp;property Myprotwo:string read Letpro write Setpro;end;,例子,implementation uses unit1,Dialogs; var s:string; procedure Tline.Setpr

19、o(value:string); begins:=value; end; function Tline.Letpro:string; beginletpro:=s; end;,例子,constructor Trect.RectCreate(L,T:integer);begin/首先调用基类的构造方法inherited create;Fleft:=L;Ltop:=T;end; constructor Tline.LineCreate(L,T,F:integer);begin/调用父类的构造方法inherited RectCreate(L,T);Fline:=F;end;,例子,procedure

20、 Trect.ABC;beginshowmessage(您现在调用的是自己创造的方法)end; end.,例子,调用 uses Unit2;var a: tline; procedure TForm1.Button1Click(Sender: TObject); begina:=Tline.LineCreate(1,2,3);edit1.Text:=inttostr(a.Fleft);edit2.Text:=inttostr(a.Ltop);edit3.Text:=inttostr(a.Fline);a.mypro:=我的属性值;edit4.Text:=a.Mypro;a.Myprotwo:=第二个属性;edit5.Text:=a.Myprotwo;a.ABC; end;,3. 数组属性,所谓数组属性,就是提供存取数组的属性,按照如下的方法定义: property 属性名下标值: 类型: 类型 read 数据域|方法 write 数据域|方法;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报