[IT认证]精编vfp教程 第6章.ppt

上传人:音乐台 文档编号:1995492 上传时间:2019-01-29 格式:PPT 页数:37 大小:249KB
返回 下载 相关 举报
[IT认证]精编vfp教程 第6章.ppt_第1页
第1页 / 共37页
[IT认证]精编vfp教程 第6章.ppt_第2页
第2页 / 共37页
[IT认证]精编vfp教程 第6章.ppt_第3页
第3页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[IT认证]精编vfp教程 第6章.ppt》由会员分享,可在线阅读,更多相关《[IT认证]精编vfp教程 第6章.ppt(37页珍藏版)》请在三一文库上搜索。

1、程序设计语言VFP,电子与信息工程学院,第六章 对象模型与事件模型,6.1 面向对象的程序设计概述,VFP支持 结构化程序设计 面向对象的程序设计(OOP),6.1.1 面向对象的程序设计方法,结构化程序设计方法 本质:功能设计,自顶而下,功能分解,从外部功能上模拟客观世界 优点:结构清晰,便于设计和理解 过程:做什么如何做,例:如何完成装修房屋的工作?,电买电线、开关完成布线 水买水管、洁具、瓷砖安装水管、铺瓷 砖、安装洁具 木买木材做家具买地板铺地板 漆买油漆漆家具、漆地板 每一个工序,都必须了解细节,比如买什么样的材料,做家具时,要把板子做成多大,哪一块木板和哪一块木板要钉再一起,结果房

2、主变成了各工种的全才 程序员:按顺序做所有的事,面向对象的程序设计,本质:类和对象的综合,自底向上,从内部结构上模拟客观世界 优点:简化程序设计,提高程序代码的重用性 过程:用什么做要做什么 (类、对象) (具体去解决某一个任务),例:如何完成装修房屋的工作?,用什么做?电工、水工、瓦匠、木工、漆匠(类) 需要 找到某个电工、水工、瓦匠、木工、漆匠(对象) 要做什么? 用户自己决定,要达到什么效果 只要从类中生成对象,告诉对象要做的事,房主不必操心各工种的顺序,由各对象自己去协调;不必关心细节,使用什么牌子的洁具、什么品种的油漆 程序员:使用定义好的类,达到什么效果, 不用管发生了什么事,如何

3、处理!,6.1.2 类和对象,类(CLASS) 定义了对象特征以及对象外观和行为的模板, 它刻划了一组具有共同特性的对象。 对象(OBJECT) 是类的一个实例,包括了数据和过程(操作) 比较: 类是静态的概念,对象是动态的概念 类是抽象的,具有固定的特征; 对象是具体的,不同的对象具有不同的特征和行为,类的分类,从提供者的角度 基类(base class):VFP系统类 用户自定义类(user-defined class):由用户定义的类,可派生子类 从层次角度 父类:子类所基于的类 子类(subclass):以其他类定义为起点,为某一种对象所建立的新类。 子类将继承对父类的所有修改,类的层

4、次举例,类的特点,继承性:子类延用父类特征的能力,父类特征发生改变子类将继承新特征 作为有翅类子类的蝴蝶有翅膀 多态性:关联的类包含同名的方法程序,但方法程序的内容不同 相同的操作可以作用于多种类型对象上并获得不同的结果,从而增强了系统的灵活性和扩展性 例:教师.上课 学生.上课 相关联对象同时包含Minus(A,B)完成相加,但参数不同,可以是字符型、数值型、日期型,类的特点,封装性:包含和隐藏对象信息,如内部数据结构和代码的能力 将操作对象的内部复杂性与应用程序的其他部分隔离开来。 例:电话,只要知道如何使用即可,具体实现(电路)隐藏再内部 封装和隐藏是面向对象技术的核心,使软件具有很好的

5、模块性 抽象性:提取一个类和对象与众不同的特征, 而不对该类或对象的所有信息进行处理, 忽略对象的内部细节,集中于对象的特性,对 象,每个对象都有属性,以及与之相关的事件和方法,通过它们来处理对象 可以新建属性和方法 事件集固定的,不能新建事件 对象是面向对象式系统中运行时刻的基本成份,它是属性与行为(即数据与操作)以及与其他对象的接口的封装体。,对象的属性,对象的特征及某一方面的行为(状态) 汽车 颜色、载重 停、行状态 电话 颜色、大小 拿起、挂上状态 来源:所基于的类的属性、定义的新属性 设置: 设计阶段(属性窗口) 运行阶段(代码 对象.属性=值) 有些属性不能进行设置,仅是只读(表单

6、集的表单数),对象的事件,对象可以识别和响应的动作,可以编写代码对动作进行响应, 来源:事先定义好的动作(事件集合固定),不能创建新事件 产生:外界对本对象施加动作 用户动作 例:电话 提话筒,放话筒 程序代码 或 系统,对象的方法,能干什么? 在一个对象中,说明如何去完成任务的代码(过程、函数) 来源:系统定义、用户新建 分类: 事件相关的(事件处理程序) 与事件同名 与事件无关的 (在系统中显式调用),62 基类,基类(系统定义类) 最小属性集 class baseclass classlibary parentclass 最小事件集 init destroy error 分类: 运行 容

