📄 009.htm
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基础教程-->第二章 Delphi面向对象的编程方法(四)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基础教程 第二章 Delphi面向对象的编程方法(四)">
<META NAME="description" CONTENT=" - DELPHI基础教程 - 第二章 Delphi面向对象的编程方法(四)">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 background="bg.gif" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" background="bg.gif"><strong><A HREF="010.htm" ><FONT style="FONT-SIZE: 9pt">后一页</font></A><BR>
<A HREF="008.htm" ><FONT style="FONT-SIZE: 9pt">前一页</font></A><BR>
<A HREF="index.html" ><FONT style="FONT-SIZE: 9pt">回目录</font></A><BR>
<A HREF="../../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首页</font></A><BR>
</strong>
</TD>
<TD class="tt2" background="bg.gif" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">第二章 Delphi面向对象的编程方法(四)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
</font><p>2.1.10.7 <font face="宋体" lang="ZH-CN">将库单元加入工程 </p>
</font><p><font face="宋体" lang="ZH-CN">
将库单元加入工程是比较简单的。无论是您自己建立的库单元还是</font>Delphi<font
face="宋体" lang="ZH-CN">建立的与窗体有关的库单元,如果已经完成,则先打开您想加入库单元的工程</font>(<font
face="宋体" lang="ZH-CN">可以用</font>Open Project<font face="宋体" lang="ZH-CN">打开工程</font>)<font
face="宋体" lang="ZH-CN">;再选用</font>File|Open File<font face="宋体"
lang="ZH-CN">,然后选择您想加入的源程序</font>(.PAS<font face="宋体"
lang="ZH-CN">文件</font>)<font face="宋体" lang="ZH-CN">,并选择</font>OK<font
face="宋体" lang="ZH-CN">即可。则库单元被加入到应用程序中。 </p>
</font><p>2.2 <font face="宋体" lang="ZH-CN">用</font>Delphi<font face="宋体"
lang="ZH-CN">的对象进行编程 </p>
</font><p> Delphi<font face="宋体"
lang="ZH-CN">是基于面向对象编程的先进开发环境。面向对象的程序设计</font>(OOP)<font
face="宋体" lang="ZH-CN">是结构化语言的自然延伸。</font>OOP<font
face="宋体" lang="ZH-CN">的先进编程方法,会产生一个清晰而又容易扩展及维护的程序。一旦您为您的程序建立了一个对象,您和其他的程序员可以在其他的程序中使用这个对象,完全不必重新编制繁复的代码。对象的重复使用可以大大地节省开发时间,切实地提高您和其他人的工作效率。</font> </p>
<p>2.2.1 <font face="宋体" lang="ZH-CN">什么是对象 </p>
</font><p><font face="宋体" lang="ZH-CN">
一个对象是一个数据类型。对象就象记录一样,是一种数据结构。按最简单的理解,我们可以将对象理解成一个记录。但实际上,对象是一种定义不确切的术语,它常用来定义抽象的事务,是构成应用程序的项目,其内涵远比记录要丰富。在本书中,对象可被理解为可视化部件如按钮、标签、表等。</p>
</font><p><font face="宋体" lang="ZH-CN">
了解对象,最关键的是掌握对象的特性。一个对象,其最突出的特征有三个:封装性、继承性、多态性。 </p>
</font><p>2.2.1.1 <font face="宋体" lang="ZH-CN">对象的封装性 </p>
</font><p><font face="宋体" lang="ZH-CN">
对对象最基本的理解是把数据和代码组合在同一个结构中,这就是对象的封装特性。将对象的数据域封闭在对象的内部,使得外部程序必需而且只能使用正确的方法才能对要读写的数据域进行访问。封装性意味着数据和代码一起出现在同一结构中,如果需要的话,可以在数据周围砌上“围墙”,只有用对象类的方法才能在“围墙”上打开缺口。 </p>
</font><p>2.2.1.2 <font face="宋体" lang="ZH-CN">对象的继承性 </p>
</font><p><font face="宋体" lang="ZH-CN">
继承性的含义直接而且显然。它是指把一个新的对象定义成为已存在对象的后代;新对象继承了旧类的一切东西。在往新对象中添加任何新内容以前,父类的每一个字段和方法都已存在于子类中,父类是创建子类的基石。 </p>
</font><p>2.2.1.3 <font face="宋体" lang="ZH-CN">对象的多态性 </p>
</font><p><font face="宋体" lang="ZH-CN">
多态性是在对象体系中把设想和实现分开的手段。如果说继承性是系统的布局手段,多态性就是其功能实现的方法。多态性意味着某种概括的动作可以由特定的方式来实现,这取决于执行该动作的对象。多态性允许以类似的方式处理类体系中类似的对象。根据特定的任务,一个应用程序被分解成许多对象,多态性把高级设计处理的设想如新对象的创建、对象在屏幕上的重显、程序运行的其它抽象描述等,留给知道该如何完美的处理它们的对象去实现。 </p>
</font><p>2.2.1.4 <font face="宋体" lang="ZH-CN">通过</font>Delphi<font face="宋体"
lang="ZH-CN">实例了解对象 </p>
</font><p><font face="宋体" lang="ZH-CN"> 让我们结合</font>Delphi<font
face="宋体" lang="ZH-CN">的实例讨论对象的概念</font>:</p>
<p><font face="宋体" lang="ZH-CN">
当您要建立一个新工程时,</font>Delphi <font
face="宋体" lang="ZH-CN">将显示一个窗体作为设计的基础。在程序编辑器中,</font>Delphi<font
face="宋体" lang="ZH-CN">将这个窗体说明为一个新的对象类型,并同时在与窗体相关联的库单元中生成了创建这个新窗体对象的程序代码。 </p>
</font><p>unit Unit1; </p>
<p>interface </p>
<p>uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs;<font
face="宋体" lang="ZH-CN"> </font></p>
<p>type</p>
<p>TForm1 = class(TForm) {<font face="宋体" lang="ZH-CN">窗体的类型说明开始}</font></p>
<p>private</p>
<p>{ Private declarations }</p>
<p>public</p>
<p>{ Public declarations }</p>
<p>end; {<font face="宋体" lang="ZH-CN">窗体的类型说明结束} </p>
</font><p>var</p>
<p>Form1: TForm1; {<font face="宋体" lang="ZH-CN">说明一个窗体变量} </p>
</font><p>implementation </p>
<p>{$R *.DFM} </p>
<p>end. </p>
<p><font face="宋体" lang="ZH-CN">
新的窗体类型是</font>TForm1<font
face="宋体" lang="ZH-CN">,它是从</font>TForm<font face="宋体" lang="ZH-CN">继承下来的一个对象。它具有对象的特征:含有域或方法。由于您未给窗体加入任何部件,所以它只有从</font>TForm<font
face="宋体" lang="ZH-CN">类中继承的域和方法,在窗体对象的类型说明中,您是看不到任何域、方法的说明的。</font>Form1<font
face="宋体" lang="ZH-CN">称为</font>TForm1<font face="宋体" lang="ZH-CN">类型的实例</font>(instance)<font
face="宋体" lang="ZH-CN">。您可以说明多个对象类型的实例,例如在多文档界面</font>(MDI)<font
face="宋体" lang="ZH-CN">中管理多个子窗口时就要进行这样的说明。每一个实例都有自己的说明,但所有的实例却共用相同的代码。</font></p>
<p><font face="宋体" lang="ZH-CN">
假设您向窗体中加入了一个按钮部件,并对这个按钮建立了一个</font>OnClick<font
face="宋体" lang="ZH-CN">事件处理过程。再查看</font>Unit1<font face="宋体"
lang="ZH-CN">的源程序,会发现</font>TForm1<font face="宋体" lang="ZH-CN">的类型说明部分如下:</p>
</font><p>type</p>
<p>TForm1 = class(TForm)</p>
<p>Button1: TButton;</p>
<p>procedure Button1Click(Sender: TObject);</p>
<p>private</p>
<p>{ Private declarations }</p>
<p>public</p>
<p>{ Public declarations }</p>
<p>end; </p>
<p><font face="宋体" lang="ZH-CN"> 现在</font>TForm1<font
face="宋体" lang="ZH-CN">对象有了一个名为</font>Button1<font face="宋体"
lang="ZH-CN">的域:它是您在窗体中加入的按钮。</font>TButton<font
face="宋体" lang="ZH-CN">是一个对象类型,</font>Button1<font face="宋体"
lang="ZH-CN">是</font>Tbutton<font face="宋体" lang="ZH-CN">的一个实例。它被</font>TForm1<font
face="宋体" lang="ZH-CN">对象所包含,作为它的数据域。每当您在窗体中加入一个部件时,部件的名称就会作为</font>TFom1<font
face="宋体" lang="ZH-CN">的域加入到类型说明中来。在</font>Delphi<font
face="宋体" lang="ZH-CN">中,您所编写的事件处理过程都是窗体对象的方法。每当您建立一个事件处理过程,就会在窗体的对象类型中说明一个方法。</font></p>
<p><font face="宋体" lang="ZH-CN"> 当您使用</font>Object
Inspector<font face="宋体" lang="ZH-CN">来改变对象</font>(<font face="宋体"
lang="ZH-CN">部件</font>)<font face="宋体" lang="ZH-CN">的名称时,这个名称的改变会反映到程序中。例如,在</font>Object
Inspector<font face="宋体" lang="ZH-CN">中将</font>Form1<font face="宋体"
lang="ZH-CN">的</font>Name<font face="宋体" lang="ZH-CN">属性命名为</font>ColorBox<font
face="宋体" lang="ZH-CN">,您会发现在类型说明部分,会将前文的</font>TForm1<font
face="宋体" lang="ZH-CN">改为: </p>
</font><p>TColorBox=class(TForm); </p>
<p><font face="宋体" lang="ZH-CN">
并且在变量说明部分,会说明</font>ColorBox<font
face="宋体" lang="ZH-CN">为</font>TColorBox<font face="宋体" lang="ZH-CN">类型的变量,由</font>Delphi<font
face="宋体" lang="ZH-CN">自动产生的事件处理过程名称会自动改为</font>TColorBox.Button1Click<font
face="宋体" lang="ZH-CN">;但您自行编写的实现部分的代码却不会被自动修改。因此,如果您在改变</font>Name<font
face="宋体" lang="ZH-CN">属性前编写了程序,则您必须将事件处理过程中的对象名称进行改变。所以,原先的</font>Form1.Color<font
face="宋体" lang="ZH-CN">要改为</font>ColorBox.Color<font face="宋体" lang="ZH-CN">。 </p>
</font><p>2.2.2 <font face="宋体" lang="ZH-CN">从一个对象中继承数据和方法 </p>
</font><p><font face="宋体" lang="ZH-CN">
前面的</font>TForm1<font face="宋体"
lang="ZH-CN">类型是很简单的,因为它只含有域</font>Button1<font
face="宋体" lang="ZH-CN">和方法</font>Button1Click<font face="宋体" lang="ZH-CN">。但是在这个窗体上,您可以改变窗体的大小、加入或删除窗体的最大最小化按钮,或设置这个窗体为</font>MDI<font
face="宋体" lang="ZH-CN">界面。对于一个只包含一个域和方法的对象来讲,您并没有看到显式的支持程序。在窗体上单击鼠标或用</font>Object
Inspector<font face="宋体" lang="ZH-CN">的上端的</font>Object Selector<font
face="宋体" lang="ZH-CN">选中</font>Form1<font face="宋体" lang="ZH-CN">对象,按动</font>F1<font
face="宋体" lang="ZH-CN">查阅它的在线帮助,您会在</font>Properties<font
face="宋体" lang="ZH-CN">和</font>Method<font face="宋体" lang="ZH-CN">中找到它的继承到的全部属性和方法。这些是在</font>TForm<font
face="宋体" lang="ZH-CN">类型中说明的,</font>TForm1<font face="宋体"
lang="ZH-CN">是</font>TForm<font face="宋体" lang="ZH-CN">的子类,直接继承了它所有的域、方法、属性和事件。例如窗体的颜色属性</font>Color<font
face="宋体" lang="ZH-CN">就是在</font>TForm<font face="宋体" lang="ZH-CN">中说明的。当您在工程中加入一个新窗体时,就等于加入了一个基本模型。通过不断地在窗体中加入部件,您就自行定义了一个新的窗体。要自定义任何对象,您都将从已经存在的对象中继承域和方法,建立一个该种对象的子类。例如对象</font>TForm1<font
face="宋体" lang="ZH-CN">就被说明为对象</font>TForm<font face="宋体"
lang="ZH-CN">的子类,拥有一个窗体部件的基本属性或方法。只有当您在窗体中加入了部件或编写了事件处理过程时,</font>Form1<font
face="宋体" lang="ZH-CN">才成为您自己的类型。</font></p>
<p><font face="宋体" lang="ZH-CN">
一个比较特殊的对象是从一个范围较广或较一般的对象中继承下来的,它是这个特别对象的祖先,这个对象则称为祖先的后代。一个对象只能有一个直接的祖先,但是它可以有许多后代。</font>TForm<font
face="宋体" lang="ZH-CN">是</font>TForm1<font face="宋体" lang="ZH-CN">类型的祖先,所有的窗体对象都是</font>TForm<font
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -