vfp第8章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
序号属性说明默认值caption决定表单标题栏显示的文本form1name表单的名称form1autocenter决定表单初始化时是否居中backcolor决定表单背景颜色灰色borderstyle决定表单是无边框还是具有单线边框固定对话框或可调边框3可调边框closable决定是否可以双击关闭按钮来关闭表单controlbox决定是否有控制图标和控制按钮maxbutton决定表单是否具有最大化按钮minbutton决定表单是否具有最小化按钮10movable决定表单是否可以移动11windowstate决定表单初始化时是最大化最小化还是普通状态0普通12windowtype决定表单是无模式表单还是模式表单如果表单是模式表单用户在访问应用程序其他单元前必须关闭这个表单0无模式823对象引用所谓对象引用是指如何在程序设计和程序运行中对这些对象进行控制和操作
(3)继承性
继承是一个有力的工具,例如父类中实现了某一个 特定功能,那么在它的子类中就自动获得该功能,这样 就免去了重新为子类编写同样代码的重复劳动。 子类可以继承并保持父类的所有特性和功能,但也 可以修改、重置甚至取消有父类继承来的某些特性和功 能,使父类的功能在子类中有所变异,也可以增加父类 所没有的特性和功能,子类的任何变化都不影响它的父 类。继承性体现了类层次中的“共享”机制。 例如,由基本类型的电话(拨号、讲话、听音功 能),可以派生出电话传真机、移动电话、公用投币电 话等,这些电话都继承了电话基本类型的拨号、讲话、 听音功能,又添加了各自的独特功能。
8.1 面向对象程序设计基本概念
8.1.1 基本概念
VFP支持面向对象程序设计(Object-Oriented Programming),面向对象程序设计所追求的目标是将 现实世界的问题求解尽可能简单化,采用符合人类处理问 题的思维方式。它用“对象”表现事物,用“事件”表示 处理事物的动作,用“方法”表现处理事物的过程,用 “消息”传递对象与对象之间的相互联系。 面向对象程序设计方法不同于传统的结构化程序设计, 采用事件驱动编程机制。在事件驱动编程中,程序员只要 编写响应用户动作的程序,如选择命令、移动鼠标等,而 不必考虑按精确次序执行的每个步骤。在这种机制下,不 必编写一个大型的程序,而是建立一个由若干微小程序组 成的应用程序,这些微小程序可以由用户启动的事件来激 发。
(2)对象通过类来产生,所以对象是类的具体化和实例 化,故对象又称为类的实例。一个类可以实例化多个对象, 各个对象都具有所属类描述的属性和方法,但每个对象的 属性值可以不同,实例化对象才是可运行的实体。 例如,汽车可以看做一个类,具有相同的属性特征和 功能,汽车具有运动等功能,大小、颜色等属性。某一辆 汽车就是对象,是汽车类的实例。因此,具有汽车类描述 的功能和属性,但其大小、颜色等属性值可能不同,汽车 类描述的功能只有在具体某辆汽车上才能实现。 所有对象的属性、事件和方法都是在定义类时被指定, 由于类是定义了对象特征、外观和行为的模板,所以对象 由类生成,生成的对象也自然具有相同的属性、事件和方 法。例如,由复选框类、单选按钮类可以生成各种形式的 复选框、单选按钮。
8.1.2类
“类”源于日常生活中类别、分类概念。 1.类的基本概念 类(Class)是已经定义了的关于对象的特征和行为的 模板,是对象的原型。类是对一组相似对象的共同抽象 描述,它将该组对象所具有的共同特征集中起来,用于 说明该组对象的性质和能力。在表单控件工具栏中每个 控件按钮都代表一个类,用其中某个按钮在表单上创建 一个控件就是一个对象。从上可以看出: (1) 类和对象是两个关系密切的概念,但并不相同, 类规定并提供了对象具有的属性、事件和方法,因此类 是对象的蓝图和框架。例如,工厂生产零件时,需要零 件图作为依据,所生产的零件具有相同的特征和功能, 零件图就是类,零件就是对象。
2.属性 对象的属性用来表示它的状态和特征,以命令按 钮为例,其位置、大小、颜色等状态,都可用属性来 表示。 属性值的设置或修改可以通过属性窗口来进行, 也可以通过编程的方法在程序运行的时候来改变对象 的属性。在程序中设置属性的一般格式是: 表单名.对象名.属性名=属性值
3.事件 所谓事件,是由VFP预先定义好的、能够被对象识 别的动作,如鼠标单击(Click)事件、双击(DblClick) 事件等。一个对象可以有多个事件,不同的对象能识 别的事件也不完全相同。对象的事件是固定的,用户 不能建立新的事件。一个事件对应于一个程序,称为 事件过程。事件一旦被触发,系统立即就去执行与该 事件对应的事件过程。 虽然一个对象可以拥有多个事件过程,但在程序 中要使用什么事件过程,则有用户根据程序的具体要 求来确定,对于必须响应的事件需要编写该事件的事 件过程,而不必理会的事件不需要编写事件过程,只 要交给VFP处理即可。
表格列
页框 页面 容器 工具栏
Clumn
PageFrame Page Container ToolBar
2.控件类 控件类可以包含在容器类中,但不能容纳其它 对象,它的封装比容器类更为严密。容器类与控制类 的根本区别在于,容器类可以按层次访问容器类中的 对象;而控制类的对象都是同一层的对象,不能再包 含下一层对象。
在VFP中称对象的特征和数据为“属性”,称由对 象识别的一个动作为“事件”,称在对象上完成的操 作过程为“方法”。 定义了对象的属性、事件和方法就决定对象的外 观和它的动作。因此,对象是属性、事件和方法的集 合体,用户通过属性、事件和方法来处理对象。 对象的基本特点是具有属性,用来描述自己的状态; 有方法,构成自己的行为;有可以识别的事件,响应 外界的刺激。 综上所述,可以把对象初步理解为:对象是一个封 装了属性、事件和方法的实体。
4.方法 方法(Method)是与对象相关联的过程,但又不 同于一般的VFP过程,用于完成某种特定的功能而不一 定响应某一事件,如释放表单等方法。方法程序紧密 地和对象连接在一起,并且与一般VFP过程的调用方式 也有所不同。方法被“封装”在对象之中,不同的对 象具有不同的内部方法,用户可以根据需要建立新的 方法,方法的代码是在程序中调用,调用的格式是: [[变量名]=]对象名.方法名( )
8.2 可视化编程基础
8.2.1容器类和控件类
Visual FoxPro中类可以分为容器类和控件类。 1容器类 容器类可以容纳别的对象,这些对象可以是容器类 对象,也可以是控制类对象,并且允许访问这些对象。 例如,表单类是一个容器,它可以放入命令按钮控件、 复选框控件、编辑框控件、文本框控件等一组控件类, 并将这些类作为一个整体进行操作。容器类提供了一种 将多个对象按需要进行组合的功能。容器类中的对象还 可以是容器类的,这就形成了容器类对象的嵌套,因此 容器类是允许有层次的。
VFP提供的容器类的类别、名称和所能包含的控件类 对象如下表所示。
容器
表单集 表单
名称
FormSet Form
能包含的对象
表单、工具栏 页框、任意控件、容器
命令按钮组
选项按钮组 表格
CommandButtonGro
命令按钮
选项按钮 表格列 标头对象以及除了表单集、表 单、工具栏、计时器和列对象 以外的任意对象 页面 任意控件、容器 任意控件 任意控件、页框和容器
第8章 面向对象的程序设计
8.1 面向对象程序设计基本概念 8.2 可视化编程基础 8.3 常用控件的基本属性 8.4 程序设计的基本方法 8.5 修改和定制表单
内容概述
传统的编程方法是面向过程、按顺序进行的机制,这 种编程方法的缺点是程序员始终要关心什么时候发生什么 事情。VFP是采用事件驱动编程机制的面向对象程序设计 语言之一。与传统的面向过程程序设计相比,它具有许多 优点,其中最主要的是,面向对象程序设计是按照人类认 识世界的方法和思路方式来解决问题。 表单设计是VFP程序设计的主要工作之一,表单为数 据库信息的显示、输入和编辑提供了非常简便的方法,同 时设计表单的过程就是设计程序界面的过程。 本章主要介绍面向对象程序设计的基本概念,如何利 用表单向导和表单设计器设计表单,表单中各种常用控件 的使用方法,结合例题介绍了表单及其控件的属性、事件 和方法的调用方法。
4.子类
子类是以一个类为起点而建立起来的新类,也就是 说用户可以在已有类的基础上创建已有类的子类,创建 子类时所基于的类称为子类的父类。 一个子类可以拥有派生它的父类的全部功能,即具 有继承性,并在此基础上,可添加其它控件或功能。由 于父类和子类存在继承性,对父类功能的所有修改都将 会反映到子类中,所以当某个类发现问题时,就不需要 逐个修改它的子类,而只需修改父类即可。
由于有了继承性,当把基本类型的电话由拨号改 为按键,其它类型的电话都可以改为按键,继承性使 我们不必研究每种电话如何实现按键。 继承性即子类延用父类特征的能力。一个子类可 以拥有其父类的全部功能,然后在此基础上,可以添 加其他控件或功能。 由于有继承性,就可以使得在一个类上所做的改 动反映到它的所有子类当中,若发现类中有一个小错 误,用户不必逐一修改各子类的代码,只需要在父类 中改动,然后这个变动将会体现在全部子类中。这种 自动更新可节省用户的时间和精力。 若类的层次具有多层,则这种继承性还具有传递 作用,即下层的子类可继承其以上各层父类的全部功 能。
2.类的特征
类是模板,它规定了对象的属性、事件和方法程序; 同时它还具有:封装性、继承性和多态性。 (1)抽象性 一般而言,抽象是对复杂的实体的简明表示,它强调 了我们所关心的或认为重要的信息,而将不重要的信息 予以忽略。 例,我们对电话的认识已经抽象化了,拨号、讲话、听 音这就是我们印象中的电话,而不关心和了解电话内部 的线路和工作原理。 面向对象程序设计利用抽象性,提取一个类或对象与 众不同的特征,而不对该类或对象的所有信息进行类和 容器的层次结构处理,抽象性能够忽略对象的内部细节, 隐藏不必要的复杂性。
(4)多态性
我们知道F1 ~ F12功能键,不同的软件环境对每一功 能键有不同的功能定义。同是一键在不同的软件中就会产生 不同的操作,这就是多态性。 每个对象不可能只是单独工作,完成某一任务可能要某 些对象通过协同工作来完成,一个对象可以请求或命令另一 个对象完成某一操作。对象之间是通过“消息”传递实现相 互联系。向某个对象发送消息,就是要求该对象执行一个操 作。 一个消息只说明接受者应该执行哪种操作,而不说明 怎样去执行这个操作,操作的具体执行由消息接受者确定。 所谓多态性是指同一个消息可以根据接收消息的对象不 同采用不同的操作。也就说,当不同的对象收到相同的消息 时将产生不同的操作。 例如VFP中的加“+”运算符,不仅可以进行数值相加, 而且可以进行字符串相加。这完全取决于表达式中加法运算 符“+”所操作的对象的数据类型。
3.基类
基类是VFP内部预先定义的类,在“新建类”对话框 的“派生于”下拉列表框中包含了全部基类,例如表单、 表单集,表单控件工具栏中所有的控件也是基类。 基类可作为用户自定义类的基础,用户可以在此基础上 创建新类,并增添自己需要的新功能。 由基类可以创建对象,对象将继承该类的功能。每一 个对象都会对特定事件作出响应,对一些最小事件(基 本事件)的响应,各类是共同的。 基类的最小事件集——每个基类都可能有各自的区别于 其它基类事件,但VFP基类都至少包含以下三个事件。 Init (初始):当对象创建时激活。 Destroy(破坏):当对象从内存中释放时激活。 Error (错误):当类中的事件或方法发生错误时激活。
(2)封装性
封装是面向对象程序设计的术语,实际上是一种信 息隐藏技术,是指包含和隐藏对象信息,如内部数据结 构、对象的方法程序和代码等。封装就是指将对象的方 法程序和属性代码包装在一起。封装将操作对象的内部 复杂性与应用程序的其它部分隔离开来。 例如,我们将电话的零部件和线路封装在电话的外 壳里,这样使用户看不到电话内部线路的复杂性,只专 心拨号、讲话、听音,从而也产生用户对电话具有拨号、 讲话、听音功能这种抽象化的认识。又例如,当对一个 命令设置Caption属性时,不必了解标题字符串是如何 存储的。 对象的抽象性通过封装得以实现。
1.对象
现实世界的实体——事、物、概念等,都统称为对象 (Object)。如:一个人是一个对象,一台PC机是一个对象。 如果将一台PC机拆开来看便有“显示器、机箱、软盘驱动器、 硬盘、键盘„„”,每一个又都是一个对象,即PC机对象是 由多个“子”对象组成的。此时PC机称为一个包容器 (Container)对象。在面向对象系统中一切成份都是对象, 大到整个系统、项目、数据库、表、表单,小到窗口、控件 都被视为对象。从面向对象编程的角度来看,对象是一个逻 辑实体,它包括数据和完成处理所需要的程序代码,是数据 和代码的组合,一个对象建立以后,其操作就通过与该对象 有关的属性、事件和方法来描述。在VFP中,常见的对象有: 表单、文本框、列表框等。
相关文档
最新文档