




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.3面向对象的程序设计基础面向对象的程序设计(OOP)概述类和对象概述基类处理对象事件模型面向对象的程序设计方法返回面向对象的程序设计(OOP)基本单位:类和对象重要特性:封装性、继承性和多态性开发方法:自底向上的功能综合开发过程:从“用什么做”到“要做什么”优点:系统化的程序设计方法特点:采用以对象为中心的问题求解方法,程序设计通过面向对象来实现类和对象类指的是具有相同结构、操作并遵守相同规则的一组对象,它刻画了对象的模板,它是一个具有相同行为的对象的抽象。对象是类的一个实例,包括了数据和过程。程序由一个或多个类组成。在程序运行时视需要创建该类的各个对象。类是静态概念,对象是动态概念。对象每个对象都具有属性以及与之相关的事件和方法,通过对象的属性、事件和方法来处理对象。属性
定义对象的特征或某一方面的行为,如大小、颜色、所处的位置等。事件
是由对象识别的一个动作,可以编写相应的代码,以对此动作进行响应。事件是一种预先定义好的特定动作,被用户或系统激活,每个对象都可以对事件的动作进行识别和响应。在多数情况下,事件是由用户的交互行为产生的
(用户不能创建新的事件)方法
是对象能够执行的一个操作。方法实际上就是对象的内部函数,每个类型的对象都有它自己的方法集。例如在命令按钮对象中,调用Move方法可以移动按钮的位置。与事件不同的是,方法可以由用户进行扩展。方法方法是对象能够执行的一个操作。在VFP中,系统提供了一些方法,其程序是一些默认过程。1.AddItem方法是组合框或列表框中添加一个新数据项,并且可以指定数据项索引。2.
AddObject方法是在运行时向容器对象中添加对象。3.Clear方法是清除组合框或列表框中的内容。4.Refresh方法是重画表单或控件,并刷新所有值。5.Setall方法是为容器对象中的控件或某类控件指定属性设置。6.SetFocus方法是为一个控件指定焦点7.Show方法是显示一个表单,并且确定是模式表单还是无模式表单。
对象的特性对象是面向对象式系统中运行时刻的基本成分,它是属性与行为(即数据与操作)以及与其他对象接口的封装体。在VFP中,包含在应用程序中的表单及各种控件都是对象。对象是包含数据和代码的实体。在程序设计中,用属性、事件和方法来说明对象,属性就是对象的数据,事件和方法则是对象中包含的代码。返回类的分类基类(baseclass)——VFP系统提供的内部定义的类,可用做其他用户自定义类的基础。(如表单和所有控件)子类(Subclass)——以其他类定义为起点,为某一种对象所建立的新类。子类将继承任何对父类(即子类所基于的类)所做的修改。用户自定义类——与基类相似,但由用户定义,并且可用来派生子类。这种类没有可视化表示形式。基类的分类容器类和控件类(也称为非容器类)。容器类是包含其他容器的基类。将容器类的对象加入表单后,无论在设计时,还是在运行时,均可将该容器类的对象作为一个整体进行操作,也可以对其包含的对象进行处理。例如,表单集(表单、工具栏),选项按纽组(选项按纽)。控件类是可以包含在其他容器类中的基类。例如,命令按钮和文本框就属于控件类。
基类容器、编辑框、列表框、标签、控件、文本框、组合框、图像、表单集、微调框、复选框、形状、表单、表格、选项按钮组、线条、工具栏、标头*、选项按钮*、分隔符*、自定义、列*、计时器、命令按钮组、页框、OLE绑定型控件、命令按钮、页面*、OLE容器控件注:*表示该类是容器类的集成部分,在类设计器中不能基于他们创建子类基类的最小属性集Class 该类属于何种类型BaseClass 该类由何种基类派生而来ClassLibrary 该类属于哪种类库ParentClass 对象所基于的类BZ基类的最小事件集Init 当对象创建时激活Destroy当对象从内存中释放时激活Error当类中的事件或方法程序运行中发生错误时激活返回处理对象一、引用对象二、设置对象属性三、调用对象的方法程序四、对事件的响应返回引用对象绝对引用
绝对引用是指从容器的最高层次引用对象,给出对象的绝对地址Formset1.Form1.Pageframe1.Page1.Grid1.Column1.Text1相对引用相对引用是指在容器层次中相对于某个容器层次的引用。
相对引用通常应用于某个对象的事件处理代码或方法程序代码中。Form1层:
Pageframe1.Page1.Grid1.Column1.Text1Form1中Text2层:thisform.Pageframe1.Page1.Grid1.Column1.Text1Page2层:
this.parent.Page1.Grid1.Column1.Text1引用页框的Page1页面中表格的Column1列中的Text1文本框?相对引用的关键字This该对象本身Thisform该对象所在的表单Thisformset该对象所在的表单集Parent包含该对象的直接容器_Screen屏幕的对象例如:对当前活动表单中的当前活动控件的应用:_SCREEN.ActiveForm.ActiveControl返回设置对象属性对象的属性可以在设计时设置,也可在运行时设置,但也有些属性是只读的,即不可更改。设置的方法:1、采用可视化的方法来对象设计时,在“属性”窗口中进行对象属性的设计。
2、在程序代码中设置。其格式:引用对象.属性=值如:thisform.Text1.Value=DATE()thisform.Text1.ForeColor=RGB(255,0,255)thisform.Text1.BackColor=RGB(192,192,192)thisform.Text1.FontName=“黑体”对同一对象多个属性的设置采用WITH…ENDWITH语句简化。如:
WITHthisform.Text1.Value=DATE().ForeColor=RGB(255,0,255).BackColor=RGB(192,192,192).FontName=“黑体”ENDWITH返回调用对象的方法程序对象的方法需要显式调用,且可在应用程序的任何地方。调用方法程序的语法为:
引用对象.方法程序调用hide方法来隐藏表单:thisform.hide从内存中释放表单:thisform.Release刷新表单:thisform.Refresh设置输入焦点在文本框上:thisform.text1.SetFocus对象能够执行的一个操作,是和对象相联系的过程。调用对象的方法程序如果在调用方法时需要传递参数,应该将参数包括在方法名后的圆括号中。如果是调用方法后有返回值,即使没有传递参数,在方法名后也要加圆括号。示例如下:
THIS.Move(100,50)&&传递参数给方法THIS.Caption=THISFORM.GetNewCaption()&&方法的返回值作为对象的新标题
返回对事件的响应当对象的事件发生时,该事件的过程代码就被自动执行。如果事件没有与之相关的处理程序,则事件发生时不会发生任何操作。例如:用户单击命令按钮,将产生一个Click事件,命令按钮的Click事件代码被执行。需要特别强调说明:事件一般是由用户的交互方式触发的,如单击或双击鼠标,按下键盘上的键,也有些是被系统触发的,象计时器控制中的Timer事件。在没有事件发生时,用户也可以显式地调用与事件相关的过程,如语句:
thisformset.form1.Activate将使Activate事件代码被执行,但并不激活这个表单。返回事件模型核心事件VFP提供了比较全面的事件处理机制,使得程序员能够较容易地为用户设计基于事件驱动的、内容更丰富的交互环境。每一个类都有自己的事件集合,不同的类有不同的事件种类,如计时器具有Timer事件,而其它的类则没有,但也有一些事件是大多数类都具有的,下面列出一些通常使用到的、大多数类都具有的VFP核心事件:VFP的核心事件集Load:表单或表单集被加载到内存中Unload:从内存中释放表单和表单集Init:创建对象Destroy:从内存中释放对象Click:用户使用主鼠标按钮单击对象DblClick:用户使用主鼠标按钮双击对象RightClick:用户使用副鼠标按钮单击对象GotFocus:对象接受焦点,由用户动作引起,如按【Tab】键或单击,或者在代码中使用SetFocus方法VFP的核心事件集Lostfocus:对象失去焦点,由用户动作引起,如按【Tab】键或单击,或者在代码中使用SetFocus方法KeyPress:用户按下或释放键MouseDown:当鼠标指针停在一个对象上时,用户按下鼠标按钮。MouseMove:用户在对象上移动鼠标MouseUp:当鼠标指针停在一个对象上时,用户释放鼠标按钮。InteractiveChange:以交互方式改变对象值ProgrammaticChange:以编程方式改变对象值容器层次与类层次中的事件为控件编写事件代码应注意的原则:1、容器不处理所包含的控件相关联事件;2、若没有与控件相关联的事件代码,vfp将在更高的类层次上检查是否有与此事件相关联的控件代码。事件激发的顺序基于事件驱动的编程技术不同于传统的过程化程序设计,程序的执行顺序不是在设计时确定的,而是取决于事件的顺序。有时一个用户动作只触发一个事件,而有些情况下会有多个事件接连发生,如包含多个对象的表单被启动运行的时候,这样的情况下,了解事件发生的顺序是很重要的,否则就无法确定该往哪个事件中写入代码。P156表5-7常用的事件鼠标事件:click事件、dbclick事件、MouseMove事件、dragdrop事件焦点事件:
gotfocus事件、lostfocus事件、when事件、valid事件表单事件:
load事件、unload事件、activate事件其他事件:
timer事件、init事件、destroy事件、error事件事件驱动和事件循环在vfp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件开发技术服务合同
- 文物数字化保护与数字化展览馆建设创新应用报告
- 资料不定期承包合同
- 2025年家电配线组件合作协议书
- 化工企业项目质量月工作总结范文
- 心脏病康复治疗计划
- 十一国庆高速公路安全保障措施
- 2025年室内平面布置图设计试题
- 一年级道德与法治班级教学计划
- 数学核心素养引导下的课堂互动心得体会
- 2025-2031年中国汽车测试设备行业市场深度研究及投资策略研究报告
- 2025年综合类-税法-增值税法历年真题摘选带答案(5卷100题)
- 2025年消防工程师继续教育考试题目带答案
- 【西安】2025年陕西西安市事业单位公开招聘高层次及紧缺特殊专业人才433人笔试历年典型考题及考点剖析附带答案详解
- 游戏账号买卖平台交易协议
- 2025秋三年级上册语文上课课件 9 犟龟
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 2024新人教版初中英语单词表汇总(七-九年级)中考复习必背
- 《华为基本法》
- 超大有轨弧形平面双开钢闸门制造与安装的控制要点
- 许晋—轻轻松松做中层
评论
0/150
提交评论