visual foxpro6.0及其程序设计 郭盈发 第10章

上传人:E**** 文档编号:89374701 上传时间:2019-05-24 格式:PPT 页数:138 大小:496KB
返回 下载 相关 举报
visual  foxpro6.0及其程序设计 郭盈发 第10章_第1页
第1页 / 共138页
visual  foxpro6.0及其程序设计 郭盈发 第10章_第2页
第2页 / 共138页
visual  foxpro6.0及其程序设计 郭盈发 第10章_第3页
第3页 / 共138页
visual  foxpro6.0及其程序设计 郭盈发 第10章_第4页
第4页 / 共138页
visual  foxpro6.0及其程序设计 郭盈发 第10章_第5页
第5页 / 共138页
点击查看更多>>
资源描述

《visual foxpro6.0及其程序设计 郭盈发 第10章》由会员分享,可在线阅读,更多相关《visual foxpro6.0及其程序设计 郭盈发 第10章(138页珍藏版)》请在金锄头文库上搜索。

1、10.1 面向过程和面向对象的程序设计 10.2 面向对象基本概念 10.3 VFP中的类 10.4 VFP的属性、事件和方法 10.5 对象的操作 10.6 创建类和对象 10.7 面向对象程序设计举例,第十章 面向对象程序设计基础,返回主目录,第十章 面向对象程序设计基础,10.1 面向过程和面向对象的程序设计 10.1.1 面向过程的程序设计 在传统的应用程序中,应用程序自身控制了执行哪一部分代码和按何种顺序执行代码,一般从第一行代码执行程序并按应用程序中预定的路径执行,必要时调用过程。 例1 假设有一个旅馆服务表文件GFU.DBF,利用传统的程序设计方法,编制一个主控程序,使它能提供以

2、下功能:退出、查询、登记、消账、结算。,传统的程序设计如下: SET TAK OFF CEAR A USE GFG DO WHIE .T. GO TOP CEAR ?SPACE (10)+ “* * * * * 旅馆服务主菜单 * * * * * * * * * * * * * * *“,?SPACE (10)+ “* 0退出旅馆前台服务 *“ ?SPACE (10)+ “* 1查询 *“ ?SPACE (10)+ “* 2登记 *“ ?SPACE (10)+ “* 3消账 *“ ?SPACE (10)+ “* 4结算 *“ ?SPACE (10)+ “* * * * * * * * * *

3、* * * * * * * * * * * * * * * * * * * *” WAIT “ 请选择04号菜单:“ TO A1,DO CASE CASE A1=“0“ EXIT CASE A1=“1“ DO CX CASE A1=“2“ DO DJ CASE A1=“3“,DO XZ CASE A1=“4“ DO JS ENDCASE 这是传统的程序设计方法,退出、查询、登记、消账、结算等5个功能分别由EXIT命令和CX、DJ、XZ、JS等4个子程序实现,然后再被主控程序调用。程序执行中所需要的所有数据、主菜单出现的位置、装饰符号“*”等必须全部在程序中加以说明和控制。,用户在编制这种程序时

4、,必须考虑代码的全部流程,并通过算法控制程序的执行,并且用户在编写程序时,看不到程序运行的结果。如果用户编译运行后不满意,需要有所修改,必须找到相应的程序(或子程序)修改相应的代码,再编译运行修改编译运行,这种编程方法称为面向过程的程序设计方法,有时也称之为结构化程序设计方法。 在面向过程的程序设计中,整个系统以功能分类,它被划分成各类功能模块,各个功能模块如果需要,还必须划分为更为具体的小功能模块,直至该功能模块能以一个函数或一个过程来实现为止。它具有思路清晰、功能单一等特点,但不便维 护,不易修改。 现在,VFP等Windows应用软件,既提供了传统的面向过程的程序设计方法,也提供了以下的

5、程序设计方法。,10.1.2 面向对象的程序设计 用户可使用以下方法,实现上例中的功能:先设计一个表单,放置一个文本框和一个命令按钮组,文本框用来提示信息“旅馆服务主菜单”,命令按钮组中各个按钮分别执行退出、查询、登记、消账、结算等5种功能(如图101所示)。实现这5种功能的子程序分别写在各个命令按钮的“单击”事件中,即当程序运行时,用户通过“单击”某个按钮,实现其中的代码功运行后哪个按钮的功能不满意,只需修改该按钮的程序。,图101 “旅馆服务主菜单”表单,各个命令按钮有高度、宽度、背景色、按钮标题、按钮相对表单的位置、按钮标题颜色等属性,这些属性值就是描述命令按钮的一系列的数据,它们可以在

