Delphi面向对象的编程方法(三)

2016-01-29 14:01 0 1 收藏

Delphi面向对象的编程方法(三),Delphi面向对象的编程方法(三)

【 tulaoshi.com - Delphi 】

 

2.1.8.4 过程和函数的语句部分 

        过程或函数的语句部分由begin开始,end结束。函数需要一个返回值。可以将返回值赋给函数名称,也可以将返回值赋给Result变量。下面的例程将返回值赋给函数名称: 

function CalculateInterest(Principal,InterestRate: Double):Double;

begin

CalculateInterest := Principal * InterestRate;

end; 

        将返回值赋给Result变量也是可以的,则上面的程序改为: 

Result := Principal*InterestRate;

下面是这个函数的调用方法:

InterestEarned :=CalculateInterest(2000,0.012);

         在Implementation后面的过程和函数,可以且只能被此库单元的事件处理过程使用。要让过程和函数可以被其他的程序库单元使用,则需要将过程或函数的标题部分放在库单元中的interface部分,而把含标题的整个过程或函数放在库单元的inplementation部分,并在要访问这个过程或函数的库单元的uses子句中加入说明这个过程或函数的库单元名称。 

2.1.8.5 函数的递归调用 

       在Object Pascal中,过程或函数必须先说明再调用。上文的NoValue函数必须在使用它的事件处理过程之前说明和执行,否则程序会报告一个未知标识符的错误。

         以上规则在递归调用时是例外情况。所谓递归调用,是指函数A调用函数B,而函数B又调用函数A的情况。在递归调用中,函数要进行前置,即在函数或过程的标题部分最后加上保留字forword。下文的例程是一个递归调用的典型例子: 

implementation

var

alpha:Integer;

procedure Test2(var A:Integer):forword;

{Test2被说明为前置过程}

procedure Test1(var A:Integer);

begin

A :=A-1;

if A0 then

test2(A); { 经前置说明,调用未执行的过程Test2}

writeln(A);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/delphi/)

end;

procedure Test2(var A:Integer);{ 经前置说明的Test2的执行部分}

begin

A :=A div 2;

if A0 rhen

test1(A); {在Test2中调用已执行的过程Test1}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/delphi/)

end; 

procedure TForm1.Button1Click(Sender:TObject);

begin

Alpha := 15; { 给Alpha赋初值}

Test1(Alpha); { 第一次调用Test1, 递归开始}

end; 

           按钮的OnClick事件处理过程给Alpha赋初值,并实现先减1再除2的循环递归调用,直到Alpha小于0为止。 

2.1.8.6 过程和函数的参数 

        当您的程序代码在调用一个过程或函数时,通常用参数传递数据到被调用的过程或函数中。最常用的参数有数值参数、变量参数和常量参数三种。

         由被调用过程或函数定义的参数为形参,而由调用过程或函数指明的参数叫实参。在NoValue函数中,说明函数体中的AnEditBox是形参,而调用时在if NoValue(Edit1) …中,Edit1是实参。

         数值参数在运行过程中只改变其形参的值,不改变其实参的值,即参数的值不能传递到过程的外面。试看下面的例程: 

procedure Calculate(CalNo:Integer);

begin

CalNo := CalNo*10;

end; 

          用以下例程调用Calculate函数:

Number := StrToInt(Edit1.Text);

Calculate(Number);

Edit2.Text

来源:https://www.tulaoshi.com/n/20160129/1492288.html

延伸阅读
Delphi 的VCL技术使很多程序员能够非常快速的入门:程序员门只要简单的拖动再加上少量的几个Pascal语句,呵呵,一个可以运行得非常良好的Delphi程序!恭喜你,你已经可以进行程序开发这个伟大的事业了。不过,当你学了一段时间后也许就不这么想了哦。因为Delphi是支持面向对象的语言,其实所有的VCL Component都是基于面向对象的语言设计的,...
标签: PHP
  limodou 重载(与覆盖不同)在PHP中不支持。在OOP中,你可以重载一个方法来实现两个或重多的方法具有相同 的名字,但是有不同数量或类型的参数(这要看语言)。PHP 是一种松散类型的语言,所以通过类型重载不 起作用,然而通过参数的个数不同来重载也不起作用。 有时在OOP中重载构造函数非常好,这样你可以通过不同的方法创...
标签: PHP
     面向对象编程(OOP)是我们编程的一项基本技能,PHP4对OOP提供了良好的支持。如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和规划好Web开发构架都是非常有意义的。下面我们就通过实例来说明使用PHP的OOP进行编程的实际意义和应用方法。  我们通常在做一个有数据库后台的网站的时候,都会考虑...
C++编程杂谈之三:面向对象(续) 作者:xulion 下载例子源代码     上一篇我们涉及了面向对象的一个基本概念--封装,封装是一个相对比较简单的概念,也很容易接受,但是很多的场合下面,仅仅是封装并不能很好的解决很多问题,考虑下面的例子: 假设...
标签: Web开发
要是XHTML与CSS能面向对象。。太阳应该从北边升起了。但是,凡事都应该带着OO的思想来看问题,也勉强可以凑数拉。其实,早在零几年就有人提出了OO-style,不过已找不到。 那要怎样OO呢?现在大家都知道CSS是可以介样写滴:  .G_G { /* xxxxxx */ }  我们可以把它大约看一个原型,或者说成类,-__-b 好像本来就是类的样子,然后要...

经验教程

156

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部