VFP第十三讲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

<属性名> = <表达式> 属性名> <表达式>
创建一个类属性属性, 创建一个类属性属性,并给属性赋默认 值。 例:
DEFINE CLASS MyClass AS custom Name = '' Version = '1.0' ENDDEFINE
[PROTECTED] <属性1>,<属性2>… <属性1>,<属性2>…
DEFINE CLASS <类名> AS <基类名> <类名> <基类名>
类名 – 指定要创建的类名。 指定要创建的类名。 基类名 – 指定派生类的父类,父类可以是一个 指定派生类的父类, Visual FoxPro 基类(例如 Form 类)或者 基类( 是另一个用户自定义的类
通过指定基类名为 Custom,可以创建一 , 个非可视的用户自定义类。 个非可视的用户自定义类。
类和对象操作
类操作
– 创建类 – 创建类库 – 创建对象
对象的使用
– 引用对象 – 设置对象的属性 – 调用方法 – 程序中触发事件 – 给方法或事件配代码。 给方法或事件配代码。
创建类
定义类的语法格式: 定义类的语法格式:
DEFINE CLASS <类名 AS <基类名 类名> 基类名> 类名 基类名 [PROTECTED] <属性 属性1>,<属性 属性2>… 属性 属性 <属性名 = <表达式 属性名> 表达式> 属性名 表达式 [ADDOBJECT][PROTECTD] <对象 对象>AS<类> 对象 类 [NOINIT][WITH<属性表 属性表>] 属性表 [[PROTECTED] FUNC/PROC <方法名 方法名> 方法名 [ENDFUNC/ENDPROC]] ENDDEFINE
事件
事件是当对象状态或条件发生变化时由 系统自动调用的方法。 系统自动调用的方法。 事件是事件驱动程序设计的基础; 事件是事件驱动程序设计的基础;只要 提供需要执行的事件提供代码, 提供需要执行的事件提供代码,其他的 事由VFP完成。 事由 完成。 完成 核心事件集,定义了控制的最小事件集, 核心事件集,定义了控制的最小事件集, 大多数的控制都实现了这些事件。 大多数的控制都实现了这些事件。
多型性
相同的操作可以作用在不同的对象上, 相同的操作可以作用在不同的对象上,并获得不 同的结果。 同的结果。 多型性使派生类可以修改从基类继承来的功能。 多型性使派生类可以修改从基类继承来的功能。 使相同性质的不同操作在界面上统一起来, 使相同性质的不同操作在界面上统一起来,容易 学习和使用。 学习和使用。 VFoxPro中的具体实现: 中的具体实现: 中的具体实现
(1) 事 件 的 激 活 顺 序: 表 单 集 的 事 件 激 活 顺 序-- 容 器 和 控 制 事 件-- 类 和 控 制 事 件。 ---- A. 表 单 集 的 事 件 激 活 顺 序 FormSet.Load Form.Load DataEnviroment.Init
Control.Init (注:控制的初始化从内至外) Form.Init FormSet.Init FormSet.ReadWhen FormSet.ReadActivate FormSet.ReadShow FormSet.Show Form.Show FormSet.Avtivate ...
– 函数名重载;相同的函数名作用于不同的对象上,产 函数名重载;相同的函数名作用于不同的对象上, 生不同的行为结果。 生不同的行为结果。 – 运算符重载;同一运算符可作用于多种数据类型上。 运算符重载;同一运算符可作用于多种数据类型上。
对象
对象是类的一个实例。 对象是类的一个实例。 对象根据类中存储的信息来创建, 对象根据类中存储的信息来创建,类是 创建对象的摸板。 创建对象的摸板。 类型相同的对象共享类中的方法, 类型相同的对象共享类中的方法,但不 共享数据,每个对象有独立的内存空间。 共享数据,每个对象有独立的内存空间。 与类一样, 与类一样,对象分为容器对象和控制对 象。
Control.Valid event (第一个控制的when事 件) ... Form.Deactivate FormSet.Deactivate FormSet.ReadDeactivate FormSet.ReadValid Controls.Destroy (注:控制的释放从外至 内) FormSet.Destroy Form.Destroy Form.Unload FormSet.Unload
在属性名前加 PROTECTED 可以阻止从 类定义的外部访问和改变这些属性, 类定义的外部访问和改变这些属性,在 类内部定义的方法和事件可以访问被保 护属性。 护属性。 例: DEFINE CLASS MyClass AS Custom
PROTECTED Version Name = '' Version = '1.0' ENDDEFINE
核心事件集(二)
RightClick 用户使用辅鼠标按钮单击 对象。 对象。 GotFocus 对象接收焦点,由用户动 对象接收焦点, 作引起, 键或单击, 作引起,如按 Tab 键或单击,或者在代 码中使用 SetFocus 方法。 方法。 LostFocus 对象失去焦点,由用户动 对象失去焦点, 作引起, 键或单击, 作引起,如按 Tab 键或单击,或者在代 方法。 码中使用 SetFocus 方法。 KeyPress 用户按键时产生。 用户按键时产生。
类、类的基本特征 对象 方法、事件 类和对象操作
类、类的基本特征
类定义 基类 容器类和控制类 类的基本特征
类的定义
具有相同的结构、操作、 具有相同的结构、操作、并遵守相同规 则的对象的特征聚合在一起,构成类。 则的对象的特征聚合在一起,构成类。 是具有相同行为的对象的抽象。 是具有相同行为的对象的抽象。 类同时定义了数据和功能, 类同时定义了数据和功能,所有对象的 属性、事件和方法都在类中定义。 属性、事件和方法都在类中定义。 面向对象程序设计是以对象为中心的, 面向对象程序设计是以对象为中心的, 对象是程序设计的基本单位, 对象是程序设计的基本单位,类是对象 的模板,对象是类的实例。 的模板,对象是类的实例。
---- C. 类 和 控 制 事 件。 ---- (2) 对 于 表 单, 事 件 的 顺 序 是LOAD,INIT,SHOW,ACTIVATE,GOTFOCUS。 表 单 被 释 放 时 的 先 后 顺 序 是 LOSTFOCUS,DESTROY,UNLOAD。 当 一 个 方 法 中 的 对 象 出 现 错 误 时,Error 事 件 被 激 活。
继承性
类自动继承基类的所有功能和特性, 类自动继承基类的所有功能和特性,使 派生类具有基类所有的功能和特性。 派生类具有基类所有的功能和特性。 继承性消除了程序中的重复代码。 继承性消除了程序中的重复代码。使定 义新类的建立变得简单、方便。 义新类的建立变得简单、方便。 从功能相近的类派生, 从功能相近的类派生,再增加基类所没 有的功能和特性, 有的功能和特性, 提高了可维护性,修改了基类中的错误, 提高了可维护性,修改了基类中的错误, 就可以修改所有派生类中的错误, 就可以修改所有派生类中的错误,提高 了程序的可靠性。 了程序的可靠性。
B. 容 器 和 控 制 事 件, 要 记 住 两 个 基 本 规 则: •容 器 不 处 理 和 它 们 包 含 的 控 制 相 关 联 的 事 件; •如 果 没 有 和 控 制 关 联 的 事 件 代 码,Visual Foxpro 查 看 是 否 有 和 更 高 级( 高 至 类 等 级) 事 件 相 关 的 代 码。
基类
系统定义的类叫做基类, 由FoxPro系统定义的类叫做基类,可以 系统定义的类叫做基类 直接使用,不需要再定义。 直接使用,不需要再定义。
基类有CheckBox、Column、CommandButton、 基类有CheckBox、Column、CommandButton、 CommandGroup、Container、Control、Cursor、 、 、 、 、 Custom、DataEnvironment、EditBox、Form、 、 、 、 、 Formset、Grid、Header、Image、Label、Line、 、 、 、 、 、 、 ListBox、OLEControl、OLEBoundControl、 、 、 、 OptionButton、OptionGroup、Page、PageFrame、 、 、 、 、 Relation、Separator、Shape、Spinner、TextBox、 、 、 、 、 、 Timer、ToolBar 、
核心事件集(一)
Load 表单或表单集被加载到内存中。 表单或表单集被加载到内存中。 Unload 从内存中释放表单或表单集。 从内存中释放表单或表单集。 Init 创建对象时产生。 创建对象时产生。 Destroy 从内存中释放对象。 从内存中释放对象。 Click 用户使用主鼠标按钮单击对象。 用户使用主鼠标按钮单击对象。 DblClick 用户使用主鼠标按钮双击 对象。 对象。
[ADDOBJECT][PROTECTD] <对象>AS<类> <对象>AS<类 的基类、 从 Visual FoxPro 的基类、用户自定义 类向一个类定义定义中添加一个对象。 类向一个类定义定义中添加一个对象。 PROTECTED
– 禁止从类定义的外部访问和修改对象的属性
对象
– 指定对象名,用来从类定义内部引用对象。 指定对象名,用来从类定义内部引用对象。
方法
在类中定义的函数或过程叫做方法。 在类中定义的函数或过程叫做方法。 对象通过执行方法来完成一定的功能。 对象通过执行方法来完成一定的功能。 与普通过程或函数相比, 与普通过程或函数相比,方法必须指定 目标对象。 目标对象。 可以在派生类里扩展任意数量的方法。 可以在派生类里扩展任意数量的方法。
类的特征
封装性 继承性 多型性
封装性
封装性是指隐藏类中对象的内部数据和 操作细节, 操作细节,使对象之间的通信在定义明 确的界面上进行。 确的界面上进行。
– 对象的界面指它向外提供的方法、事件、属 对象的界面指它向外提供的方法、事件、 性。
实现了信息隐藏, 实现了信息隐藏,隔离了类使用者和设 计者; 计者;设计者可以完善设计而不影响使 用者; 用者;使用者不用理解内部的数据结构 和代码,更容易学习和使用。 和代码,更容易学习和使用。
核心事件集(三)
MouseDown当鼠标指针停在一个对象 当鼠标指针停在一个对象 上时,用户按下鼠标按钮。 上时,用户按下鼠标按钮。 MouseMove 用户在对象上移动鼠标。 用户在对象上移动鼠标。 MouseUp 当鼠标指针停在一个对象 上时,用户释放鼠标按钮。 上时,用户释放鼠标按钮。 InteractiveChange 以交互方式改变 对象值。 对象值。 ProgrammaticChange以编程方式改变 以编程方式改变 对象值。 对象值。
AS<类> 类
– 指定类,该类中包含添加到类定义中的对象。 指定类,该类中包含添加到类定义中的对象。
[ADDOBJECT][PROTECTD] <对象>INE CLASS MyClass AS Custom ADD OBJECT CB1 AS CommandButton ADD OBJECT LIST1 AS ListBox ENDDEFINE
容器类和控制类
容器类(Container) 容器类
– 容纳其他对象,是其他对象的集合。 容纳其他对象,是其他对象的集合。
控制类(Control) 控制类
– 控制类是单一的对象,不能包含其他的对象。 控制类是单一的对象,不能包含其他的对象。
容器类
容器 可以包含其它对象 命令按钮组 令按钮 命 表单集 表单、工具栏 表单 页框、表格、任何控制 表格 列 选项按钮组 项按钮 选 页框 页面 页面 表格、任何控制
容器类容器类容器命令按钮命令按钮表单集表单集表单表格选项按钮选项按钮页框页面可以包含其它对象表单表单工具栏页框表格任何控制列具栏页面表格任何控制类的特征类的特征?封装性?继承性?多型性?多型性封装性封装性?封装性是指隐藏类中对象的内部数据和操作细节使对象之间的通信在定义明确的界面上进行
FoxPro第十三讲 FoxPro第十三讲 面向对象程序设计
相关文档
最新文档