编程序的方法,有结构化方法与面向对象的方法,结构化方法说白了就是函数堆积法,不同的函数完成不同的功能,最后将函数堆积起来,构成一个完整的程序。面向对象的方法是一种打包法,现在什么东西都讲究包装,编程序也不例外,面向对象的方法就是将完成某一种功能的变量、函数进行包装,变成一个统一的整体,当调用这个整体时,就完成该整体所赋予的功能。
哪一种方法更好,各有千秋,不能说面向对象的方法就比结构化的方法优越,比如我们在设计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对它进行删除。
单个类的程序在编写之后,慢慢你就会导出类,就会用虚函数等,一步一步学着来,面向对象的编程方法就会被你掌握。