7、器类:包容其他类的基类 容器对象 控件类:可以包含在容器类中的基类 控件对象 讲完第八章再复习一下容器类和控件类的问题,6.3 处理对象,6.3.1 引用对象,一旦创建了对象,便可以通过对对象属性的修改,方法程序的调用处理对象 引用对象 绝对引用:最高层次开始的绝对地址 表单集对象名.表单名 abc . form1 相对引用:相对于某个容器层次的引用 在某个对象的方法程序中 关键字:THIS、THISFORM、THISFORMSET、PARENT ACTIVEFORM、ACTIVEPAGE、ACTIVECONTROL,系统变量 _SCREEN,_SCREEN代表主屏对象 例:不知道表单名的情况

8、下, 处理表单及表单中活动的控件 _SCREEN.ACTIVEFORM _SCREEN.ACTIVEFORM.ACTIVECONTROL,6.3.2 设置对象属性,方法: 属性窗口(设计) 例如:表单的背景色 代码中(运行) 单个属性 对象.属性=值 一个对象的多个属性 WITH 对象名 .属性名1=值1 .属性名2=值2 ENDWITH 有些属性在设计时是只读的,只能在代码中修改,6.3.3 调用对象的方法程序,方法的实质: 是对象能够执行的一个操作,是和对象联系的过程(或函数) 用户可以创建新的方法新的代码 (新的过程和函数) 当方法名为事件名时,认为是事件处理程序!,方法的调用,如果对象

9、已经创建,可在任何地方调用 引用对象.方法程序(参数1, 参数2) 例: thisform.move(100,100,400,200) 无参数情况可以省略括号, 即引用对象.方法程序 例: thisform.show thisform.text1.setfocus 有返回值情况必须以括号结尾 例: 为表单添加了一个方法SDATE(), 内容返回当前的日期,以yyyy年mm月nn日的形式 thisform.sdate(),6.3.4 对象对事件的响应,响应方式: 事件发生事件处理程序执行(与事件相关的方法) 事件的产生: 外界对本对象施加动作 用户动作 例:电话 提话筒,放话筒 程序代码 或 系

10、统 (mouse, error, keyboard命令分别产生鼠标的相关事件、ERROR事件、keypress事件),事件处理程序,事件处理程序也可以象其他方法程序一样使用代码调用,此时不产生事件只执行代码 例:formset1.form1.activate 执行activate程序,不产生激活事件 要产生激活事件 (方法show-activate事件),6.4 相关事件,6.4.1 核心事件,核心事件集(适用于大多数对象的事件) 建立、释放 表单、表单集: Load Init Activate gotfocus Unload destroy Deactivate lostfocus 对象(大

11、多数其他对象) Init gotfocus lostfocus destroy,核心事件,鼠标事件 Click DbClick RightClick MouseDown MouseUp MouseMove 键盘事件 KeyPress 对象值改变发生的事件 InteractiveChange ProgrammaticChange,6.4.2 容器层次与类层次中的事件,容器层次的事件处理原则: 容器不处理与所包含的控件相关联的事件, 最里层的对象识别事件 例外:选项按扭组、命令按扭组作为容器,在选项按扭、命令按扭中无事件处理程序时,识别子对象事件,参与对象的处理。,类层次的事件处理原则,查找事件处

12、理程序的顺序: 对象类父类基类 一旦找到相应的处理程序即执行,并停止继续向上查找 例:组合框 即使不对组合框对象的任何事件编写事件处理程序,在下拉列表中的选择也会显示到组合框中,因为组合框基类中有此类动作的处理程序,事件序列的处理规则,当连续发生一系列事件时,整个事件队列属于起始控件 例:开始于某个命令按钮的鼠标单击、拖动、释放的事件序列,6.4.3 事件激发的顺序,事件的激发 有些事件发生的顺序固定 创建删除 有些事件独立发生 TIMER 大多数事件交互发生 查看方法(事件跟踪) 工具菜单调试器工具菜单事件跟踪开启事件跟踪 在调试输出窗口可以观看结果(窗口调试输出),跟踪表单的事件顺序,fo

13、rm1.Load() form1.dataenvironment.Init() form1.Init() form1.Paint() form1.Activate() form1.GotFocus(),form1.LostFocus() form1.Deactivate() form1.QueryUnload() form1.Destroy() form1.Unload() form1.dataenvironment. AfterCloseTables() form1.dataenvironment.Destroy(),事件发生的一般顺序,数据环境 表单集 表单 对象 创建 beforeope

14、ntablesloadloadinit(内外) 激活 ActivateActivate 前 when 获得焦点(成为当前的) gotfocus gotfocus 后 message 前 valid 失去焦点(不再为当前的) lostfocus lostfocus 释放 queryunloaddestroy(外内) afterclosetablesunload unload unload destroy(先环境后临时表),6.4.4 常用事件,Activate, Click, Error, Init, Interactivechange, ProgrammaticChange Load,QueryUnload, Valid,6.4.5 事件驱动和事件循环,事件驱动:面向对象程序设计中,非顺序的,代码的执行由事件引起 编程重点:发生了事情,如何处理 事件循环:从什么时候开始等待事情发生、到什么时候停止等待 Read Events 建立循环 (主表单或主程序中) Clear Events 终止循环 (某个按扭、菜单项) 在执行建立循环的命令之前,建立退出循环机制,否则死循环(按ESC退出),6.5 方法,常用方法 clear hide refresh release,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1