VFP 不仅支持传统的面向过程的编程技术,还支持面向对象的编程技术( OOP ),并在程序语言方面做了强有力的扩充。在进行面向过程程序设计时,用户必须考虑程序代码的全部流程;面向对象程序设计则主要以对象为核心,以事件作为驱动,考虑对象的构造以及与对象有关的属性和方法的设计,可以最大限度地提高程序设计的效率。
7.1.1 对象
1. 对象的概念
客观世界里的任何实体都可看做是对象,每个对象都有一定的状态,而且每个对象都有自己的行为。面向对象方法中的对象就是客观世界中事物的抽象,是反映客观事物属性及行为特征的可操作实体,其中属性用来描述对象的状态,方法用来描述对象的行为。
2. 对象的基本特征
属性
属性是对象所具有的物理性质及其特性的描述。用户通过设置对象的属性,可以定义对象的特征或某一方面的行为。
( 2 )事件
事件是由 VFP 预先定义好的、能够被对象识别的动作。每个对象都可以对事件进行识别和响应,但不同的对象能识别的事件不全相同。事件可以由一个用户动作触发,也可以由程序代码或系统触发。在多数情况下,事件是通过用户的交互操作产生的。对象的事件是固定的,用户不能建立新的事件。
事件过程是为处理特定事件而编写的一段程序,也称做事件代码。当事件由用户或系统触发时,对象就会对该事件做出响应。响应某个事件后所执行的程序代码就是事件过程。一个对象可以识别一个或多个事件,因此可以使用一个或多个事件过程对用户或系统的事件做出响应。
( 3 )方法
方法是对象在事件触发时的行为和动作,是与对象相关联的过程,但不同于一般的 VFP 过程,而且与一般 VFP 过程的调用方式也有所不同。
7.1.2 类
1. 类的概念
类与对象关系密切,类是客观对象的归纳和抽象。在面向对象的方法中,类是具有共同属性、共同行为方法的对象的集合,是已经定义了的关于对象的特征和行为的模板。基于类可以生成这类对象中的任何一个具体对象,这些对象具有相同的属性,但属性的取值可以完全不同。
2. 类的特性
( 1 )封装
封装是指将对象的方法和属性代码包装在一起。封装可以隐藏不必要的复杂性。
( 2 )继承性
继承性是说明子类延用其父类特征的能力,通过继承关系可以利用已有的类构造新类。
在创建对象时,可以利用基类派生出另一个新类。通常把从已有的类派生出的新类称为子类,已有的类称为父类。继承性提供了通过基类产生新的派生类的方法。子类不但具有父类的全部属性和方法,还允许用户根据需要对已有的属性和方法进行修改,或添加新的属性和方法,所以子类的数据成员一般包括:
①从父类继承的成员,即父类特有的属性和方法。
②子类自己定义的成员,即子类特有的属性和方法。
7.1.3 Visual FoxPro 中的类
1. 基类
基类是 VFP 系统本身内含的,用户可以从基类中生成所需要的对象,也可以扩展基类创建自己的类。
2. 容器类与控件类
( 1 )容器对象
容器类派生的对象可以包含其它对象,并且允许访问这些对象。无论在设计时还是在运行时,容器类对象和它所包含的对象都被当做一个独立的对象进行操作。在对象的层次中,容器中被包含的对象处于容器对象的下一层。
( 2 )控件对象
控件类派生的对象是一个可以以图形化的方式显示出来,并能与用户进行交互的对象。这些对象是一个相对独立的整体,不能容纳其它对象。控件对象通常被放置在一个容器对象里。
7.1.4 属性、事件与方法
1. 属性
属性描述了对象的状态或某一方面的行为特征,派生出来的新类将继承基类和父类的全部属性。
VFP 中对象的属性根据其特点可划分为以下几类:
( 1 )与操作方式、功能、效果有关的属性
( 2 )与对象的引用有关的属性
( 3 )与运行、操作条件有关的属性
( 4 )与对象的可视性有关的属性
( 5 )与数据、信息有关的属性
2. 事件
事件是一种由 VFP 预先定义好的、能够被对象识别的动作。事件作用于对象,对象识别事件并做出响应。多数情况下,事件是通过用户的交互操作产生的。另外,也可以在设计系统时拟定好与事件有关的触发条件。当事件发生时,将执行包含在事件过程中的全部代码。
事件的触发分为用户操作触发和在程序运行过程中触发两种情况。
VFP 中的事件可分为以下几类:
( 1 )鼠标事件
( 2 )键盘事件
( 3 )改变对象内容事件
( 4 )对象焦点事件
( 5 )表单事件
( 6 )其它事件
3. 方法
VFP 为满足数据处理需要,对其容器类和控件类都规定了特定方法,即对象所能执行的操作。方法是对象在事件触发时的行为和动作,是与对象或对象事件相对应的、相关联的过程。方法被“封装”在对象中,不同的对象具有不同的内部方法。
|