6、按钮设计时进行设置,并可马上看到设置的效果,不需要经过编译运行修改再编译再运行这个过程,所以是可视化的。属性值(数据)也可以在程序运行时进行设置,即和按钮的操作程序写在一起。所以对程序员来说一个命令按钮的属性值(数据)和操作程序是一个整体,程序员把它们看成是一个实体,可以一起被删除、复制等,在VFP中 称为一个对象,即对象是程序和数据的封装体,这种编程方法称为面向对象的程序设计方法。,在面向对象的程序设计中,程序代码不是按照预定的路径执行的,而是在响应不同的事件时执行不同的代码片段,即受“事件驱动”。事件可以由用户操作触发,也可以由来自操作系统或其它应用程序的消息触发,甚至由应用程序本身的消息

7、触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的路径都是不同的。 面向对象程序设计的两个基本特点是: (1) 它是可视化的编程方式。 (2) 程序运行没有一定的顺序,由事件驱动。,对象是程序和数据的结合体,是VFP的一个操作单位。对象和对象又可组成新的对象。所以,在进行面向对象的程序设计中,设计人员应该把精力放在“对象”的设计上,如何构造对象是程序设计的重点。而且对象以数据为中心,所有的操作是围绕对数据所作的处理而进行的。每个对象都是相对封闭、独立的,便于修改和维护。程序执行没有固定的执行路线,它的执行不局限于某个固定的流程,而取决用户当前的操作(事件),如果需要,每个

8、事件的发生,均有相应的设计处理程序去处理。 所以在面向对象的程序设计方法中,用户需要考虑的是如何创建对象,及对对象应实施哪些操作,每个操作应完成什么功能,以完成用户提出的所有要求。,10.2 面向对象基本概念,在面向对象的程序设计中,最重要的概念是对象和类,它们是关系密切但又完全不同的两个概念。 1对象 对象是数据和数据的操作代码的组合体。对象既具有静态的属性又可具有动态的行为。 在面向对象的程序设计中,对象是构成程序的基本单位,是程序的运行实体。对象可以是任何的具体事物。在VFP中,标签、表格、表单以及所有控件都可看成是应用程序中的对象。对象是应用程序中的一个处理单位。,2类 类是建立对象时

9、使用的模板,按照某个模板所建立的一个个具体的对象,就是类的实例。实例就是根据某个抽象的类所派生出来的一个具体的对象。例如,在VFP中系统定义了一个表单类,它有许多的属性(如长度、宽度、背景色、表单标题等),还定义了事件和操作方法,但它是一个抽象的框架,属性和方法都没有具体的值。而图101中的“旅馆服务表单”就是根据这个类创建的一个具体的表单,即类表单的一个具体的实例,它的属性,如长度、宽度、背景色、表单标题等都有确定的值。 类是对象的抽象,是定义对象的特征和描述对象的外观与行为的模板。把同一类型的对象的所有共性抽象出来即可形成一个类。类是对具有相同数据和相同操作的一组相似对象的定义,类在现实世

10、界中并不存在。,类可以由已经存在的类派生而来,类之间是一种层次结构,在此结构中,处于上层的类称为父类,处于下层的类称为派生类。 类具有继承性、封装性和多态性,下面分别进行介绍: (1) 继承性:类可以从现有的类派生出新的类。派生类具有父类的所有特性,包括父类的所有方法和数据(属性)。 (2) 封装性:指将方法和数据存放在同一个对象中,而且对数据的存取只能通过该对象的方法进行,其它对象不能直接访问该对象中的数据,对象间的相互作用只能通过信息进行。,10.3 VFP 中 的 类,VFP的对象所具有的属性是由派生该对象的类决定的,而且这些属性既可以在设计时指定,也可以在运行时指定。 当用户打开表单或

