随笔 - 33  文章 - 0  评论 - 0  阅读 - 6426

实例15 class,想说爱你不容易

编程序的方法,有结构化方法与面向对象的方法,结构化方法说白了就是函数堆积法,不同的函数完成不同的功能,最后将函数堆积起来,构成一个完整的程序。面向对象的方法是一种打包法,现在什么东西都讲究包装,编程序也不例外,面向对象的方法就是将完成某一种功能的变量、函数进行包装,变成一个统一的整体,当调用这个整体时,就完成该整体所赋予的功能。

哪一种方法更好,各有千秋,不能说面向对象的方法就比结构化的方法优越,比如我们在设计dll动态链接库时,要将一些通用的函数放在dll中,便于其他应用系统调用,在这种情况下,用面向对象的设计方法就不太合适。

为什么我们刚开始编程时,害怕提到“面向对象”,感觉这东西太深奥了,不可理解。什么对象、继承类、导出类、虚函数、重载、友元等等,这些存在于各种各样的参考书中,反反复复却没有把问题将清楚,使初学者一看就头大,太多的概念,太复杂的内容,使我们不敢轻易去接近面向对象的方法。

其实面向对象方法并不可怕,你知道变量是什么吗?你会编写函数吗?如果你会,你就会用面向对象的方法写程序,只需要用class将它们说明一下就可以了。比如一个简单的类定义如下:

type

  TMyClass=class(祖先类)

  private

    aa,bb:Integer;  //私有变量

    function GetItem(Index:Integer):TListColumn;  //私有函数

    procedure SetItem(Index:Integer;Value:TListColumn);  //私有过程

  public

    constructor Create(Owner:TComponent);override;  //创建过程

    destructor Destroy;override;  //毁坏过程

    P_aa,P_bb:Integer;  //公有变量

    function P_GetItem(Index:Integer):TListColumn;  //公有函数

    //公有过程

    procedure P_SetItem(Index:Integer;Value:TListColumn);

    ....

end;

在写函数或过程时,与普通函数或过程的写法唯一不同的是,在函数名前加上.号,前面再加上class名称,比如:

procedure MyClass.test();

begin

  bb:=aa;

end;

所谓私有变量或函数,定义在private说明符下,只供本class内部使用。公有变量或函数则定义在public说明符下,既可以供本class内部使用,也可通过外部调用。当然,外部调用也要带上class名称,比如:

mc:=Tmc.Create;

mc.P_test1();  //可以调用,P_Test1函数为公有函数

mc.aa:=100;  //不可以这样赋值,aa为私有变量

mc.Free;

在这段代码中,我们使用了操作符Create与Free,这两个操作符在class运用时是成对出现的,Create对class进行初始化,Free操作符删除已经存在的class。如果这个class没有初始化成功,就不能用Free对它进行删除。

单个类的程序在编写之后,慢慢你就会导出类,就会用虚函数等,一步一步学着来,面向对象的编程方法就会被你掌握。

posted on   Delphi搬运工  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示