第六章对象模型与事件模型
了解面向对象的
程序设计的概念掌握类和对象的概念、类的特点掌握对象的属性、方法和事件概念
6.1面向对象程序设计概述1.基本概念:
面向对象的程序设计是通过对类、子类和对象等的设计来体现的。。类:类是面向对象程序设计的核心,将具有相同的结构、操作,并遵循相同规则的对象聚合在一起,这组对象称为类。类是一组具有相同行为的对象的抽象对象仅仅是类的一个实例。(定义了对象特征以
及对象外观和行为的模版)
类的特征:封装性:隐藏了类中对象的内部数据或操作细节,只看到外表信息。继承性:任何类都可以从其它已有的类中派生,新类保持了父类中的行为和属性,但增加了新的功能。体现了面向对象设计方法的共享机制。多态性:相同的操作可作用于多种类型的对象上,并获得不同的结果。抽象性:提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理。
基类:
系统本身提供的类称为基类。基类包括基类容器类和控件类。容器类是其他对象的集合,如表格、选项按钮组;控件类是单一的对象,不包含其他对象,如命令按钮、文本框。子类:以其他类定义为起点,对某一对象所建子类立的新类。新类将继承任何对父类所做的修改。子类可以在继承完以后在加入新的特征和功能.P35类库:存储类的文件,每一个以可视方式设计类库的类都存储在一个类库中。类库文件的扩展名为.VCX。
对象:是类的一个实例,包括了数据和过程。对象具有所在类所定义的全部属性和方法。VFP有两种对象:容器对象和控件对象。VFP属性:控件、字段或数据库对象的特性。属性事件:由对象识别的一个动作。事件方法:与对象相联系的由程序执行的一个处方法理过程,即处理事件的一组代码。用户不可以为对象创建新的事件,但可以创建新的方法程序。
6.2VisualFoxPro基类分为容器类和控件类.容器类:是可以包含其他类的基类.有:表单集、表单、表格、表格列、页框、页面、命令按扭组、选项按扭组、工具栏、容器等。控件类:可以包含在容器类中但不可以包含其他类的基类。
容器类容器类可以包含其他对象,并且允许访问这些对象。每种容器类所能包含的对象如下。
容器命令按钮组命令按钮容器控件表单集表单任意控件任意控件表单、工具栏页框、任意控件、容器或自定义对象能包含的对象
表格列
表格
标头对象以及除表单、表单集、工具栏、计时器和其他列对象以外的任意对象表格列
选项按钮组选项按钮页框页面工具栏页面任意控件、容器和自定义对象任意控件、页框和容器
基类事件的最小集合
事件InitDestroyError说明当对象创建时激活。当对象从内存中释放时激活。当类中的事件或方法过程中发生错误时激活。
基类属性的最小集合
属性ClassBaseClass说明该类属于何种类型。该类由何种基类派生而来,例如Form、Commandbutton等
ClassLib
rary该类从属于哪种类库。ParentClass对象所基于的类。若该类直接由VisualFoxPro基类派生而来,则ParentClass属性值与BaseClass属性值相同。
6.3引用对象
引用对象时,对象与对象之间、对象与属性之间需用分隔符.进行分隔。绝对引用从容器的最高层引用对象,给出对象的绝对地址。如:form1.text1.value相对引用在容器层次中相对于某个容器层次的引用。如:thisform.text1.value系统变量_SCREEN表示屏幕对象,与ActiveForm等组合可以在不知道表单名的情况下处理活动表单。
属性或关键字ActiveControlActiveFormActivePageParentTHISTHISFORM
引用当前活动表单中具有焦点的控件当前活动表单当前活动表单中的活动页该对象的直接容器该对象包含该对象的表单
THISFORMSET包含该对象的表单集
3.设置对象的属性可以在属性窗口中进行可视化设置可以在程序中用如下格式进行设置:引用对象.属性=值如:thisform.text1.value=“只要功夫深”想一次设置多个属性时,可以采用WITH……ENDWITH语句。如:WITHform1.text1.Value="书山有路勤为径".ForeColor=rgb(255,0,0).FontSize=18.FontName="隶书".FontBold=.T.ENDWITH
4.调用对象的方法程序若对象已经创建,可以在应用程序的任何地方调用该对象的方法程序。调用方法程序的格式为:引用对象.方法程序如:Form1.Refresh5.对象对事件的响应采用面向对象的程序设计方法设计的应用程序(比如VFP),其程序的执行是有事件驱动的。程序启动后即进入等待状态,程序中的代码不会主动被执行,一旦某个事件发生,则执行对应的过程代码(没有代码不执行),执行完毕VFP再次进入等待状态。