第六章 对象模型与事件模型
结构化程序设计
设计方法——自顶向下、功能分解 开发过程通常是从“做什么”到“如何做” 优点:结构性强、便于设计和理解
面向对象的程序设计
基于
问题对象的自底向上的功能综合 开发过程是从“用什么做”到“要做什么” 优点:
更接近现实世界,可降低开发和维护的费用 可以和各种模型自然的融合
设计出基本 利用类的继承 简化程序设计,提高程序代码的可重用性 的类和对象 性更新功能
类(Class) )
系统提供的内部定义的类。( 基类(Base Class):VFP系统提供的内部定义的类。(表 : 系统提供的内部定义的类。(表 控件) 单、控件) 子类(SubClass):引用 基类或其他的子类, 子类 :引用VFP基类或其他的子类,建立 基类或其他的子类 的新类。 的新类。 用户自定义类(User-Define Class):与基类相似,由 用户自定义类 :与基类相似, 用户定义,可用于派生子类, 用户定义,可用于派生子类,但无可视化表示形式
类的特点
继承性( 继承性(inheritance) 多态性( 多态性(polymorphism) ) 封装性 (encapsulation) ) 抽象性( 抽象性(abstraction) )
对象( 对象(Object) )
对象是基于某种类所创建的实例。 对象是基于某种类所创建的实例。 每个对象都具有属性及与之相关的事件和方法 属性( 定义对象的特征或某一方面的行为。 属性 Property) 定义对象的特征或某一方面的行为。 对象的属性值可在设计阶段或运行阶段修改。 对象的属性值可在设计阶段或运行阶段修改。 是由对象识别的一个动作。 事件(Event) 是由对象识别的一个动作。 可编写相应的代码,对动作进行响应。 可编写相应的代码,对动作进行响应。 事件可由用户的动作、程序代码或系统产生。 事件可由用户的动作、程序代码或
系统产生。 对象的事件集合是固定的,用户不能创建新的事件。 对象的事件集合是固定的,用户不能创建新的事件。 是对象能够执行的一个操作。 方法(Method) 是对象能够执行的一个操作。 方法是与对象相关联的过程,也称方法程序。 方法是与对象相关联的过程,也称方法程序。 方法可由用户自己创建。 方法可由用户自己创建。
基类和子类
基类: 基类:VFP系统提供的内部定义的类。 子类: 子类:引用VFP基类或其他子类建立的新类。 用户自定义类: 用户自定义类:与基类相似,由用户子定义,但 无可视的表示形式 类库(.vcx, .vct):用于存放子类的库文件。 类库 :
VFP 基类
子类 派生 子类 子类
容器类(Container classes)是包容其他类的基类 是包容其他类的基类 图表标题
容器可以包含其它对象; 容器可以
作为所包含的对象的父对象; 允许访问包含的对象; VFP的类 VFP的类
控件类(Control classes)是可以包含在容器类中 是可以包含在容器类中
并有用户派生的基类。 并有用户派生的基类。
控件对象可以包含在容器中 控件类 容 不能作为其它对象的父对象 容 容 Controls Containers
基于类的不同类型,VFP的对象可分为容器对象
和控件对象 控件对象
层次体系示意图
表 单 集
表 单
容 器
控 件
根据对象的层次体系引用对象
全名引用): ):从表单或表单集开始, 绝对引用(全名引用): 把层次体系中的对象名 对象名由大范围到小范围用圆 圆 FormSet1.Form1 对象名 点隔开,直到要引用的控件的某个属性。 FormSet1.Form1.PageFrame1.Page1.Column1.Text1
相对引用
_SCREEN.ActiveForm 在控件内对自身引用:This 自身所在容器(父对象)的引用: Parent _SCREEN.ActiveForm.ActiveControl 控件所在的表单的引用: Thisform 控件所在的表单集的引用: Thisformset 活动的表单的引用: Activeform 活动的控件的引用: Activecontrol
设置对象属性
1、每个对象都有属性,可对对象设置属性 每个对象都有属性,
属性可以在设计时设置也可在运行时设