1、Delphi面向对象程序设计第一章 Delphi基础知识 本章内容本章内容Borland公司和Delphi的传奇历史编程思想和编程工具的辩证关系Delphi7的集成开发环境Delphi编程的一般方法和步骤Delphi工程、窗体和单元文件Delphi面向对象程序设计1.0 Borland公司和公司和Delphi的传奇历史的传奇历史创始人:Niklaus Wirth与Borland并无直接关系,是他发明了Pascal语言。Phillipe Kahn也是他的学生。Delphi语言的演变过程是:Pascal、Object Pascal、Delphi。Niklaus Wirth在1984年获得计算机科学
2、领域最高奖:图灵奖第一章 Delphi基础知识下一页返回Delphi面向对象程序设计第一章 Delphi基础知识1.0 Borland公司和公司和Delphi的传奇历史的传奇历史创始人:菲力浦凯恩(Phillipe Kahn)是Niklaus Wirth的学生。在美国加利福尼亚州创建了Borland国际。当时就买出了100多万份Pascal拷贝。在C语言问世前,Pascal是风靡全球,最受欢迎的语言之一,创下了发行拷贝数最多的世界纪录。下一页上一页返回Delphi面向对象程序设计1.0 Borland公司和公司和Delphi的传奇历史的传奇历史创始人:Anders Hejlsberg是Borl
3、and所有Pascal编译器的架构师,Delphi前3个版本的架构师,C#的设计者,.Net的架构师。推荐书籍:Borland传奇李维著第一章 Delphi基础知识返回上一页下一页Delphi面向对象程序设计1.1 编程思想与编程工具的辩证关系编程思想与编程工具的辩证关系 开发工具之于程序员如同剑之于剑客,而程序员的“剑招”就是自身的编程修养、思想、理念等。只有扎扎实实地打好基础,具备良好的编程思想,才能体会“一剑西来,天外飞仙”的酣畅淋漓。第一章 Delphi基础知识返回上一页下一页Delphi面向对象程序设计第一章 Delphi基础知识1.2 Delphi7的集成开发环境的集成开发环境下一
4、页返回上一页Delphi面向对象程序设计第一章 Delphi基础知识1.2 Delphi7的集成开发环境代码洞察(Code Insight)技术:代码完善(Code Completion)代码参数提示(Code Parameters)代码模板专家(Code Templates)符号洞察(Tooltip Symbol Insight)返回上一页下一页Delphi面向对象程序设计第一章 Delphi基础知识1.3 Delphi编程的一般方法和步骤编程的一般方法和步骤控制台应用程序可视化应用程序组件的命名方式:组件前缀组件前缀组件功能组件功能 补充例程:补充例程:欢迎和时间返回上一页下一页Delph
5、i面向对象程序设计第一章 Delphi基础知识1.4 Delphi工程、窗体和单元文件工程、窗体和单元文件Delphi的工程文件:扩展名为.dpr,是整个应用程序的主程序。Delphi的窗体文件:扩展名为.dfm,保存了窗体上各个对象(包括窗体本身)的属性设置,可以以窗体和文本两种方式打开。Delphi的单元文件:扩展名为.pas,一个工程中可以包含若干单元,一个窗体文件对应一个单元文件,但是也可以有没有窗体的单元文件。返回上一页下一页Delphi面向对象程序设计工程文件的组成 program PHello;uses Forms,UMain in UMain.pas frmHello;/单元模
6、块说明单元模块说明$R*.res begin /主程序开始主程序开始 Application.Initialize;Application.CreateForm(TfrmHello,frmHello);/创建主窗体创建主窗体 Application.Run;/启动主程序,将控制权交给主窗体启动主程序,将控制权交给主窗体 end./主程序结束主程序结束返回上一页下一页Delphi面向对象程序设计单元文件的组成unit UMain;/单元名称单元名称interface /接口部分接口部分uses /引用的外部单元,引用的外部单元,uses关键字类似于关键字类似于C/C+中的中的include Wi
7、ndows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;type TfrmHello=class(TForm)/声明窗体类声明窗体类 btnWelocome:TButton;/窗体类的成员窗体类的成员 btnClose:TButton;edtDisplay:TEdit;procedure btnCloseClick(Sender:TObject);/成员事件过程的声明成员事件过程的声明 procedure btnWelocomeClick(Sender:TObject);procedur
8、e FormCreate(Sender:TObject);private Private declarations public Public declarations end;/类声明结束类声明结束var frmHello:TfrmHello;/声明窗体实例声明窗体实例implementation /实现部分实现部分$R*.dfmprocedure TfrmHello.btnCloseClick(Sender:TObject);/成员事件过程的实现成员事件过程的实现begin Close;end;end./单元结束单元结束返回上一页Delphi面向对象程序设计第二章 Object Pasca
9、l语法基础 本章内容本章内容保留字、指令字和标识符注释常量和变量常用数据类型运算符与表达式语句过程和函数Delphi面向对象程序设计第二章 Object Pascal语法基础2.1 保留字、指令符和标识符保留字、指令符和标识符保留字保留字(Reserve Words)是由系统规定的具有特定意义和用途的单词,在编程中不能被重新定义或作其它用途。指令符指令符(Directives)也是由系统规定的具有特定意义的单词,但它们可以被重新定义。一旦被重新定义,则在该定义的作用域之内就采用新的含义。保留字和指令符没必要死记硬背,熟悉后就知道了。下一页下一页返回返回Delphi面向对象程序设计第二章 Obj
10、ect Pascal语法基础2.1 保留字、指令符和标识符保留字、指令符和标识符标识符标识符(Identifiers)是用来表示常量、变量、属性、对象、类型、过程、函数、单元、对象等语法实体的名称的符号。Object Pascal中的标识符的命名规则如下:标识符可以由字母(AZ、az)、数字(09)、下划线组成。标识符必须由字母或下划线开头。标识符的长度不应该超过255个字符,如果超过,将只有前255个字符有效。不能使用保留字作为自定义标识符,尽量不要使用指令字作为自定义标识符。下一页下一页返回返回上一页上一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.1 保留字
11、、指令符和标识符保留字、指令符和标识符注意注意:(1)Object Pascal中,标识符不区分大小写。中,标识符不区分大小写。(2)在Delphi的库文件中还预先定义了一些标识符,如标准数学函数Sqrt,Sin,标准数据类型如Boolean、Char等,应尽量避免使用这些标识符作为自定义的标识符,以免引起混淆。(3)使用标识符时,必须先声明再使用,否则编译时,系统会显示错误信息,提示该标识符没有定义。下一页下一页返回返回上一页上一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.2 注释注释Delphi中支持三种格式的注释:中支持三种格式的注释:大括号:“”和“”;
12、小括号和星号的组合:“(*”和“*)”;双斜线:“/”。在编写程序的过程中,应养成良好的注释习惯,以增强程序的可读性。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.2 注释注释 作为良好的编程规范,在程序代码单元文件顶端必须拥有本单元文件的“单元说明”注释。对于常量、结构类型、函数/过程、自定义变量、代码段功能块、关键语句等有含义的代码部分,必须有注释行进行详细说明。注释行可在需说明部分行后以“/XXXXXXXX”方式添加单行注释,也可在需说明部分行上以“XXXXXXXX”方式添加多行。返回返回上一页上一页下一页下一页Delphi面向
13、对象程序设计第二章 Object Pascal语法基础2.2 注释注释单元头定义,添加到每个单元的前面。*单元名称:功能描述:作者:软件名称:版本:公司名称:刀剑如梦软件创作室*返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.3 常量与变量常量与变量常量常量在程序运行过程中其值不会改变,可以分为直接常量和符号常量两种。注意注意:字符常量和字符串常量均以单引号括起来,如:a,Hello声明符号常量的语法如下:Const ;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.3 常量与变
14、量常量与变量变量变量在程序运行中其值可以改变。变量有三大要素:变量名、数据类型、变量值变量必须先声明后使用,声明变量的语法如下:var :;:;演示:演示:常量和变量的使用常量和变量的使用返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4 数据类型数据类型 数据类型决定了变量的取值范围以及能够参与的数据类型决定了变量的取值范围以及能够参与的运算。运算。Object Pascal语言是一种语言是一种“强数据类型强数据类型”语言。语言。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.
15、4 数据类型数据类型简单数据类型字符串型结构类型指针类型过程类型变体类型 整型字符型布尔型枚举型子界型实型集合类型数组类型记录类型文件类型类类型原类类型接口类型有序类型返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.1 简单数据类型简单数据类型 包括整型、字符型、布尔型、枚举型、子界型和实型。其中,整型、字符型、布尔型、枚举型和子界型这五种被称为有序数据类型(Ordinal)。其中,整型、字符型、布尔型、实型,再加上字符串型是Object Pascal内部预先定义好的数据类型,可以直接使用;其它类型必须先作类型定义后才能使用。返回返
16、回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.1 简单数据类型简单数据类型 对于有序数据类型,常用的操作函数如下表所示:函数函数参数参数返回值返回值Dec有序类型变量变量减1后的值Inc有序类型变量变量加1后的值Pred有序表达式表达式前驱的值Succ有序表达式表达式后继的值Ord有序表达式有序表达式的值Low有序类型标识符或有序类型变量该类型的最小值High有序类型标识符或有序类型变量该类型的最大值Odd有序表达式判断是否为奇数返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4
17、.1 简单数据类型简单数据类型 整型整型(Integer):整型数据类型描述了整个数字集合的一个子集。Delphi支持多种整型数据,请注意从取值范围、占用存储空间、有无符号等方面区别这些不同的整型。演示:整数数据类型的大小和范围整数数据类型的大小和范围 返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.1 简单数据类型简单数据类型 字符型字符型(Character):字符型是存储单个字符数据的类型。常用的字符型为Char。常量字符可用代表它们的符号表示,如k,也可以用数字符号表示,如#78。后者还可以用Chr函数表示,Chr函数返回数
18、字对应于AnsiChar或WideChar中的字符值,如Chr(78)返回值为小写字母k。函数Ord则用于获得字符在其字符集中的序号。下面列出了一些常用的特殊字符#9跳格(Tab键)#10换行#13回车(Enter键)返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.1 简单数据类型简单数据类型 布尔型布尔型(Boolean):布尔型数据用于逻辑运算,表示非真即假的情况。布尔型变量的值为系统预定义的常量True和False,常用的布尔型为Boolean。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object
19、Pascal语法基础2.4.1 简单数据类型简单数据类型 枚举类型枚举类型(Enumerated Type):枚举类型采用列举出该类型所有可能取值的方式定义了一个有序的值的集合,其定义语法格式为:type =(值1,值2,值n);例如:type weekday=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);注意:枚举类型也是有序类型。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.1 简单数据类型简单数据类型 子界类型子界类型(Subrange Type):子界
20、类型定义了某种类型的取值范围,是另一种有序类型的子集,其定义语法格式为:type =起始值.终止值;例如:type MyNumber=0.128;注意:子界类型也是有序类型。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.1 简单数据类型简单数据类型 实型实型(Real):实数类型定义了一个可以按照浮点格式进行描述的数字的集合。常用的实数类型为Real。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.2 字符串类型字符串类型(String)字符串类型用于表示一个字符的序列
21、。常用的字符串类型为String,例如:var s:string;begin s:=Hello;end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.3 结构类型(结构类型(Structured Type)集合类型集合类型(Set Type):集合类型是同种有序类型的值的集合,该有序类型为集合类型的基类型。其定义的语法格式为:type =set of;例如:type TSomeInts=1.250;/定义子界类型定义子界类型TSomeInts TIntSet=set of TSomeInts;/定义集合类型定义集合类型TIntSe
22、t,其基类型为,其基类型为TSomeIntsVar IntSet1=TIntSet;begin IntSet1=1,3,5,7,9;end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.3 结构类型(结构类型(Structured Type)数组类型数组类型(Array Type):数组类型表示的是同类数据的集合。数组类型的数据每个元素都有一个唯一的下标值,可以通过在方括号中填入下标值的方式来访问数组中的元素。数组类型定义的语法格式为:type =array下标范围下标范围 of;例如,下面的代码定义了一个有10个整型元素的数组:
23、type TMyArr=array 1.10 of Integer;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.3 结构类型(结构类型(Structured Type)数组既可以在声明时指定其大小,也可以在运行时动态分配内存改变大小,即动态数组。例如:type TMyArr1=array1.10 of integer;/一维静态数组一维静态数组 TMyArr2=array1.10,1.5 of integer;/二维静态数组二维静态数组 TMyArr3=array of integer;/一维动态数组一维动态数组 TMyArr4
24、=array of array of integer;/二维动态数组二维动态数组返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.3 结构类型(结构类型(Structured Type)数组在使用时常常会用到Low和High函数来获取数组的下标和上标,同时,数组的使用常会和循环结构结合起来,例如:Var Arr1:array1.10 of integer;I,Sum:integer;begin Sum:=0;For I:=Low(Arr1)to High(Arr1)do begin Arr1I:=I;sum:=sum+Arr1I;en
25、d;ShowMessage(Sum is+IntToStr(Sum);end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.3 结构类型(结构类型(Structured Type)对于动态数组而言,在使用前,需要调用SetLength过程设置数组的长度,例如:var A:array of integer;I,Sum:integer;begin Sum:=0;SetLength(A,10);for I:=Low(A)to High(A)do begin AI:=I;Sum:=Sum+AI;end;end;返回返回上一页上一页下一页下
26、一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.3 结构类型(结构类型(Structured Type)记录类型(记录类型(Record):记录类型类似于C语言中的结构体类型,可以用来保存一组不同数据类型的信息,记录中的每个成员(域),有它自身的数据类型。声明记录类型的语法格式为:type =record Field1:FieldType1;Field2:FieldType2;end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.4.3 结构类型(结构类型(Structured Type)下面的例子说
27、明了记录类型的使用方法:type TStudent=record StNumber:integer;StName:string;StScore:real;end;var Student1:TStudent;/声明TStudent类型的变量Student1。/为记录类型的变量Student1赋值 Student1.StNumber:=1000;Student1.StName:=张三张三;Student1.StScore:=85.5;需要注意的是,记录类型的变量不能在定义变量的时候为其赋初值。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.
28、4.4 指针类型(指针类型(Pointer)指针是存放指定类型变量内存地址的变量,即指针类型的变量指向的是内存空间的地址。下面的例子说明了指针类型的简单用法:Var P:integer;X:integer;begin X:=100;P:=X;/将整型变量X的地址赋值给指针变量P Writeln(x=,P);/输出P所指向地址中的内容,即X的值 Readln;end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.5 运算符与表达式运算符与表达式 Object Pascal中的运算符可以分为算术运算符、逻辑运算符、关系运算符、位运算符、指
29、针运算符和集合运算符等。每种运算符结合其操作数的数据类型能够实现特定的功能。表达式是由常量、变量、数值、运算符和函数调用等按照一定的语法规则组合起来的,可以用于确定赋给一个变量的值、计算函数或过程的参数、或判断一个条件等。注意:使用运算符要注意优先级的问题。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.5.1 算术运算符算术运算符 包括、*、/、div、mod。注意:1.“+”和“-”运算符。可以放在操作数前,表示正数和负数。2.“/”和“div”和“mod”运算符。“/”运算符进行浮点除,其操作数既可以是整型也可以是实型,运算结果是
30、实型;“div”运算符进行整除,要求两个操作数都是整型,运算结果为经过四舍五入后得到的整数值;取模“mod”运算符也要求两个操作数都是整型,运算结果为两数相除后的余数。这三个运算符都要求第二个操作数的值不能为0。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.5.2 逻辑运算符逻辑运算符 包括not、and、or、xor。逻辑运算符的作用是进行逻辑运算,其操作数类型都要求是逻辑型,运算结果也是逻辑型。其中,not运算符的作用是逻辑取反;and运算符的作用是逻辑与;or运算符的作用是逻辑或;xor运算符的作用是逻辑异或。返回返回上一页上一
31、页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.5.3 关系运算符关系运算符 包括=、=。关系运算符反映的是两个操作数之间的关系,其操作数可以是一般的数据类型,但运算结果只能是True和False两种逻辑型。注意:在Object Pascal中,判断不等使用的运算符是“”,而其它语言,如C语言中,使用的是“!=”;还要注意判断相等使用的“=”和赋值号“:=”之间的区别。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6 语句语句 在Object Pascal中,语句是由关键字、运算符和操作数等组成
32、的,并且以分号以分号“;”结尾结尾。还可以将多条语句用“beginend”括起来,称为复合语句。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.1 赋值语句赋值语句 在Object Pascal中赋值号是“:=”,表示将赋值号右边表达式的值赋给左边的变量。注意注意:1.不同语言中的赋值号不同,例如C语言中赋值使用“=”,而在Object Pascal中“=”是关系运算符,表示判断是否相等。2.赋值符号左边必须是变量,不能是常量或者表达式。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语
33、法基础2.6.2 条件语句条件语句在Object Pascal中,条件语句有两种基本形式:if语句和case语句。1.If语句语句 If语句有两种基本形式:if 条件表达式 then 语句if 条件表达式 then 语句1 else 语句2 对于前者而言,仅当条件表达式的值为真,即条件满足时,语句才执行;对于后者,当条件表达式的值为真时,执行语句1,为假时,执行语句2。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.2 条件语句条件语句2.case语句语句 Case语句执行的是对一个结果的多种分支进行判断,由Case语句中表达式的值
34、来决定具体执行哪个操作。当if语句非常复杂的时候,可以考虑用Case语句来代替它。Case语句的语法格式为:case SwitchExpression of Case1:Expression1;Case2:Expression2;CaseN:Expressionn;else Statement;end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.2 条件语句条件语句2.case语句语句注意注意:SwitchExpression应该是一个有序类型的表达式(如整型、字符型、布尔型、子界类型等),不能是实型值。caseN的值也应该是一
35、个有序类型的值。而且每个值必须是常量,且必须是唯一的。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.3 循环语句循环语句 循环控制语句的作用是为了多次执行某个或某些语句,以大大缩短程序的源代码,并增加程序的可读性。Delphi中的循环控制语句主要是fordo、repeatuntil和whiledo语句。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.3 循环语句循环语句fordo循环循环:Object Pascal中的for循环有两种方式,一种是循环变量增1,即:for
36、 循环变量循环变量:=循环变量初值循环变量初值 to 循环变量终值循环变量终值 do 循环体循环体;另一种是循环变量减1,即:for 循环变量循环变量:=循环变量初值循环变量初值 downto 循环变量终值循环变量终值 do 循环体循环体;在to循环中,循环变量的初值必须小于终值,而在downto循环中,循环变量的初值必须大于终值。对于那些已知循环次数的问题来说,for循环是非常适合的。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.3 循环语句循环语句repeatuntil循环循环:repeatuntil是直到型循环,它的语法格式
37、为:repeat 循环体循环体;until 循环条件循环条件;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.3 循环语句循环语句Whiledo循环循环:Whiledo是当型循环,它的语法格式为:while 循环条件循环条件 do 循环体循环体;请注意比较请注意比较repeatuntil和和Whiledo循环二者在循环体循环二者在循环体执行次数、循环终止条件方面的差别。执行次数、循环终止条件方面的差别。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.3 循环语句循环语句B
38、reak和和Continue语句语句 二者用于改变循环执行的流程。Break语句用来直接中断循环,Continue语句则用来跳出当次循环,而直接回到循环条件处进行判断,或者在for循环中,使循环变量直接增加或减小1,然后继续循环(除非循环条件不满足或循环变量达到了上限)。这和C语言中的Break、Continue语句作用相同。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.6.4 With语句语句 with语句的作用主要是用来简化代码的。例如下面的代码:Form1.Canvas.Pen.Width:=2;Form1.Canvas.Pen
39、.Color:=clRed;可以用with语句来简化为:with Form1.Canvas.Pen do begin Width:=2;Color:=clRed;end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.7 过程与函数过程与函数 过程与函数是一个相对独立的语句块,能够实现特定的功能,可以被其他程序块调用,类似于C语言中的子程序。二者之间最大的差别是:函数在执行后有一个返回值,而过程则没有返回值。因此,函数可以作为表达式来使用。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法
40、基础2.7.1 过程的声明过程的声明过程声明的语法格式如下:procedure 过程名(形式参数列表);begin 过程体;end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.7.2 函数的声明函数的声明函数声明的语法格式如下:函数声明的语法格式如下:function 函数名函数名(形式参数列表形式参数列表):返回值类型返回值类型;begin 函数体函数体;end;返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.7.3 过程与函数的参数过程与函数的参数 过程与函数的形参和实参
41、之间的传递有传值和传过程与函数的形参和实参之间的传递有传值和传地址两种方式。地址两种方式。传值方式是缺省的参数传递方式:即将实参的值传值方式是缺省的参数传递方式:即将实参的值拷贝压入栈中,而函数或过程使用和操作的都是拷贝压入栈中,而函数或过程使用和操作的都是栈中的拷贝值,而不是原始值。因此在函数或过栈中的拷贝值,而不是原始值。因此在函数或过程中对参数的改变并不会影响到实参本身。程中对参数的改变并不会影响到实参本身。如果在过程和函数声明时,在形参名前加如果在过程和函数声明时,在形参名前加var保保留字进行说明的话,就是传地址方式,也称为引留字进行说明的话,就是传地址方式,也称为引用参数。当通过引
42、用传递参数时,是直接引用参用参数。当通过引用传递参数时,是直接引用参数原始值,函数或过程使用和操作的都是原始值,数原始值,函数或过程使用和操作的都是原始值,因此,能够在函数或过程中改变实参的值。因此,能够在函数或过程中改变实参的值。返回返回上一页上一页下一页下一页Delphi面向对象程序设计第二章 Object Pascal语法基础2.7.4 过程与函数的调用过程与函数的调用 函数或过程调用时,要求实参与形参数量相同,函数或过程调用时,要求实参与形参数量相同,顺序相同,类型相容,否则会出现编译错误或结顺序相同,类型相容,否则会出现编译错误或结果错误。果错误。返回返回上一页上一页Delphi面向
43、对象程序设计第三章 Delphi面向对象编程思想 本章内容本章内容面向对象程序设计的基本概念Delphi中类的声明、实现和使用构造方法和析构方法Delphi中类的继承性和应用Delphi中类的多态性和应用Delphi中抽象方法和抽象类的应用Delphi中类操作符的应用Delphi面向对象程序设计第三章 面向对象编程思想3.0 面向对象程序设计的基本概念面向对象程序设计的基本概念3.0.0 什么是面向对象程序设计什么是面向对象程序设计OOP(Object Oriented Programming)?)?下一页下一页返返 回回Delphi面向对象程序设计3.0 面向对象程序设计的基本概念面向对象程
44、序设计的基本概念OOP有以下几个基本观点:客观世界由对象组成,任何客观事物或实体都是对象,复杂的对象可以由简单对象组成。具有相同数据和操作的对象可归为一个类,对象是类的一个实例。类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特征。子类和父类构成层次结构。第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.0 面向对象程序设计的基本概念面向对象程序设计的基本概念OOP有以下几个基本观点:对象之间通过消息传递相互联系。类具有封装性,其数据和操作等对外界是不可见的,外界只能通过消息请求某些操作,提供所需服务。面向对象对象类继
45、承通信第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.0.1 面向对象方法的发展面向对象方法的发展 初始阶段 Simula语言是第一个里程碑,引入了类的概念和继承机制;Smalltalk语言 发展阶段 C+为代表 成熟阶段 面向对象分析和设计技术走向实用,最终形成了从分析、设计到编程、测试与维护一整套的软件工程体系第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.0.2 对象对象(Object)系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组属性和对属性的操作方法(服务)
46、组成。属性属性:描述对象的静态特征的数据项方法方法:描述对象的动态特征的操作序列 对象属性方法第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.0.3 类类(Class)具有相同属性和方法的一组对象的集合,为该类的全部对象提供了统一的抽象描述,好比一个对象模板,用它可以产生多个对象。类和对象的关系第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.0.4 封装封装(Encapsulation)把对象的属性和方法结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。封装的概念第三章 Delphi
47、面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.0.5 继承继承(Inheritance)子类可以自动拥有父类的全部属性和方法。类的继承第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.0.6 消息消息(Message)对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等信息。消息驱动第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.0.6 多态性多态性(Polymorphism)在父类中定义的属性或服务被子类继承后,可以具有不同的
48、数据类型或表现出不同的行为。第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.1 Delphi中类的声明、实现和使用中类的声明、实现和使用3.1.1 类的声明类的声明类声明的语法格式如下:type 类名=class(基类)数据成员声明 过程和函数声明 属性声明 end;第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.1.1 类的声明类的声明注意:注意:1.类名可以为任何合法的标识符,但习惯上一般以大写的字母“T”开头,以和Borland公司的编码风格吻合;2.class为保留字,表示声明的
49、是类类型;3.class保留字后的括号中是基类名,表示当前声明的类是从该基类继承,如果类声明中省略基类名,则当前声明的类缺省从根类TObject类继承。第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.1.1 类的声明类的声明类声明示例:类声明示例:type THuman=class(TObject)private Fname:String;FAge:Integer;public procedure SetAge(Value:integer);function GetName:string;procedure SetName(Value:st
50、ring);procedure SayHello(Words:string);property Age:integer read Fage write SetAge;end;第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.1.2 类的实现类的实现 类的实现实际上是类的方法成员的实现。类的声明中方法成员只给出了函数或过程的首部,而函数体和过程体则要在类的实现部分给出。在Delphi中类的声明和实现必须分开。第三章 Delphi面向对象编程思想下一页下一页上一页上一页返返 回回Delphi面向对象程序设计3.1 Delphi中类的声明、实现和使