第5章VFP语言基础-面向对象的程序设计培训课件

上传人:youn****329 文档编号:129957545 上传时间:2020-04-24 格式:PPT 页数:44 大小:531KB
返回 下载 相关 举报
第5章VFP语言基础-面向对象的程序设计培训课件_第1页
第1页 / 共44页
第5章VFP语言基础-面向对象的程序设计培训课件_第2页
第2页 / 共44页
第5章VFP语言基础-面向对象的程序设计培训课件_第3页
第3页 / 共44页
第5章VFP语言基础-面向对象的程序设计培训课件_第4页
第4页 / 共44页
第5章VFP语言基础-面向对象的程序设计培训课件_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《第5章VFP语言基础-面向对象的程序设计培训课件》由会员分享,可在线阅读,更多相关《第5章VFP语言基础-面向对象的程序设计培训课件(44页珍藏版)》请在金锄头文库上搜索。

1、第五章程序设计基础 5 1程序设计概述5 2结构化程序设计5 3面向对象的程序设计基础 2 本章重点 结构化程序设计顺序 选择 循环过程和函数面向对象的程序设计类和对象属性 方法 事件 4 面向对象的程序设计方法方法 基于问题对象的自底向上的功能综合 从内部结构上模拟客观世界开发过程 从 用什么做 到 要做什么 优点以对象为中心的问题求解方法简化程序设计 更接近现实世界 可降低开发和维护的费用提高程序代码的可重用性可以和各种模型自然的融合 5 3面向对象的程序设计基础 5 一 类和对象概述1 类 所谓类 Class 就是一组具有相同结构 性质 共同操作特点及遵守相同规则的对象的集合 它是对某种

2、具有共同属性及其行为特征的对象群体的抽象描述 对象 是类的一个实例 包含具体数据 过程定义 6 一 类和对象概述2 类是静态概念 对象是动态概念 类 定义了某类对象特征以及对象外观和行为的模板 它刻划了一组具有共同特性的对象群体 对象 则是基于某种类所创建的一个实例在OOP中 类就像是一个模板 对象都是基于这个模板生成的 类定义了对象所具有的属性 事件和方法 从而决定了该类对象的属性和它的行为 VisualFoxPro系统为用户提供29个基类 7 基类 VFP系统提供的内部定义的类 可用于用户定义子类的基础子类 是以其它类 已有的 定义为起点 为某一种对象所建立的新类 子类将继承任何对父类所做

3、的修改用户自定义类 与基类相似 由用户自己定义 也可用于派生子类 但无可视化表示形式 类 8 继承性 inheritance 子类沿用父类特征的能力如果父类特征发生改变 则子类将继承这些新特征多态性 polymorphism 一些关联的类包含同名的方法程序 但方法程序的内容可以不同相同的操作作用于多种类型的对象上获得不同的结果 增强系统的灵活性 维护性和扩充性 特性 9 封装性 encapsulation 说明了包含和隐藏对象信息的能力高内聚 低耦合抽象性 abstraction 提取一个类或对象与众不同的特征 而不对该类或对象的所有信息进行处理 特性 10 对象 Object 是类的实例 每

4、个对象都具有描述它特征的属性 以及附属于它的行为 对象把事物的属性和行为封装在一起 是一个动态的概念 对象是面向对象编程的基本元素 是 类 的具体实例 每个对象都具有属性及与之相关的事件和方法在VFP中 包含在应用程序中的表单及各种控件都是对象 对象是包含数据和代码的实体 在程序设计中 用属性 事件和方法来说明对象 属性就是对象的数据内容 事件和方法则是对象中包含的代码 对象 Object 11 属性 Property 用于定义对象的特征或某一方面的行为 每个对象都具有属性 属性表明了对象的一些基本特征 如大小 颜色 所处的位置等属性构成 一方面由对象所基于的类决定 另一方面也可为其定义新的属

