【vfp精品源码栏目提醒】:本文主要为网学会员提供“【精品】06表单设计基础1 - 其它资料”,希望对需要【精品】06表单设计基础1 - 其它资料网友有所帮助,学习一下!
第6章 表单设计基础 6.1 面向过程和面向对象的程序设计 6.2 面向对象的基本概念 6.3
VFP中的类和对象 6.4 事件和方法程序6.1 面向过程和面向对象的程序设计6.1.1 面向过程的程序设计 在面向过程的程序设计中,整个系统以功能分类,它被划分成各类功能模块,各个功能模块如果需要,还必须划分为更为具体的小功能模块,直至该功能模块能以一个函数或一个过程来实现为止。
它具有思路清晰、功能单一等特点,但其缺点也是很明显的,主要表现在:1.程序代码被分为模块和函数,程序越大,在代码中出现错误的可能性也就越大,因此不便维护和修改。
2.程序设计人员需要用大量的时间去设计输入输出界面, 而且设计出来的界面又不能像用户普遍使用的如 WINDOWS视窗操作系统那样被接受。
3.程序在执行过程中受过程的控制,会一直独占计算机 的资源,难以实现多任务的操作。
由于以上这些问题,使得
VFP程序设计逐渐演变发 展到了OOP。
现在的
VFP等Windows应用软件,既提供了 传统的面向过程的程序设计方法,也提供了以下的程 序设计方法。
6.1.2 面向对象的程序设计 面向对象程序设计的两个基本特点是: 1 它是可视化的编程方式。
2 程序运行没有一定的顺序,由事件驱动。
对象是程序和数据的结合体,是
VFP的一个操作单位。
对象和对象又可组成新的对象。
在面向对象的程序设计方法中,用户需要考虑的是如何创建对象,及对对象应实施哪些操作,每个操作应完成什么功能,以完成用户提出的所有要求。
6.2 面向对象的基本概念 在面向对象的程序设计中,最重要的概念是对象和类,它们是关系密切但又完全不同的两个概念。
6.2.1对象(object) 对象是数据和数据操作代码的组合体。
对象既具有静态的属性又可具有动态的行为。
在面向对象的程序设计中,对象是构成程序的基本单位,是程序的运行实体。
对象可以是任何的具体事物。
在
VFP中,标签、表格、表单以及所有控件都可看成是应用程序中的对象。
对象是应用程序中的一个处理单位。
6.2.2 类class 类含有某个对象的数据和操作功能,是对一组具有相同属性和方法的对象的抽象,是对象的原型。
在类定义代码中可含有对象的属性、事件和方法。
类和对象是抽象和具体的关系。
类包含有关对象的特征和行为信息,是对象定义的模板。
对象是类的具体化和实例化,所以对象又称为类的实例(Instance)。
一个类可以实例化为多个对象,各个对象都有所属类的属性、事件和方法程序,但每个对象的属性值可以不同。
类是一个静态的概念,只有实例化的对象才是可运行的实体。
类具有封装性、继承性和多态性。
封装性(Encapsulation)。
封装是指将对象的特性属性和行为方法包装在一起。
继承性(Inheritance)。
类都可以从已有的类中派生而来,派生出的子类继承父类的全部属性和法,可以添加新的方法,也可放弃若干原有的方法。
多态性(Polymorphism。
多态性是指相同的操作可以作用于多种类型的对象上,并获得不同的结果。
VisualFoxPro允许用户利用多态性。
6.2.3 类与对象的关系 类和对象关系密切,但并不相同。
类包含了有关对象的共同特征和行为信息,它是对象的蓝图和框架。
类是对象的抽象描述,对象是类的一个具体实例。
例如,电话可以是一个类,而这个类的实例—对象,便是某一部具体的电话。
从某种程度上讲,类也是一种对象,例如学生是一类也是一个对象。
类决定了对象的特征。
对象可以是类的成品,类与对象是应用程序的组装模块。
6.2.4 属性 对事物性质等进行的描述称为事物的属性。
属性是对象的特征,是对象某一方面的行为参数。
它描述对象的状态或某一方面的行为功能,说明了对象可以完成的工作,但还没有说明如何去完成任务。
状态是对象在其生命周期中某个特定阶段所处的某种境域、所表现的形态,行为是指对象在某种状态下所做的一系列处理、操作、反应。
6.3
VFP中的类和对象
VFP的对象所具有的属性是由派生该对象的类决定的, 而且这些属性既可以在设计时指定,也可以在运行时指 定。
当用户打开表单或控件的属性窗口,并选择“其它” 选项卡时,可能会看到涉及类定义的以下几个属性:1BaseClass(基类):
VFP中内部定义的类,用户可使用它们创建2自定义类,如表单和所有控件都是基类,用户可在此基础上创建新 类,增添需要的功能。
Class(类):派生该对象的类名。
3 ParentClass(父类):派生该对象的父类名。
仅对自定义类有效, 如果类是直接从
VFP基类上派生的,则本项为空。
6.3.1 容器类容器类可以包含其它对象,并允许访问 这些对象。
这些对象无论是在运行时还是在设计时都可以单 独地操作。
常用的容器类有:表单(Form)、表单集(FormSet)、列(Coumn)、命令按钮组 CommandButton Group、容器Container、表格Grid、选项按钮组OptionButtonGroup、页Page、页框PageFrame、工具栏TooBar,其中,表单集和页框是不可见类。
6.3.2 控件类 控件类中不能包含其它对象,只能加入到其它对象中。
控件类的封装比容器类更为严密。
当引用容器中的控件对象时必须经过容器,其格式是:容器对象.控件对象.属性。
例如,在Form1表单中设置标签abc1的Caption属性: Form1.abc1.Caption姓名
VFP中常用的控件类有:复选框(CheckBox)、组合框(ComboBox)、命令按钮(CommandButton)、编辑框(EditBox)、图像(Image)、标签(abe)、线条(ine)、列表框(IstBox)、选项按钮(OptionButton)、形状(Shape)、微调(Spinner)、文本框(TextBox)、计数器(Timer)、控件(Contro)、列标题(Header)、OE绑定型控件(OE Bound Contro)、OE容器控件(OE Container Contro)、自定义类(Custom),其中计数器和自定义类是不可见类。
6.3.3 容器对象和控件对象
VFP的类有容器类和控件类之分,所以
VFP中的对象也分为容器对象和控件对象(有时也称之为非容器对象)。
1.容器对象 容器对象是由容器类创建的对象,它们可以包含其它对象,并且允许用户在设计和运行时访问这些对象。
表6.1 各种容器类及其所能包含的对象容器对象 所能包含的对象命令按钮组CommandGroup 命令按钮选项按钮组OptionGroup 选项按钮表格Grid 表格列页框PageFrame 页面页面Page 任意控件、容器和自定义对象表单集FormSet 表单、工具栏表单Form 页框、任意控件、容器或自定义对象表格列Header 标头对象以及除表单、表单集、工具栏、 计时器和其它列对象以外的任意对象工具栏ToolBar 任意控件、页框和容器容器OleControl 任意控件 2.控件对象 控件对象也称为非容器对象,即控件对象可以包含在容器对象中,但控件类对象没有“AddObject”(添加对象)的方法程序,因此在控件对象中不能添加其它对象,即控件对象不能作为其它对象的父对象。
控件对象一般作为一个独立的部件出现,提供移动、拖放和单击等操作,用户可执行封装在控件内的方法程序。
6.4 事件和方法程序
VFP中的每个对象都是用类定义的。
在
VFP的“表单控件工具栏”上,控件代表类并不实际存在,直到在表单上放置了控件的对象为止。
创建控件也就是在复制控件类,或者说是建立控件类的实例。
这个实例就是程序中将引用的对象。
6.4.1
VFP常用事件 事件确定控件对外部条件的响应。
事件由各个控件识别,再由应用程序处理。
例如,命令按钮可以识别鼠标单击事件,但无法响应这个事件,除非提供了所需要的代码,即必须告诉
VFP在用户单击特定命令按钮时所进行的操作。
每个对象都能够识别和响应系统预先定义好的特定事件。
用户不能自定义新的事件。
在面向对象的程序设计中,程序的执行取决于当前所发生的事件,并由事件来驱动。
什么事件发生了,便有相应的事件处理程序去处理。
事件可由用户或系统激活,多数情况下,事件是通过用户的交互操作产生的。
用户可以编写具有一定功能的程序代码,以响应特定的事件。
表6.2 最小事件集事件 说明Init 当对象创建时激活Destroy 当对象从内存中释放时激活Error 当类中的事件或方法程序过程中发生错误时激活 表6.3 核心事件表事件 事件的激发Init 当对象创建时激活Destroy 当对象从内存中释放时激活Click 用户单击Error 当类中的事件或方法程序过程中发生错误时激活DblClick 用户使用主鼠标按钮双击对象激活RightClick 用户使用辅鼠标按钮单击对象激活GotFocus 对象接收焦点由用户动作引起激活LostFocus 对象失去焦点由用户动作引起激活KeyPress 用户按下或释放按钮MouseDown 用户在对象上按下鼠标按钮MouseMove 用户在对象上移动鼠标按钮MouseUp 鼠标指针停在对象上,用户释放鼠标按钮其他事件