1、第八章 面向对象程序设计,第一节 面向对象程序设计基本概念 第二节 表单设计 第三节 表单控件设计 第四节 类 第五节 例题精解,面向对象程序设计基本概念,一、面向对象程序设计的概念VFP不仅提供面向对象的程序设计方式,同时还保留面向过程的程序设计方式。传统的面向过程的程序设计就是用程序设计语言的语句实现算法。在程序编写过程中,要花费大量的时间用于创建应用程序的界面。面向对象的程序设计方式是以对象为中心,将数据和程序捆绑在一起,封装在对象中,,下一页,返回,二、对象(Object)客观世界中独立存在的、能够区分的实体都可以看作对象。对象可以是具体的事物,也可以指抽象的概念。1、控件对象控件对象
2、是不能容纳其他对象的对象。例如,命令按钮、文本框、标签等。2、容器对象容器对象是可以容纳其他对象的对象。例如,表单、命令按钮组、选项按钮组等。,面向对象程序设计基本概念,上一页,下一页,返回,三、属性(Property)属性用于描述对象的特征和状态。例如,命令按钮的位置、大小、形状、颜色等都是命令按钮的属性。对象创建之后,VFP就赋予该对象各属性的默认值,用户可以修改对象属性的默认值,还可以添加对象的属性。四、方法(Method)方法是对象能够执行的操作,是内置的通用过程。方法所包含的程序对用户来说是不可见的。用户只需了解方法的名称和功能,遵循规定的格式调用方法,就能够完成相应的操作。例如,要
3、清除表单上的对象,可调用表单的Cls方法来实现,代码为ThisForm.Cls。,面向对象程序设计基本概念,上一页,下一页,返回,每个对象拥有各自的方法集合,且允许扩展对象的方法集合。对已有的方法,用户可以添加新的代码以扩充方法的功能,但VFP不允许修改和删除已有方法。五、事件(Event)事件是能被对象识别和响应的、预先定义的动作。每个对象都拥有一组固定的、由VFP预定义的事件集合,用户不能扩充对象的事件集合。事件的代码通常需要用户来编写。事件可由用户引发或系统引发。例如,单击命令按钮,则引发了命令按钮的Click事件;而计时器的Timer事件则由系统引发。,面向对象程序设计基本概念,上一页
4、,返回,表单设计,一、 “表单设计器”“表单设计器”用于创建新表单或修改已有的表单。“表单设计器”窗口打开后,一般会同时激活“表单设计器”工具栏、“表单控件”工具栏和“属性”窗口。二、数据环境数据环境指表单使用的数据源,数据源可以是表、视图和表间关系。数据环境也是对象,其对象名为DataEnviroment,表在数据环境中也是对象,其名称为Cursor1、,下一页,返回,Cursor2,表间关系Relation1也是对象,数据环境中的对象也具有属性。数据环境一旦建立,当打开或运行表单时,数据环境所定义的表或视图即自动打开;当关闭表单时,数据环境中的表或视图也随之关闭。三、设置对象的属性对象创建
5、后,各属性具有默认值。属性的默认值可以在属性窗口中修改,也可以通过编写事件代码重新设置。必要时还可以添加对象自定义属性。,表单设计,上一页,下一页,返回,四、对象属性与方法的引用1、对象的层次关系VFP的对象分为容器对象和控件对象。容器对象中可包含容器对象和控件对象,这样就形成了容器对象嵌套层次关系,如果要引用层次结构中的某个对象,那么必须指明该对象在层次结构中的位置,即对象的地址。2、引用关键字3、绝对引用绝对引用是从包含该对象的最外层容器对象开始,逐层描述到所引用的对象。,表单设计,上一页,下一页,返回,格式:表单集名.表单名.容器对象名.对象名.对象的属性或方法4、相对引用相对引用是从当
6、前容器对象的位置开始,向下逐层描述到所引用的对象。格式:引用关键字.容器对象名.对象名.对象的属性或方法5、编程调用对象方法程序VFP的方法程序有的带有参数,有的不带参数;有的有返回值,有的没有。调用对象方法程序的格式如下。,表单设计,上一页,下一页,返回,格式:对象名.方法程序名(参数1, 参数2, )五、使用“表单向导”创建表单 1、打开“向导选取”对话框的三种方法1)在“项目管理器”中打开“表单向导”“项目管理器”“表单”选项“新建”按钮“新建表单”对话框“表单向导”按钮“向导选取”对话框,表单设计,上一页,下一页,返回,2)使用“工具”菜单打开“表单向导”“工具”菜单“向导”命令“表单
7、”命令“向导选取”对话框3)使用“新建”按钮打开“表单向导”“新建”按钮“新建”对话框“表单”选项“向导”按钮“向导选取”对话框2、表单向导分类1)单表“表单向导”2)“一对多表单向导”,表单设计,上一页,下一页,返回,3、打开“表单向导”1)在“向导选取”对话框中,选择“表单向导”或“一对多表单向导”;2)单击“确定”按钮。,表单设计,上一页,返回,表单控件设计,一、表单控件分类 VFP表单控件工具栏上有21个基类控件,按功能可分为以下5类: (1)输出类:标签、图像、线条、形状。 (2)输入类:文本框、编辑框、微调控件、列表框、组合框。 (3)控制类:命令按钮、命令按钮组、复选框、选项按钮
8、组、计时器。 (4)容器类:表格、页框、Contain容器、表单集。 (5)连接类:ActiveX控件、ActiveX绑定控件、超级链接控件。,下一页,返回,二、表单控件的缺省名称,上一页,下一页,返回,三、RowSourceType与RowSource属性,上一页,下一页,返回,三、RowSourceType与RowSource属性,上一页,返回,类,一、类的基本概念 二、自定义类的创建和使用,下一页,返回,例题精解,【例81】下面关于属性、方法和事件的叙述中,错误的是( )。A)对象的事件集合是固定的,不可扩充的 B)用户可以自定义对象的属性 C)对象的属性可以在属性窗口中修改,也可以通过
9、代码重新设置。 D)用户可以对对象的方法代码进行修改、删除和扩充解:在VFP中,事件是由系统预定义的,事件集合(名称和数目)是固定的,不能扩充。属性用于描述对象的特征和状态,可以修改和添加。对象的方法代码对于用户是不可见的,用户不能对已有的代码进行修改和删除,但可以添加代码,以扩展该方法的功能。答:81 D,下一页,返回,【例82】下面关于事件的叙述中,错误的是( )。A)事件是VFP预先定义的动作 B)事件可由用户、系统或代码触发 C)用户的一个动作可能触发一个或多个事件 D)事件可以由系统预先定义,也可以由用户自定义解:事件是能被对象识别和响应的、预先定义的动作。每个对象都拥有一组固定的、
10、由VFP预定义的事件集合,事件集合不能扩充。 事件可由用户动作触发,例如单击对象时触发;事件也可由系统触发,例如计时器对象的Timer事件就是由系统触发;事件也可由代码触发,例如使用Thisform.Refresh代码刷新表单时,触发了表单的Refresh(刷新)事件。 用户的一个动作可能触发对象的一个或多个事件,例如单击表单,则触发表单的Click、MouseDown、MouseUp事件。答:82 D,上一页,下一页,返回,【例83】下面关于数据环境和数据环境中的表的叙述中,正确的是( )。A)数据环境是对象,数据环境中的表不是对象 B)数据环境不是对象,数据环境中的关联是对象 C)数据环境
11、与其中的表、视图、关联都是对象 D)数据环境和关联都不是对象解:数据环境指表单使用的数据源。表单的数据源可以是表、视图和表间联系。 数据环境也是对象,其对象名为DataEnviroment,表在数据环境中也是对象,其名称为Cursor1、Cursor2,数据环境与其中的表、视图、关联(Relation1)都是对象。答:83 C,上一页,下一页,返回,【例84】下面关于表单数据环境的叙述中,正确的是( )。A)表单的数据环境可以是表文件 B)表单的数据环境可以是视图 C)表单的数据环境可以是查询文件 D)表单的数据环境可以是数据库文件解:数据环境可以是表和视图,但视图存在于数据库中,不能单独存在
12、,所以,在表单的数据环境中没有视图。查询文件和数据库文件不能作为表单的数据环境。答:84 A,上一页,下一页,返回,【例85】“表单设计器”工具栏的功能是( )。A)用于调整表单上对象的位置 B)用于创建表单控件 C)显示或隐藏表单设计器有关的工具栏、数据环境设计器、属性窗口、代码窗口等 D)用于设置对象的颜色解:“表单设计器”工具栏用于显示或隐藏表单设计器有关的工具栏、数据环境设计器、属性窗口、代码窗口等。“表单设计器”工具栏的子栏:“表单控件”工具栏用于创建对象,“布局”工具栏用于调整表单上对象的位置,“调色板”工具栏用于设置对象的颜色。答:85 C,上一页,下一页,返回,【例86】假定表
13、单中只包含有一个命令按钮,那么在关闭表单时,下面有关事件引发次序的叙述中,正确的是( )。A)先表单的Destroy事件,然后表单的Unload事件,最后命令按钮的Unload事件 B)先命令按钮的Destroy事件,然后表单的Destroy事件,最后表单的Unload事件 C)先表单的Destroy事件,然后命令按钮的Destroy事件,最后表单的Unload事件 D)先表单的Unload事件,然后命令按钮的Destroy事件,最后表单的Destroy事件解:关闭表单时,先释放表单,再释放表单上的控件,再触发表单上的Unload事件,最后释放数据环境及其中的表与关系。答:86 C,上一页,下
14、一页,返回,【例87】以下关于对象焦点的叙述中,正确的是( )。A)在表单上,某个时刻只能有一个对象获得焦点 B)在表单上,某个时刻可以有多个对象获得焦点 C)表单上的对象都可以获得焦点 D)要使表单上的对象获得焦点,只有通过选中它来实现解:表单可以包含多个对象,但某个时刻只能有一个对象获得焦点,而且并非所有的对象都可以获得焦点,例如,Enable属性为.F.的对象就不能获得焦点。对象获得焦点可以通过选中它或者调用Setfocus方法来实现。答:87 A,上一页,下一页,返回,【例88】为了刷新表单,可调用表单的( )方法。A)Refresh B)Release C)Cls D)Clear解:
15、Refresh方法是刷新表单,Release方法是释放表单,Cls方法是清除表单上的对象,Clear命令是清除VFP主窗口的内容。答:88 A,上一页,下一页,返回,【例89】以下关于表单上对象定位方法的叙述中,正确的是( )。A)可以用鼠标对表单上的对象任意定位 B)可以用键盘上的箭头键对表单上的对象任意定位 C)可以用“布局”工具栏对表单上的对象任意定位 D)可以设置对象的Width和Height属性对表单上的对象任意定位解:使用鼠标、键盘上的箭头键或者设置对象的Left和Top属性都可以对表单上的对象任意定位。直接使用鼠标对表单上的对象定位时,对象移动的幅度为半个或一个网格;加按Ctrl键,可实现鼠标对表单上的对象的任意定位。使用键盘上的箭头键可以对表单上选定的对象任意定位。Width和Height属性用于设置对象的大小而非位置。答:89 B,上一页,返回,