5、性对象的每一种属性 都是与其它对象加以区别的特性 都具有一定的含义 并可赋予一定的值 属性值 对象各属性的具体内容指定可设置内容 由用户 设计者 设置不可设置内容 只读 12 事件 Event 事件 Event 是每个对象可用以识别和响应的某些行为和动作 可编写相应的程序代码对事件动作进行响应 事件是一种预先定义好的特定动作 被用户行为或系统事件激活 每个对象都可以对相关事件的动作进行识别和响应 在多数情况下 事件是由用户的交互行为产生的 不同对象能够识别的事件内容是不一致的 在VFP中 事件集合是固定的 由系统指定 用户不能进行扩充 即用户不能自己创建新事件 13 方法 Method 是对象

6、能够执行的一个操作流程方法是与对象相关联的过程 也称方法程序方法程序有系统提供的 也可由用户根据需要自己创建VFP方法也均有名称标识 通过名称使用例 release方法程序也往往与对象事件相关联方法实际上就是对象的内部过程 函数 每个类型的对象都有它自己的方法集 例如在命令按钮对象中 调用Move方法可以移动按钮的位置 与事件不同的是 方法可以由用户进行扩展 14 二 基类 基类 VFP系统提供的内部定义的类子类 引用VFP基类或其他子类建立的新类用户自定义类 与基类相似 由用户自定义 但无可视的表示形式 VFP基类 派生 子类 子类 子类 15 容器类 Containerclasses 是能

7、够包容其它类的基类容器类对象可以包含其它对象容器类对象可以作为所包含的对象的父对象控件类 Controlclasses 不能够包容其它类 但可以放在容器类中的基类控件类对象可以包含在容器中不能作为其它对象的父对象 容器类与控件类 16 VFP的29个基类 1 20为标准类 控件 控件箱中带 兰色字 容器类 其余为非容器类 控件类 17 容器类 18 基类的最小属性集 19 基类的最小事件集 20 三 处理对象 创建对象 基类定义的子类用户子定义类方式 编程可视化开发工具设计 对象 21 容器类 包含了一个 容器 基类控件类 包含了一个 控件 基类基于它们均可生成对象VFP中主要以表单 或表单集

8、 为最高容器层 其它基类对象可以在其中生成 成为被表单 或表单集 包容的对象 层层相生 层层包容 最终形成表单 或表单集 的对象群体 一个面向对象的程序就是由一组相关的对象群体以及它们的属性 事件 方法集合而成的整体 22 层次体系示意图 表单集 表单 容器 控件 23 1 引用对象 分类绝对引用和相对引用何时要引用对象当要设置或取得对象的某个属性的值时当要执行对象的某个方法事件时容器层次体系容器与容器中的控件是上下层次的关系一个应用程序的最高层次是各种活动表单或表单集 最低层次是一个非容器类控件对象或是一个不包含任何控件的容器类对象 24 表单集 表单集1 该对象的Name属性为FormSe

9、t1 中包含2个表单 Form1 和 Form2 表单 Form1 中包含2个文本框 1个选项按钮组 1个页框 页框中包含2个选项卡式页面Page1和Page2 页面 Page1 中包含1个表格 Grid1 表格中包含2个列控件对象 列控件又包括标头和文本框控件 25 绝对引用 从容器的最高层次引用对象 给出对象的绝对地址例 表单Form1对象 FormSet1 Form1表格的第一列中的文本框Text1对象 FormSet1 Form1 Pageframe1 page1 column1 Text1注意 引用时按层次关系指明关联对象名称 并用 隔开 绝对引用 26 相对引用 在容器层次中相对于

10、某个容器层次的引用相对引用通常运用于某个具体对象的事件处理代码或方法程序代码中 即在某个容器对象的事件处理代码或方法程序中对所包容的对象的引用 引用时可以直接使用其对象名相对引用时 所涉及到的一些关键字 表5 5 例 在文本框Text1中引用表单Form1 THISFORM或THIS PARENT 相对引用 27 相对引用对象时所用的关键字 28 2 设置对象属性 每个对象都有属性 可以对对象设置属性属性可以在设计时设置也可在运行时设置 但也有一些属性是只读的 设计时修改属性在 属性 窗口中进行程序代码中 用以下语法进行设置引用对象 属性 值例 绝对引用FormSet1 Form1 Text1

11、 Value DATE FormSet1 Form1 Text1 ForeColor RGB 0 0 0 FormSet1 Form1 Text1 BackColor RGB 192 192 192 FormSet1 Form1 Text1 FontName 黑体 29 引用一个对象的多个属性和方法 重要 如 withformset1 form1 text1 点不能放在此处 Value DATE ForeColor RGB 0 0 0 BackColor RGB 192 192 192 FontName 黑体 endwith引用容器中的多个对象 如 WithThisform txtXh bac

