2022年第六章面向对象的程序设计44845 .docx
_归纳总结汇总_ - - - - - - - - - 第六章 面对对象的程序设计6.1 面对对象程序设计概述1. 基本概念面对对象的程序设计是通过对类、子类和对象等的设计来表达的,类是面对对象程序设计技术的核心;类:定义了对象特点以及对象外观和行为的模板;类的特点 :封装性 :隐匿了类中对象的内部数据或操作细节,只看到外表信息;继承性 :任何类都可以从其它已有的类中派生,新类保持了父类中的行为和属性,但增加了新的功能;表达了面对对象设计方法的共享机制;多态性 :相同的操作可作用于多种类型的对象上,并获得不同的结果;抽象性 :提取一个类或对象与众不同的特点,而不对该类或对象的全部信息进行处理;基类 :系统本身供应的类称为基类;基类包括容器类和控件类;容器类是其他对象的集合,如表格、选项按钮组;控件类是单一的对象,不包含其他对象,如命令按钮、文本框;子类 :以其他类定义为起点,对某一对象所建立的新类;新类将继承任何对父类所做的修改;_精品资料_ - - - - - - -第 1 页,共 13 页_归纳总结汇总_ - - - - - - - - - 类库 :储备类的文件,每一个以可视方式设计的类都储备在一个类库中;类库文件的扩展名为 .VCX ;对象 :是类的一个实例,包括了数据和过程;具有所在类所定义的全部属性和方法;VFP有两种对象:容器对象和控件对象;属性 :控件、字段或数据库对象的特性;大事 :由对象识别的一个动作;方法 :与对象相联系的由程序执行的一个处理过程,即处理大事的一组代码;用户不行以为对象创建新的大事,但可以创建新的方法程序;2. Visual FoxPro 基类从下述 Visual FoxPro 基类中,可以派生子类或创建对象;容器命令组控件微调标签表单命令按钮复选框OLE 容器掌握线条表单集选项组列表框OLE 绑定型掌握分隔符 # 表格选项按钮 # 文本框自定义外形标头 # 页框组合框工具栏图象列 # 页面 # 编辑框计时器注: # 这些类是父容器的集成部分,在类设计器中不能子类化;基类大事的最小集合_精品资料_ Init 大事当对象创建时激活;说明第 2 页,共 13 页- - - - - - -_归纳总结汇总_ - - - - - - - - - Destroy 当对象从内存中释放时激活;Error 当类中的大事或方法过程中发生错误时激活;基类属性的最小集合属性 Class BaseClass ClassLibrary ParentClass 说明 该类属于何种类型;该类由何种基类派生而来,例如 Form 、Commandbutton 或 Custom 等该类从属于哪种类库;对象所基于的类;如该类直接由 Visual FoxPro 基类派生而来,就 ParentClass 属性值与 BaseClass 属性值相同;容器类容器类可以包含其他对象,并且答应拜访这些对象;每种容器类所能包含的对象如下;_精品资料_ 容器能包含的对象第 3 页,共 13 页命令按钮组命令按钮容器任意控件控件任意控件表单集表单、工具栏表单页框、任意控件、容器或自定义对象表格列标头对象以及除表单、表单集、工具栏、计时器和其他列对象以外的任意对象表格表格列选项按钮组选项按钮页框页面页面任意控件、容器和自定义对象工具栏任意控件、页框和容器- - - - - - -_归纳总结汇总_ - - - - - - - - - 6.2 类的创建1. 创建类的方法(1)类设计器(2)表单设计器(3)编程方式2. 用类设计器创建类 图例 使用“ 类设计器” 能够可视化地创建并修改类;(1) 创建新类可以用三种方法(文件菜单、工程治理器、设计时就能看到每个对象的最终外观;步骤:类储备在类库 .VCX 文件中;CREATE CLASS命令)打开类设计器并在其中创建新类,且在单击文件菜单中的新建 挑选类,新文件 在对话框中给出新类的名称、新类基于的类以及储存新类的类库 进入类设计器 < 依据需要在基类的基础上进行所需修改(2) 为类指定设计时的外观1 为类设置一个工具栏图标 关闭设计器并确定储存;在类设计器中从 类 菜单中挑选 类信息 打开类信息对话框,在工具栏图标框中键入 .BMP 文件的名称和路径;附注 :_精品资料_ - - - - - - -第 4 页,共 13 页_归纳总结汇总_ - - - - - - - - - 工具栏图标的 .BMP 文件必需是 15 x 16 象素点大小;假如图片过大或过小,它将被调整到 15 x 16 象素点,图形可能变形;2 为类设置一个容器图标打开类设计器从类菜单挑选 类信息 在容器图标框中键入将在表单设计器中的控件工具栏按钮上显示的 .BMP 文件名称和路径;(3) 创建类库可以用三种方法创建类库;1) 在创建类时,在新类对话框的“ 储备于” 框中指定一个新的类库文件;2) 使用 CREATE CLASS 命令,同时指定新建类库的名称;例如,下面的语句创建了一个名为 myclass 的新类和一个名为 new_lib 的新类库:CREATE CLASS myclass OF new_lib AS CUSTOM3) 使用 CREATE CLASSLIB 命令;例如,在命令窗口键入下面的命令,可以创建一个名为 new_lib 的类:CREATE CLASSLIB new_lib(5) 修改类定义在创建类之后,仍可以修改它,对类的修改将影响全部的子类和基于这个类的全部对象;也可以增加类的功能或修改类的错误,全部子类和基于这个类的全部对象都将继承修改;的类或使用 MODIFY CLASS 命令进行修改;在工程治理器中挑选所要修改_精品资料_ - - - - - - -第 5 页,共 13 页_归纳总结汇总_ - - - - - - - - - (6) 将表单和控件储存为类可以将表单或表单上的控件子集储存为类定义;假如准备创建基于表单的子类,或在其他表单中重新使用这些控件,可将表单作为类定义来储存;从文件菜单中挑选另存为类 在另存为类对话框中,挑选当前表单或选定控件 在“ 类名” 框中输入类的名称 在文件框中输入储存类的文件名 挑选确定按钮;3. 用编程方式创建类在程序窗口中建立一个定义类的程序文件(扩展名为4将类添加到表单、表单集和工具栏中(1) 注册一个类库.PRG),然后执行该程序;从工具菜单中挑选选项在选项对话框中挑选控件选项卡 挑选可视类库并挑选添加按钮在打开对话框中挑选要注册的类库并挑选打开 挑选确定按钮;(2) 给子类增加功能使用作用域操作符 : 可以在子类上调用父类的代码,引用父类的方法;调用父类方法的语法是:ParentClass:Method (3) 将属性和方法添加到类可以向新类中添加任意多的新属性和新方法;属性储存一个值,而方法就储存调用时可以运行的过程代码;_精品资料_ 从类菜单挑选新属性或新方法 在新属性对话框中键入属性或方法的名称 指定它是否受爱护;第 6 页,共 13 页- - - - - - -_归纳总结汇总_ - - - - - - - - - 5. 类浏览器1 类浏览器的作用可创建子类,把类从一个类库复制到另一类库,删除类和库文件,重命名类或者重新定义类关系;留意:假如要对类进行删除、重命名或重定义,就基于此类的表单可能不能正确运行;(2) 添加一个子类在类浏览器中打开类库 挑选要从中派生子类的类,然后挑选新类按钮 < 在新类对话框中输入新子类名 在类设计器中定义并储存子类;(3) 把类从一个类库复制到另一类库中在类浏览器中打开源类库 从 工具 菜单中打开类浏览器的其次个实例,并挑选目标库文件 在源类库中挑选要复制的类,然后在按住Ctrl键的同时,把位于类列表上方的类图标拖到目的库中的类图标上;如不同时按住Ctrl键就是移动;(4)把多个类从一个类库文件复制到另一个类库文件中在类浏览器中打开源类库 假如要挑选类列表,就在类型 框中键入挑选条件以限定想要从文件中复制的类 从工具 菜单中,打开类浏览器的其次个实例,并挑选目标库文件 在源类库中,挑选要复制的类库文件,然后在按住 Ctrl 键的同时,把位于类列表上方的类图标拖到目标库中的类图标上;(5) 删除类、类库或表单1) 在类浏览器中打开类库或表单;2) 在类列表中,挑选要删除的类、类库或表单,然后挑选删除按钮;对类来说,它在库中的记录标有删除标记,下一次就可挑选清除类库;对类库和表单来说,文件是从磁盘中删除;_精品资料_ - - - - - - -第 7 页,共 13 页_归纳总结汇总_ - - - - - - - - - (6) 重命名类库中的类,在类浏览器中打开类库 在类列表中,挑选要重命名的类,然后挑选重命名按钮 在重命名类对话框中,输入新的名称,然后选单击重命名;留意 :假如对具有相关子类的类重命名,就子类将不能引用从重命名类中继承下来的属性;(7) 更换一个类的父类在类浏览器中打开类库 在类列表中,挑选想要重定义的类,然后挑选重定义按钮 在重定义对话框的为框中,输入新的父类名;新父类与原父类必需是来源于同一基类件名;(8) 定制类浏览器可更换类浏览器的属性、大事和方法;可通过程序来操作类浏览器: 在基于框中,挑选或输入类库文1 打开类浏览器将自动创建公共变量 _oBrowser,可使用此变量来引用或操作类浏览器表单,犹如对任何表单对象一样;2 对要更换的类浏览器的属性进行设置;例如,在打开类浏览器之前,可通过以下命令把类浏览器的标题属性设置为 Hello:_OBROWSER.Caption = "Hello" _OBROWSER.Left = 10 3 打开类浏览器,创建一个实例;_精品资料_ 例如,为了打开类浏览器,可输入代码:DO _BROWSER 第 8 页,共 13 页- - - - - - -_归纳总结汇总_ - - - - - - - - - 6.3 创建并处理对象1. 创建对象1 编程方式先创建一个类,再用 CREATEOBJECT() 函数来创建;2 可视化方式用表单设计器创建;2. 引用对象引用对象时,对象与对象之间、对象与属性之间需用分隔符 . 进行分隔;1 肯定引用淡定器的最高层引用对象,给出对象的肯定地址;如:form1.text1.value2 相对引用_精品资料_ 在容器层次中相对于某个容器层次的引用;如:thisform .text1.value引用第 9 页,共 13 页属性或关键字ActiveControl 当前活动表单中具有焦点的控件ActiveForm 当前活动表单ActivePage 当前活动表单中的活动页Parent 该对象的直接容器THIS 该对象THISFORM 包含该对象的表单- - - - - - -_归纳总结汇总_ - - - - - - - - - THISFORMSET 包含该对象的表单集系统变量 _SCREEN 表示屏幕对象,与 ActiveForm 3. 设置对象的属性1 可以在属性窗口中进行可视化设置2 可以在程序中用如下格式进行设置:引用对象 . 属性 = 值等组合可以在不知道表单名的情形下处理活动表单;如: thisform .text1.value=" 只要功夫深,铁棒磨成针;"想一次设置多个属性时,可以采纳 WITH ENDWITH 语句;如: WITH form1.text1 .Value=" 书山有路勤为径 " .ForeColor=rgb255,0,0 .FontSize=18 .FontName=" 隶书 " .FontBold=.T. ENDWITH 4. 调用对象的方法程序_精品资料_ - - - - - - -第 10 页,共 13 页_归纳总结汇总_ - - - - - - - - - 如对象已经创建,可以在应用程序的任何地方调用该对象的方法程序;调用方法程序的格式为:引用对象. 方法程序如: Form1.Show 5. 对象对大事的响应当大事发生时,该大事的过程代码就将被执行;用编程方式可以使用 MOUSE 命令产生 CLICK 、 DOUBLECLICK、MOUSEMOVE、 DRAGDROP 大事,使用 ERROR 命令产生 ERROR 大事,或使用 KEYBOARD 命令产生 KEYPRESS 大事,除此之外不能用其他的程序设计方法产生其他大事,但可调用与它们相关的过程;6.4 大事与方法1 VFP 中的大事VFP 中的常用大事分类_精品资料_ 大事类型大事名称第 11 页,共 13 页鼠标大事Click DblClick RightClick DropDown DownClick UpClick 键盘大事KeyPress 转变控件内容的大事InteractiveChange 控件焦点的大事GotFocus LostFocus When Valid 表单大事Load Unload Destroy Activate Resize Paint QueryUnload 数据环境大事AfterCloseTable BeforeOpenTable 工程大事QueryModifyFile 等OLE 大事OLECompleteDrag 等其他大事Timer Init Destroy Error - - - - - - -_归纳总结汇总_ - - - - - - - - - 一些核心大事和触发时间大事 触发时间Load 当表单或表单集被加载时产生Unload 当表单或表单集从内存中释放时产生Init 创建对象时产生Destroy 从内存中释放对象时产生Click 用户在对象上单击鼠标时产生DblClick 用户在对象上双击鼠标时产生RightClick 用户在对象上单击鼠标右键时产生GetFocus 对象得到焦点时产生LostFocus 对象失去焦点时产生KeyPress 用户按键时产生MouseDown 在对象上按下鼠标MouseUp 在对象上松开鼠标MouseMove 在对象上移动鼠标InteractiveChange. 交互式转变对象值ProgrammaticChange 可编程地转变对象值2. 大事循环VFP6.0 中用 READ EVENTS命令建立循环,用 CLEAR EVENTS命令终止循环;利用 VFP6.0 设计应用程序时,必需创建大事循环,否就不能正常运行;READ EVENTS 命令通常显现在应用程序的主程序中,同时必需保证主程序调出的界面中有发出死循环;3. 方法 CLEAR EVENTS 命令的机制,否就程序进入VFP6.0 中的常用方法_精品资料_ 名称调用语法功能第 12 页,共 13 页- - - - - - -_归纳总结汇总_ - - - - - - - - - Object . AddObject cName,_精品资料_ AddObjectcClass , 在运行时向容器对象中添加对象第 13 页,共 13 页ClearObject .Clear清除组合框或列表框控件中的内容HideObject .Hide通过把 Visible属性设置为 .F. ,来隐匿表单、表单ShowObject .Show集或工具栏把 Visible属性设置为 .T. ,显示并激活一个表单或RefreshObject .Refresh表单集,并确定表单的显示模式重画表单或控件,并刷新全部值ReleaseObject .Release从内存中释放表单或表单集QuitObject .Quit终止一个 VFP6.0 实例,返回到创建它的应用程序;- - - - - - -