类和对象
2006-02-04 13:40:33 来源:WEB开发网Delphi在很大程度上采用了面向对象的开发思路,所以,在采用delphi作为开发工具时,class和对象就显得 尤为重要!
对class的明确定义是:对具有相同特征的一类事物所做的归纳。作为一个非常抽象的概念,我们可以对类 这个字举例来理解:在校的学生,虽然每个人都会有不同的情况,还有小学生、中学生、大学生之分,男、 女生之分,但是他们有一个共同点,都处于求学阶段。我们就可以把他们归纳为“学生类”,而每一个学生 就是学生类的对象(有一点需要说明,在很多书中,有实体或者实例这种说法,这里实体或者实例也就是提 到的对象)。
而类的属性指的是类的静态特征,作为上面提到的“学生类”,我们说他具有性别、年龄、学号、班级、学 校名称、各科考试成绩等等特征,而这些,也就是学生类属性。
类的方法即类的动态特征,即属于这一类的事物在接收到某种消息或命令时做出的反应,比如学生上课就是 学生类的一个方法,而这个方法的触发就是上课铃响这一个消息的产生。
类的庞大作用还体现在它的无限继承中。作为上面提到的学生类,我们以教育程度来分,不难看出,还可以 分出大学生类,中学生类,小学生类,而他们比学生类这个范围更具体,学生类所具有的属性他们每一个都 具有。也就是说,他们都是从学生类继承而来,在学生类的基础上更准确的进行了划分。在这儿,学生类作 为父类,大学生类、中学生类、小学生类等作为子类出现。当然,在学生类以上,也有更抽象的类。比如, 人类是所以具有人类特征的归纳,学生类比人类更具体,在这个地方,人类作为父类,学生类作为子类。从 这儿可以看出,我们可以根据我们的需要,定义一个适合我们使用的类而不需要每一个属性、方法都去写出 来,只要简单的继承父类就可以了。(通常所说的派生即是父类对子类的说法:父类派生子类).
VCL类库
delphi面向对象的基础就是类,要真正了解和提高delphi的知识水平,我们有很大的必要弄清楚delphi为我们 提供的vcl(类库)。
Delphi的层次结构如下:
从图中我们可以看出,Tobject是delphi系统中的所有类的祖先类,其他每一个类都是他的字类。 根据上面的 层次关系,我们可以看到delphi中每一个类的继承和派生,对我们使用自定义类是非常必要的。下面主要介 绍部分类:
Tpersistent类:
它由Tobject祖先类直接派生。需要指出的是,Tpersistent类成员都能够进行流的操作(对数据以数据流的形 式传递)
常用方法:
Assign() 一个组件把另一个组件相关的值赋给自己;
AssignTo() 与Assign()相反,在Tpersistent中申明为私有,派生类必须实现他的定义;
Tcomponent类
由Tpersistent类直接派生,它的对象的特性:在设计期间其属性可以由Object inspector来控制,能够拥有其 他组件。
Tcomponent类可派生可视组件和非可视组件,如Tbutton和Tmenu
Tcomponent类常用属性:
Owner:设置或读取组件拥有者;
CompenentCount:读取或设置组件的拥有数目;
ComponentIndex:读取组件在其拥有者列表中的位置(从0开始);
Components:他为一个数组,包含其拥有的组件列表(从0开始); Name:设置和读取组件名称;
Tcomponent类常用方法
Create:构造对象;
Destroy:释放对象;
Getparentcomponent:取得父组件,没有则返回nil;
Hasparent:判断组件是否有父组件;
InsertComponent:增加一个组件,由调用该方法的组件所拥有;
RemoveComponent:删除一个自己拥有的组件;
Findcomponent(str:string):根据给出的组件名查找组件;
Tcontrol类
应用:一般用于可视组件
它的属性包括了本身的位置信息,尺寸信息,外观属性等,如:
Top,Left,Width,Height,Visible,enable,text,caption等;
它引入了标准事件如:
Onclick,OnDblclick,OnmouseDown,OnmouseMove等
需要说明的是,在delphi 中,不能创建它的派生类,只能通过它已经存在的派生类TwinControl和 TgraphicControl派生;
TwinControl类
TwinControl类:标准窗口控件由它派生;
它的对象有窗口句柄(指向对象的指针),能够接受输入焦点,能够成为其他控件的父;
在应用程序开发中,一般使用TwinControl的派生类;
TwinControl类的常用属性:
Brush:用于绘制控件外形;
Controls: 包含控件的所有子控件(值为一个数组);
ControlCount:读取子控件的数目;
Handle:读取TwinControl类对象的句柄;
Showing:设置或读取对象是否可见;
Tabstop:设置用户是否能够用TAB键移动焦点;
Taborder:设置对象在其父列表中的序号(从0开始);
TgraphicControl类
本类控件没有窗口句柄,不能接收输入焦点,同样也不能是其他控件的父;
TcostomControl类:
它的派生类常作为自定义控件的基类
更多精彩
赞助商链接