12、kcolor rgb 128 0 0 txtXm backcolor rgb 0 128 0 Endwith 30 3 调用对象的方法程序 方法程序是对象能够执行的一个操作 是和对象相联系的过程调用语法引用对象 方法程序1 释放表单 Thisform release2 显示表单Form1 并将焦点设置在文本框Text2上 FormSet1 Form1 showFormSet1 Form1 Text2 SetFocus3 有返回值的方法程序以圆括号结尾 如ApplicationObject Quit 4 如有参数传递给方法程序 该参数应放在括号中 31 方法实际上就是对象的内部过程或函数 每个类

13、型的对象都有它自己的方法集 例如在命令按钮对象中 调用Move方法可以移动按钮的位置 与事件不同的是 方法可以由用户进行扩展 表单对象的常用方法 Refresh 重画表单和控件 刷新表单中的所有值Show 显示表单Hide 隐藏表单Release 从内存中释放表单 32 4 对象对事件的响应 事件是对象识别的一个动作 用户可以编写相应的代码对此动作进行响应若对象的某个事件没有相关的程序代码 则该事件发生时 对象不会发生任何操作 VFP对象事件集合是固定的用户不能创建新的VFP对象事件 事件一般是由用户的交互方式触发的 如单击或双击鼠标 按下键盘上的键 也有些是被系统触发的 在某事件没有发生时

14、用户可以显式地调用与该事件相关的过程 如语句 this Pmand1 click 33 四 相关事件 每个对象都有与之相关的事件集合 对于已创建的多个对象 用户根据需要可以为某个或某些事件配置相应的事件处理代码 使得应用程序在运行过程中根据所发生的事件作出相应的处理 34 1 核心事件 核心事件集 表5 6 基类的事件集合是固定的 不能进行扩充 每个类都可识别固定的默认事件集合 它的最小事件集包括Init Destroy和Error事件 教材表5 6列出了VisualFoxPro中的核心事件集 这些事件适用于大多数的对象 35 表5 6核心事件集 36 在实际应用中 控件对象一般都被包含在容器

15、对象中 如命令按钮 文本框包含在表单中 页面包含在页框中等 那么当用户单击命令按钮时 是命令按钮的Click事件被触发 还是表单的Click事件被触发 或者是两个对象的Click事件都被触发 实际上 当某事件发生时 只有与事件相关联的最里层对象识别该事件 更高层的容器不识别这个事件 因此当用户单击命令按钮时 只有该命令按钮的Click事件被触发 而包含命令按钮的容器 表单 则不识别这个Click事件 即使该命令按钮没有与Click事件相关联的事件代码 而表单有自己的Click事件代码 也不会执行表单的事件代码 2 容器层次和类层次中的事件 37 例如 在图所示的表单中有一个命令按钮 表单设置了

16、Click事件和DblClick事件的处理代码 命令按钮仅设置了Click事件的处理代码 那么当用户单击命令按钮时 不会触发表单的Click事件 38 对于表格控件来说 表格包含列控件 列控件又包含标头和文本框控件 当事件发生时 只有与事件相关联的最里层对象识别该事件 更高层的容器不识别该事件 如图所示 39 例外 对于选项按钮组与命令按钮组来说 组中个别按钮如果没有编写事件处理代码 则当事件发生时将执行组事件的处理代码 例如 在如图所示的表单中有一个选项按钮组 设置Click事件处理代码 该选项按钮组中有二个选项按钮 选项按钮Option1有Click事件处理代码而选项按钮Option2无Click事件处理代码 则当用户单击Option1时执行与之相关联的事件代码 不执行按钮组的Click事件处理代码 但当用户单击Option2时执行按钮组的Click事件处理代码 40 基于事件驱动的编程技术不同于传统的过程化程序设计 程序的执行顺序不是在设计时确定的 而是取决于对象事件的顺序 有时一个用户动作只触发一个事件 而有些情况下会有多个事件接连发生 如包含多个对象的表单被启动运行的时候 这

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号