




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第5 5章章 对象模型对象模型和和事件模型事件模型 *1苏州大学信息技术学院计算机工程系 徐云龙 VFP支持两种开发模型:面向过程和面向对 象 结构化程序设计(面向过程) 本质:功能设计(以功能为主进行设计) 方法:自顶向下、功能分解。 优点:系统结构性强、便于设计和理解 缺点:但各模块间关系紧密,一旦功能需求变 动导致维护困难 6.1 面向对象的程序设计概述 2 6.1.1 面向对象的程序设计方法(OOP) 方法:把世间万物都看成对象。从内部 结构上模拟客观世界。 每个对象都有自己的属性和方法。能对 消息做出反应。 程序就是一组对象,对象之间通过发送 消息互相通知做什么。 6.1 面向对象的程序设计概述 3 面向过程和面向对象的区别: 以计算机模拟猫捉老鼠的过程为例。 面向过程的做法: 程序员必须通过编程告诉计算机猫抓老鼠的每一个 具体动作,如匍匐,加速,咬住等动作。 面向对象的做法: 程序员给猫发一个消息“老鼠出现了” 。猫就会自 动去抓老鼠。 猫如何抓老鼠的动作还是得由程序员编码来实现,只 不 过代码的组织方式大不相同。面向对象的方法更符合 人 的思维习惯。 6.1 面向对象的程序设计概述 4 6.1.2 类和对象 6.1.2 类和对象的区别 F类(CLASS,类型):定义了对象特征以及对象外 观和行为的模板,它刻划了一组具有共同特性 的对象。 F对象:是类的一个实例 OOP中,程序由一个或多个类组成,在程序运 行时视需要创建该类的各个对象(实例) F类是静态概念,对象是动态概念 对象是基于某种类所创建的实例,包括了数据和过程 。 例:猫可以定义为一个类,具有颜色,品种属性,具 有 抓老鼠的方法。 某个猫对象:白色波斯猫。 6.1 面向对象的程序设计概述 5 1. 类 基类:VFP系统提供的内部定义的类,可提供给用 户用于自定义类的基础(例如:表单、控件) 子类:是以其它类定义为起点,为某一种对象所建 立的新类。子类将继承任何对父类所做的修改 6.1 面向对象的程序设计概述 6 F对象(Object) 每个对象都具有属性及与之相关的事件和 方法 6.1 面向对象的程序设计概述 7 F属性(Property) : 定义对象的特征 -对象的属性由对象所基于的类决定 -如猫的颜色,品种 F方法(Method) :是对象能够执行的一个操作 方法是与对象相关联的过程,也称方法程序 方法可由用户自己创建 例:SetColor()设置猫的颜色。(主人将它染发了) F事件(Event) :对象可对该事件做出反应 可编写相应的代码,对动作进行响应 事件可由用户的动作、程序代码或系统产生 例:对于老鼠出现这个事件,猫能做出反应。 6.1 面向对象的程序设计概述 8 6.2 基 类 VFP 基类 派生子类 子类 子类 9 6.2.1 VFP的基类 VFP提供的所有基类见p151 表5-1 说明: 该表中加*部分的类,只能使用,不能为它们创 建子类。 基类可以分为容器类和控件类两种类型。 容器类,见表5-2,其余的都是控件类。 10 基类的最小事件集(重要) 事 件说 明 Init当对象创建时激活 Destroy当对象从内存中释放时激活 Error当类中的事件或方法程序运行中发生错误时激活 激发顺序一般为:Init Error Destroy 11 基类的最小属性集 属性说明 Class该类属于何种类型 Baseclass 该类由何种基类派生而来 (Form,commandbutton或custom等) Classlibrary该类从属于何种类库 parentclass 对象所基于的类。若该类直接由VFP基类 派生而来,则Parentclass属性值与baseclass 属性值相同 12 F 容器类(Container classes)是包容其他类 的基类 容器可以包含其它对象 容器可以作为所包含的对象的父对象 允许访问包含的对象 F 控件类(Control classes)是可以包含在容 器类中的基类 控件对象可以包含在容器中 不能作为其它对象的父对象 F VFP的对象可分为容器对象和控件对 象 6.2.2 容器类与控件类 13 F6.3.1 引用对象 F6.3.2 设置对象的属性 F6.3.3 调用对象的方法程序 F6.3.4 对象对事件的响应 6.3 处理对象 14 6.3.1 引用对象 F何时要引用对象 当要设置或取得对象的某个属性的值时 当要执行对象的某个方法事件时 F容器层次体系 容器与容器中的控件是上下层次的关系 一个应用程序的最高层次是 _screen或_VFP, 最低层次是一个非容器类控件或是一个不包含 任何控件的容器类控件 例如:_screen.caption=“我的表单” 6.3 处理对象 15 层次体系示意图 表 单 集 表 单 容 器 控 件 16 表单集“表单集1”(该对象的Name属性为FormSet1)中包含2个表单“Form1”和 “Form2”;表单“Form1”中包含2个文本框、1个选项按钮组、1个页框;页框中 包含2个选项卡式页面Page1和Page2;页面“Page1”中包含1个表格“Grid1”;表格 中包含2个列控件对象;列控件又包括标头和文本框控件。 17 F绝对引用 从容器的最高层次引用对象,给出对象的绝对地址 例:引用表单Form1对象:FormSet1.Form1 引用表格的第一列中的文本框Text1对象: FormSet1.Form1.Pageframe1.Page1.Grid1.Column1.Text1 F相对引用 在容器层次中相对于某个容器层次的引用 相对引用通常运用于某个对象的事件处理代码或方 法程序代码中,即在某个容器对象的事件处理代码 或方法程序中对所包容的对象的引用,引用时可以 直接使用其对象名 相对引用时,所涉及到的一些关键字(P153表5-5 ) F类似于文件系统中的绝对路径和相对路径 18 关 键 字含 义 ActiveForm当前活动表单 ActivePage当前活动表单中的活动页面 ActiveControl当前活动表单中具有焦点的控件 PARENT 当前对象的直接容器 THIS 当前对象 THISFORM 包含当前对象的表单 THISFORMSET 包含当前对象的表单集 相对引用对象时所用的关键字(重要) 19 6.3.2 设置对象属性 每个对象都有属性,可以为对象设置属性 属性可以在设计时设置也可在运行时设置( 如caption) 设计时修改属性在“属性”窗口中进行 程序代码中,用以下语法进行设置 对象名称 . 属性 = 值 例:绝对引用 FormSet1.Form1.Text1.Value=DATE() FormSet1.Form1.Text1.ForeColor=RGB(0,0,0)黑 FormSet1.Form1.Text1.FontName=“黑体” 20 引用一个对象的多个属性和方法(引用一个对象的多个属性和方法(重要重要) 如:with formset1.form1.text1 .Value=DATE() .ForeColor=RGB(0,0,0) .BackColor=RGB(192,192,192) .FontName=“黑体” endwith 引用容器中的多个对象引用容器中的多个对象 如:With Thisform .txtXh.backcolor=rgb(128,0,0) .txtXm.backcolor=rgb(0,128,0) Endwith 21 6.3.3 调用对象的方法程序 F方法程序是对象能够执行的一个操作,是和 对象相联系的过程 F调用语法 . 例1.释放表单:Thisform.release 例2.显示表单Form1,并将焦点设置在文本 框Text2上: FormSet1.Form1.show FormSet1.Form1.Text2.SetFocus F有返回值的方法程序以圆括号结尾 22 6.3.4 对象对事件的响应 事件是对对象识别的一个动作,可以编写相应的 代码对此动作进行响应 用户不能用其他的程序设计方法产生其事件,但 可以调用与这些事件相关的过程 常用的事件类 u鼠标事件 u键盘事件 u表单事件 u控件焦点事件 u数据环境事件 常用事件和方法的详细讲解留到设计表单时再讲常用事件和方法的详细讲解留到设计表单时再讲 。 23 6.4 相关事件 F核心事件集(表5-6) 6.4.1 核心事件 这些事件适用于大多数的对象(控件) 24 表6-6 核心事件集 事件事件被激发后的动作 Load表单或表单集被加载到内存中 Unload从内存中释放表单或表单集 Init创建对象 Destroy从内存中释放对象 Click用户使用主鼠标按钮单击对象 Dblclick用户使用主鼠标按钮双击对象 Rightclick用户使用辅鼠标按钮单击对象 Gotfocus对象接收焦点,由用户动作引起 Lostfocus对象失去焦点,由用户动作引起 Keypress用户按下或释放键 Mousedown当鼠标指针停在一个对象上时,用 户按下鼠标按钮 Mousemove用户在对象上移动鼠标 Mouseup当鼠标指针停在一个对象上时,用 户释放鼠标按钮 interactivechange以交互方式改变对象值 programmaticchange以编程方式改变对象值 25 6.4 相关事件 问题:容器和它包含的控件都设置了某事件的响 应代码,系统如何处理这个事件。 为控件编写事件的处理代码时,应注意两条原则 : (1)容器不处理与所包含的控件相关联的事件 (2)如果没有与控件相关联的事件代码,Visual FoxPro将在类层次的更高层上检查是否有与此 事件相关联的控件代码 6.4. 2 容器层次事件和类层次中的事件 26 6.4 相关事件 6.4. 2 容器层次事件和类层次中的事件 例外:对于选项按钮组与命令按钮组来说,组中个别按钮如 果没有编写事件处理代码,则当事件发生时将执行组事件的 处理代码。例如,在如图6-4所示的表单中有一个选项按钮组 (设置Click事件处理代码),该选项按钮组中有二个选项按 钮(选项按钮Option1有Click事件处理代码而选项按钮Option2 无Click事件处理代码),则当用户单击Option1时执行与之相 关联的事件代码,不执行按钮组的Click事件处理代码,但当 用户单击Option2时执行按钮组的Click事件处理代码。 (p128 图6-4 按钮组中的事件代码.scx) 27 6.4 相关事件 F问题:程序的运行伴随着一系列的事件的产生。 如何查看这些事件的发生顺序。 FP156 表5-7 vfp中事件顺序,交互事件未列出 F*对于表单,事件的激发顺序为: Load Init Activate Destroy Unload 6.4. 3 事件激发的顺序 28 6.4.4 常用的事件 F鼠标事件 FMouseMove事件 FClick事件 FRightClick事件 FDblClick事件 29 2. 键盘事件 FKeyPress事件 30 3. 改变控件内容的事件 FInteractiveChange事件 在使用鼠标或键盘更改控件的值 时发生 31 4. 焦点事件 F焦点(Focus)用以指出当前被操作的对象 FGotFocus事件 用任何方法使对象接受到焦点时发生 PROCEDURE Object.GotFocus LPARAMETERS nIndex FLostFocus事件 当某个对象失去焦点时发生 32 5. 表单事件 FLoad事件(表单和表单集) 创建对象之前发生 Load事件发生在Activate和GotFocus事件之前 FUnLoad事件(表单和表单集) 在对象被释放时发生 Unload事件发生在Destroy事件和所有包含的对象被 释放之后 33 7. 其他事件 FTimer事件 (用于计时器控件) 当经过Interval属性中指定的毫秒数时发生 FInit事件 在创建对象时发生 FDestroy事件 在释放一个对象实例时发生 FError事件 当某方法运行出错时发生 34 6.4.5 事件驱动和事件循环 F事件驱动程序代码的执行总是由某个事 件的发生而引发,执行顺序无法预料,而面向过 程则是顺序执行。Message-based,event-driven, 也是面向对象编程模型采用的方法。 F*利用VFP进行应用程序设计时,必须创建事 件循环(event loop) READ EVENTS命令建立事件循环 CLEAR EVENTS命令终止事件循环 若陷入了死循环,可以按ESC键强制中断 程序的运行。 35 6.5 方法 F方法(程序)是对象能够执行的一个操作,由系 统提供默认的实现代码。 F用户可以调用这些方法程序。也可以为这些方法 编写自己的实现代码。 F使用方法程序可以减少我们写代码的数量。 36 常用的方法 1. AddItem方法 在组合框或列表框中添加一个新数据项,并且可以 指定数据项索引 2. RemoveItem方法 从组合框或列表框中移去一项 3. Release方法 Release 方法是从内存中释放表单集或表单。 其调用语法为:thisform.Release 37 常用的方法 4. Hide/Show方法 Hide 方法是通过把 Visible 属性设置为“假”(.F.),隐藏表 单、表单集或工具栏。 其调用语法为:Object.Hide 表单被隐藏后,用户不可访问它的控件,但是这些控件 仍然可用,并且可以在代码中访问它们。虽然这些控件 是不可见的,但这些保存在不可见表单中的控件仍然保 留自己的 Visible 属性设置值。 5. Quit方法 Quit方法是结束一个VFP 实例,返回到创建VFP 实例的应用程序。 其调用语法为:ApplicationObject.Quit( ) 38 常用的方法 6. SetALL方法 SetAll 方法是为容器对象中的所有控件或某类控 件指定一个属性设置。 其调用语法为:Container.SetAll(cProperty, Value , cClass) 参数cProperty要设置的属性。Value属性的新值 ,Value 的数据类型取决于要设置的属性。 cClass指定类名 39 小结 FOOP的意思:面向对象程序设计 F类和对象的区别: F对象具有:属性、方法、事件。 F基类分为两种类型:容器类和控件类 F基类的最小事件集和最小属性集 F相对引用时常用的关键字 F事件激发的顺序 F建立事件循环和中止事件循环 的命令 40 作业 F自己做在书上! 41 考过的等级考试考题 1. 类( class )是面向对象程序设计的核 心。类具有许多特点,如抽象性、封装 性、继承性等,其中 _ 是指包含 和隐藏对象信息(如内部数据结构和代 码)的能力,使操作对象的内部复杂性 与应用程序隔离开来。 42 2. Visual FoxPro系统提供的基类都有最小 事件集(Destroy 、Error、 Init)。从事 件的激发顺序看, 最小事件集中 事件是最后激发的。 3. 在事件代码中相对引用当前表单集的 关键字是 _ 。 。 43 F4. 假定表单(frm2)上有一个文本框对象 text1和一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 账单分期专业知识培训课件
- 2025年度新型石材交易合同范本
- 2025版食品运输合同范本
- 2025办公室文员办公自动化设备节能降耗合同
- 2025年度保险业保险科技应用咨询服务合同模板
- 2025年橱柜智能化改造与购销合同
- 2025版高速公路土方分包劳务合同模板
- 2025彩砖新材料研发与应用采购合同
- 2025年度物流行业司机聘用合同示范范本
- 2025年度高端住宅小区车位租赁服务合同
- 大学数学《实变函数》电子教案
- 高等数学绪论讲解课件
- 神经外科常见疾病的护理课件
- 科技论文写作与文献检索-1课件
- 第二单元 劳动最光荣 课件32张 统编版高中语文必修上册
- 优秀班主任的修炼手册 课件(共34张ppt)
- 部编人教版三年级道德与法治上册全册课件
- 唱出好心情课件
- 高三开学教师大会PPT
- 媒体发稿推广合作协议模版
- 汽车底盘构造与维修课件(全)全书教学教程完整版电子教案最全幻灯片
评论
0/150
提交评论