实例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对它进行删除。
单个类的程序在编写之后,慢慢你就会导出类,就会用虚函数等,一步一步学着来,面向对象的编程方法就会被你掌握。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~