11、控件的属性窗口,并选择“其它”选项卡时,可能会看到涉及类定义的以下几个属性: (1) BaseCass(基类):VFP中内部定义的类,用户可使用它们创建自定义类,如表单和所有控件都是基类,用户可在此基础上创建新类,增添需要的功能。 (2) Cass(类):派生该对象的类名。 (3) ParentCass(父类):派生该对象的父类名。仅对自定义类有效,如果类是直接从VFP基类上派生的,则本项为空。,10.3.1 容器类 容器类可以包含其它对象,并允许访问这些对象。这些对象无论是在运行时还是在设计时都可以单独地操作。常用的容器类有:表单(Form)、表单集(FormSet)、列(Coumn)、命令

12、按钮组(CommandButton Group)、容器(Container)、表格(Grid)、选项按钮组(OptionButtonGroup)、页 (Page)、页框 (PageFrame)、工具栏 (TooBar),其中,表单集和页框是不可见类。,10.3.2 控件类 控件类中不能包含其它对象,只能加入到其它对象中。控件类的封装比容器类更为严密。当引用容器中的控件对象时必须经过容器,其格式是:容器对象.控件对象.属性。 例如,在Form1表单中设置标签abe1的Caption属性: Form1.abe1.Caption=“姓名“ VFP中常用的控件类有:复选框(CheckBox)、组合框(

13、ComboBox)、命令按钮(CommandButton)、编辑框(EditBox)、图像(Image)、标签(abe)、线条(ine)、列表框(istBox)、选项按钮(OptionButton)、形状(Shape)、微调(Spinner)、文本框(TextBox)、计数器,(Timer)、控件(Contro)、列标题(Header)、OE绑定型控件(OE Bound Contro)、OE容器控件(OE Container Contro)、自定义类(Custom),其中计数器和自定义类是不可见类。,10.3.3 容器对象和控件对象 VFP的类有容器类和控件类之分,所以VFP中的对象也分为容器

14、对象和控件对象(有时也称之为非容器对象)。 1容器对象 容器对象是由容器类创建的对象,它们可以包含其它对象,并且允许用户在设计和运行时访问这些对象。 图101中创建的“旅馆服务主菜单表单”是一个容器对象,在表单对象中添加了一个文本框对象(用来提示主菜单信息)和5个命令按钮对象(用来实现5个具体功能)。用户既可在表单设计时改变文本框的大小、颜色、位置、标题信息和各个命令按钮的标题等数据,也可以将这些数据信息放在事件代码中,在表单运行时完成这些设置。“旅馆服务表单”中的表单是文本框和5个命令按钮的父对象。,表101列出了各种容器类大小所能包含的对象。,表101 各种容器类及其所能包含的对象,容器对

15、象 所能包含的对象 命令按钮组 命令按钮 选项按钮组 选项按钮 表格 表格列 页框 页面 页面 任意控件、容器和自定义对象 表单集 表单、工具栏 表单 页框、任意控件、容器或自定义对象,表格列 标头对象以及除表单、表单集、工具栏、计时器和其它列 对象以外的任意对象 工具栏 任意控件、页框和容器 容器 任意控件,2控件对象 控件对象也称为非容器对象,即控件对象可以包含在容器对象中,但控件类对象没有“AddObject”(添加对象)的方法程序,因此在控件对象中不能添加其它对象,即控件对象不能作为其它对象的父对象。图101所示的表单中的文本框和5个命令按钮中都不能再包含其它控件。 控件对象一般作为一

16、个独立的部件出现,提供移动、拖放和单击等操作,用户可执行封装在控件内的方法程序。,10.4 VFP的属性、事件和方法,VFP中的每个对象都是用类定义的。在VFP的“表单控件工具栏”上,控件代表类并不实际存在,直到在表单上放置了控件的对象为止。在创建控件时,也就是在复制控件类,或者说是建立控件类的实例。这个实例就是程序中将引用的对象。 例如,如果在表单上放置了3个命令按钮,则每个命令按钮对象都是命令按钮类的实例。每个对象都具有一组由类定义的公共特征和功能(属性、方法和事件),但是,每个对象都有自己的名字,都能分别设置成有效或无效,都能放在窗体的不同位置等。,10.4.1 VFP常用属性介绍 每一个对象都有各自的特征,即属性。对象的属性由对象基于的类决定。用户可通过设置对象的属性来操作对象。VFP中对象除了系统定义的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号