第六章 对象模型_第1页
第六章 对象模型_第2页
第六章 对象模型_第3页
第六章 对象模型_第4页
第六章 对象模型_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第6章对象模型与事件模型,6.1面向对象程序设计概述,结构化程序设计和面向对象程序设计的特点:结构化程序设计用功能分解、面向过程的方法以解决问题。面向对象程序设计用消息传递机制、类和对象的设计,通过事件驱动实现功能。基于问题对象的自底向上的功能综合。,一、类(CLASS),将具有相同的结构、操作,并遵守相同规则的对象聚合在一起,这组对象称为类。类的四大特征:继承性:子类延用父类特征的能力。多态性:允许相关的对象对同一消息做出不同反应。封装性:说明包含和隐藏对象信息(如内部数据结构和代码)的能力。使操作对象的内部复杂性与应用程序的其它部分隔离开来。抽象性:忽略对象的内部细节,使用户集中精力来使用对象,而不必了解为什么要这样使用。,基类(BASSCLASS),VFP系统提供的类叫基类。由其他类派生的类叫子类。父类:派生出其子类的类。可以是基类,也可是基类的子类。VFP的基类有两种:容器类和控件类。容器类:包容其他类的基类。将容器类的对象加入表单后,无论在设计时还是在运行时,均可以将该容器类的对象作为一个整体进行操作,也可以分别对其包容的对象处理。控件类(非容器类):可以包含在容器类中的基类,不能容纳其它类,或者其组件不能被单独修改或操作。,容器类:,表单集(Formset)表单(Form)容器(Container)页框(PageFrame)页面*(Page)表格(Grid)表格列*(Column)命令按钮组(CommandGroup)选项按钮组(OptionGroup)工具栏(ToolBar),控件类:,标签(Label)、文本框(TextBox)编辑框(EditBox)、列表框(ListBox)组合框(ComboBox)、复选框(CheckBox)微调框(Spinner)、计时器(Timer)命令按钮(CommandButton)、选项按钮*(OptionButton)控件(Control)、OLE绑定型控件(OLEBoundControl)OLE容器控件(OLEContainerControl)、形状(Shape)线条(Line)、图像(Image)分隔符*(Separator)、标头*(Header)自定义(Custom)、数据环境(DataEnvironment)说明:*表示该类是父容器的集成部分,在类设计中不能子类化。,二、对象(OBJECT),对象是类的一个实例,包括了数据和过程(操作),是动态概念。对象在VFP中主要指表单、表单集及各种控件。表单:用户看到的各种窗口和对话框。表单集:包含一个或多个表单的集合。控件:放在表单上用以显示数据、执行操作的一种图形化对象。每个对象都有属性和方法,并可以通过事件驱动它。,属性(PROPERTY),每个对象都有属性。属性定义了对象某一方面的的特征。属性由对象所基于的类决定。用户可自定义属性。属性值在设计时或在运行时进行设置。基类的最小属性集:Class:该类属于何种类型。BaseClass:该类的基类。ClassLibray:该类从属于的类库文件。ParentClass:该类的父类。,方法(METHOD),对象能够执行的一个操作。是与对象相关联的过程或函数。用户可自定义方法程序。事件可以具有与之相关联的方法程序。当事件被激活时,相关的方法代码被执行。方法程序也可以独立于事件而单独存在,但它在系统中要被显式地调用。,事件(EVENT),对象可识别的一个动作。用户不能自定义事件一般由用户或系统激活。通过编写事件过程代码来响应事件。基类的最小事件集:Init:当对象创建的时候激活。Destroy:当对象从内存中释放时激活。Error:当事件或方法程序中出现错误时激活。,6.2处理对象,引用对象必须清楚对象的容器层次关系和对象的名字。各个对象之间、对象与属性之间用“”进行分隔。绝对引用:从容器的最高层次引用对象,给出对象的绝对地址。如:ThisFormset.Form1.Command1相对引用:在容器层次中相对于某个容器的引用。通常运用于某个对象的事件处理代码或方法程序代码中。如:This.Parent.Command2,相对引用所用的关键字,Parent:当前对象的直接容器。This:当前对象。ThisForm:当前对象所在的表单。ThisFormSet:当前对象所在的表单集。ActiveForm:当前活动表单。ActivePage:页框中活动的页面。ActiveControl:当前表单中有焦点的控件。ActiveColumn:当前表格中包含活动单元格的列。,系统变量_SCREEN表示屏幕对象。,设置对象的属性,设计时设置:即在“属性”窗口中设置对象属性。运行时设置:引用对象.属性名=值例:ThisForm.Text1.Value=DATE()ThisForm.Text1.ForeColor=RGB(0,0,0)ThisForm.Text1.BackColor=RGB(0,192,192)ThisForm.Text1.FontName=“黑体”,设置对象的属性,利用WITHENDWITH简化语句WITHThisForm.Text1.Value=DATE().ForeColor=RGB(0,0,0).BackColor=RGB(192,192,192).FontName=“黑体”ENDWITH,调用方法程序,可以在应用程序的任何地方调用已存在对象的方法程序。语法:引用对象.方法程序名例:ThisFormSet.Form1.ShowThisFormSet.Form1.Text2.SetFocus对于有返回值的方法程序必须以圆括号结尾(类似于函数调用),如果有参数传递给方法程序,则参数要放在括号里。,6.3事件及方法总结,一、事件驱动模型在面向对象的程序设计中,程序代码大多是为对象或对象的某些事件编写的事件处理程序代码,程序代码的执行总是由某个事件的发生而引起,即采用面向对象的程序设计方法设计的应用程序,其功能的实现是由事件驱动的。对于由事件驱动的应用程序来说,用户可以通过引发不同的事件而安排程序执行的顺序。1、VFP的最小事件集InitDestroyError,2、VFP事件处理机制的两条一般性原则VFP的对象有两种类型的层次关系:容器层次和类层次例如:表单Form1上有一个基于Commandbutton基类的子类Tuichu产生的对象Command1,类层次,容器层次,(容器)(控件),ThisForm.Command1(对象),Commandbutton(基类),Tuichu(子类),原则如下:,(1)容器不处理与所包含的控件相关联的事件。用户以任何一种方式与对象交互时,每个对象都独立地接收自己的事件。例如单击表单上的某个命令按钮时,只会触发该命令按钮的Click事件,而不会触发表单的Click事件。如果没有为该命令按钮的Click事件编写程序代码,则单击该命令按钮时,不进行任何处理。,(2)对选项按钮组和命令按钮组,如果组中个别按钮没有编写事件代码,当该按钮该事件触发时,将执行组的相关事件代码。(3)当连续发生一系列事件时,若起始事件与某个控件相关联,那么整个事件队列都属于该控件。例如,在一个命令按钮上按下鼠标左键,并拖动鼠标到表单上,产生的Click、MouseDown、MouseMove、MouseUp等事件均与该命令按钮相关联。,3、主要事件触发顺序(1)装载阶段(Load事件)表单集Load表单Load(2)对象生成阶段(Init事件)由内到外触发:各控件Init表单Init表单集Init(3)交互式操作阶段Activate、KeyPress、Click、RightClick、DblClick、Timer、InterActiveChange、ProgrammaticChange、MouseDown、MouseMove、MouseUp、Error、Deactivate、When、GotFocus、Valid、LostFocus,其中对象焦点发生变化的相关事件的触发顺序为:When在控件接收焦点之前发生GotFocus当对象接收到焦点时发生Valid在控件失去焦点之前发生LostFocus当对象失去焦点时发生,(4)对象释放阶段(Destroy事件)由外到内触发:表单集Destroy表单Destroy各控件Destroy(5)卸载阶段(UnLoad事件)表单UnLoad表单集UnLoad,4、控制事件循环利用VFP进行应用程序设计时,必须创建事件循环。READEVENTS命令用于建立事件循环。通常出现在应用程序的主程序中或主菜单的清理代码中。CLEAREVENTS命令用于终止事件循环。说明:中止事件循环后,继续去执行READEVENTS命令下面的那一行命令代码。,二、常用方法,AddItem方法:在组合框或列表框中添加一个新列表项。Hide方法:隐藏表单、表单集或工具栏。Refresh方法:重画表单或控件,并刷新所有值。Release方法:从内存中释放表单集或表单。RemoveItem方法:从组合框或列表框中移去一列表项。SetAll方法:为容器对象中的所有控件或某类控件指定一个属性设置。SetFocus方法:为一个控件指定焦点。Show方法:显示一个表单,使表单成为活动表单。,(1)用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论