面向对象的程序设计.doc
《面向对象的程序设计.doc》由会员分享,可在线阅读,更多相关《面向对象的程序设计.doc(16页珍藏版)》请在咨信网上搜索。
第六章 面向对象的程序设计 6.1 面向对象程序设计概述 1. 基本概念 面向对象的程序设计是经过对类、 子类和对象等的设计来体现的, 类是面向对象程序设计技术的核心。 类: 定义了对象特征以及对象外观和行为的模板。 类的特征: 封装性: 隐藏了类中对象的内部数据或操作细节, 只看到外表信息。 继承性: 任何类都能够从其它已有的类中派生, 新类保持了父类中的行为和属性, 但增加了新的功能。体现了面向对象设计方法的共享机制。 多态性: 相同的操作可作用于多种类型的对象上, 并获得不同的结果。 抽象性: 提取一个类或对象与众不同的特征, 而不对该类或对象的所有信息进行处理。 基类: 系统本身提供的类称为基类。基类包括容器类和控件类。容器类是其它对象的集合, 如表格、 选项按钮组; 控件类是单一的对象, 不包含其它对象, 如命令按钮、 文本框。 子类: 以其它类定义为起点, 对某一对象所建立的新类。新类将继承任何对父类所做的修改。 类库: 存储类的文件, 每一个以可视方式设计的类都存储在一个类库中。类库文件的扩展名为 .VCX 。 对象: 是类的一个实例, 包括了数据和过程。具有所在类所定义的全部属性和方法。 VFP有两种对象: 容器对象和控件对象。 属性: 控件、 字段或数据库对象的特性。 事件: 由对象识别的一个动作。 方法: 与对象相联系的由程序执行的一个处理过程, 即处理事件的一组代码。 用户不能够为对象创立新的事件, 但能够创立新的方法程序。 2. Visual FoxPro 基类 从下述 Visual FoxPro 基类中, 能够派生子类或创立对象。 容器 命令组 控件 微调 标签 表单 命令按钮 复选框 OLE 容器控制 线条 表单集 选项组 列表框 OLE 绑定型控制 分隔符 # 表格 选项按钮 # 文本框 自定义 形状 标头 # 页框 组合框 工具栏 图象 列 # 页面 # 编辑框 计时器 注: # 这些类是父容器的集成部分, 在类设计器中不能子类化。 基类事件的最小集合 事件 说明 Init 当对象创立时激活。 Destroy 当对象从内存中释放时激活。 Error 当类中的事件或方法过程中发生错误时激活。 基类属性的最小集合 属性 说明 Class 该类属于何种类型。 BaseClass 该类由何种基类派生而来, 例如 Form、 Commandbutton 或 Custom 等 ClassLibrary 该类从属于哪种类库。 ParentClass 对象所基于的类。若该类直接由 Visual FoxPro 基类派生而来, 则 ParentClass 属性值与 BaseClass 属性值相同。 容器类 容器类能够包含其它对象, 而且允许访问这些对象。每种容器类所能包含的对象如下。 容器 能包含的对象 命令按钮组 命令按钮 容器 任意控件 控件 任意控件 表单集 表单、 工具栏 表单 页框、 任意控件、 容器或自定义对象 表格列 标头对象以及除表单、 表单集、 工具栏、 计时器和其它列对象以外的任意对象 表格 表格列 选项按钮组 选项按钮 页框 页面 页面 任意控件、 容器和自定义对象 工具栏 任意控件、 页框和容器 6.2 类的创立 1. 创立类的方法 ( 1) 类设计器 ( 2) 表单设计器 ( 3) 编程方式 2. 用类设计器创立类[图例] 使用”类设计器”能够可视化地创立并修改类。 类存储在类库 (.VCX) 文件中。 ( 1) 创立新类 能够用三种方法( 文件菜单、 项目管理器、 CREATE CLASS命令) 打开类设计器并在其中创立新类, 且在设计时就能看到每个对象的最终外观。 步骤: 单击文件菜单中的新建 → 选择类, 新文件 → 在对话框中给出新类的名称、 新类基于的类以及保存新类的类库 → 进入类设计器 <→ 根据需要在基类的基础上进行所需修改 → 关闭设计器并确定保存。 ( 2) 为类指定设计时的外观 1) 为类设置一个工具栏图标 在类设计器中从类菜单中选择类信息 → 打开类信息对话框, 在工具栏图标框中键入 .BMP 文件的名称和路径。 附注: 工具栏图标的 .BMP 文件必须是 15 x 16 象素点大小。如果图片过大或过小, 它将被调整到 15 x 16 象素点, 图形可能变形。 2) 为类设置一个容器图标 打开类设计器从类菜单选择类信息 → 在容器图标框中键入将在表单设计器中的控件工具栏按钮上显示的 .BMP 文件名称和路径。 ( 3) 创立类库 能够用三种方法创立类库。 1) 在创立类时, 在新类对话框的”存储于”框中指定一个新的类库文件。 2) 使用 CREATE CLASS 命令, 同时指定新建类库的名称。 例如, 下面的语句创立了一个名为 myclass 的新类和一个名为 new_lib 的新类库: CREATE CLASS myclass OF new_lib AS CUSTOM 3) 使用 CREATE CLASSLIB 命令。 例如, 在命令窗口键入下面的命令, 能够创立一个名为 new_lib 的类: CREATE CLASSLIB new_lib ( 5) 修改类定义 在创立类之后, 还能够修改它, 对类的修改将影响所有的子类和基于这个类的所有对象。也能够增加类的功能或修改类的错误, 所有子类和基于这个类的所有对象都将继承修改。 在项目管理器中选择所要修改的类或使用 MODIFY CLASS 命令进行修改。 ( 6) 将表单和控件保存为类 能够将表单或表单上的控件子集保存为类定义。如果打算创立基于表单的子类, 或在其它表单中重新使用这些控件, 可将表单作为类定义来保存。 从文件菜单中选择另存为类→ 在另存为类对话框中, 选择当前表单或选定控件→ 在”类名”框中输入类的名称→在文件框中输入保存类的文件名 →选择确定按钮。 3. 用编程方式创立类 在程序窗口中建立一个定义类的程序文件( 扩展名为.PRG) , 然后执行该程序。 4.将类添加到表单、 表单集和工具栏中 ( 1) 注册一个类库 从工具菜单中选择选项 → 在选项对话框中选择控件选项卡 → 选择可视类库并选择添加按钮 → 在打开对话框中选择要注册的类库并选择打开 → 选择确定按钮。 ( 2) 给子类增加功能 使用作用域操作符 (::) 能够在子类上调用父类的代码, 引用父类的方法。 调用父类方法的语法是: ParentClass::Method( ) ( 3) 将属性和方法添加到类 能够向新类中添加任意多的新属性和新方法。属性保存一个值, 而方法则保存调用时能够运行的过程代码。 从类菜单选择新属性或新方法 → 在新属性对话框中键入属性或方法的名称 → 指定它是否受保护。 5. 类浏览器 (1) 类浏览器的作用 可创立子类, 把类从一个类库复制到另一类库, 删除类和库文件, 重命名类或者重新定义类关系。 注意: 如果要对类进行删除、 重命名或重定义, 则基于此类的表单可能不能正确运行。 ( 2) 添加一个子类 在类浏览器中打开类库 → 选择要从中派生子类的类, 然后选择新类按钮 →< 在新类对话框中输入新子类名 → 在类设计器中定义并保存子类。 ( 3) 把类从一个类库复制到另一类库中 在类浏览器中打开源类库 → 从工具菜单中打开类浏览器的第二个实例, 并选择目标库文件 → 在源类库中选择要复制的类, 然后在按住Ctrl键的同时, 把位于类列表上方的类图标拖到目的库中的类图标上。 若不同时按住Ctrl键则是移动。 ( 4) 把多个类从一个类库文件复制到另一个类库文件中 在类浏览器中打开源类库 → 如果要筛选类列表, 则在类型框中键入筛选条件以限定想要从文件中复制的类 → 从工具菜单中, 打开类浏览器的第二个实例, 并选择目标库文件 → 在源类库中, 选择要复制的类库文件, 然后在按住 Ctrl键的同时, 把位于类列表上方的类图标拖到目标库中的类图标上。 ( 5) 删除类、 类库或表单 1) 在类浏览器中打开类库或表单。 2) 在类列表中, 选择要删除的类、 类库或表单, 然后选择删除按钮。对类来说, 它在库中的记录标有删除标记, 下一次就可选择清除类库; 对类库和表单来说, 文件是从磁盘中删除。 ( 6) 重命名类库中的类, 在类浏览器中打开类库 → 在类列表中, 选择要重命名的类, 然后选择重命名按钮 → 在重命名类对话框中, 输入新的名称, 然后选单击重命名。 注意: 如果对具有相关子类的类重命名, 则子类将不能引用从重命名类中继承下来的属性。 ( 7) 更改一个类的父类 在类浏览器中打开类库 → 在类列表中, 选择想要重定义的类, 然后选择重定义按钮 → 在重定义对话框的为框中, 输入新的父类名。新父类与原父类必须是来源于同一基类 → 在基于框中, 选择或输入类库文件名。 ( 8) 定制类浏览器 可更改类浏览器的属性、 事件和方法。可经过程序来操作类浏览器: 1) 打开类浏览器将自动创立公共变量 _oBrowser,可使用此变量来引用或操作类浏览器表单, 如同对任何表单对象一样。 2) 对要更改的类浏览器的属性进行设置。 例如, 在打开类浏览器之前, 可经过下列命令把类浏览器的标题属性设置为 Hello: _OBROWSER.Caption = "Hello" _OBROWSER.Left = 10 3) 打开类浏览器, 创立一个实例。 例如, 为了打开类浏览器, 可输入代码: DO (_BROWSER) 6.3 创立并处理对象 1. 创立对象 (1) 编程方式 先创立一个类, 再用 CREATEOBJECT( ) 函数来创立。 (2) 可视化方式 用表单设计器创立。 2. 引用对象 引用对象时, 对象与对象之间、 对象与属性之间需用分隔符 . 进行分隔。 (1) 绝对引用 从容器的最高层引用对象, 给出对象的绝对地址。如: form1.text1.value (2) 相对引用 在容器层次中相对于某个容器层次的引用。如: thisform .text1.value 属性或关键字 引用 ActiveControl 当前活动表单中具有焦点的控件 ActiveForm 当前活动表单 ActivePage 当前活动表单中的活动页 Parent 该对象的直接容器 THIS 该对象 THISFORM 包含该对象的表单 THISFORMSET 包含该对象的表单集 系统变量 _SCREEN 表示屏幕对象, 与 ActiveForm 等组合能够在不知道表单名的情况下处理活动表单。 3. 设置对象的属性 (1) 能够在属性窗口中进行可视化设置 (2) 能够在程序中用如下格式进行设置: 引用对象.属性 = 值 如: thisform .text1.value="只要功夫深, 铁棒磨成针。" 想一次设置多个属性时, 能够采用WITH …… ENDWITH 语句。 如: WITH form1.text1 .Value="书山有路勤为径" .ForeColor=rgb(255,0,0) .FontSize=18 .FontName="隶书" .FontBold=.T. ENDWITH 4. 调用对象的方法程序 若对象已经创立, 能够在应用程序的任何地方调用该对象的方法程序。调用方法程序的格式为: 引用对象.方法程序 如: Form1.Show 5. 对象对事件的响应 当事件发生时, 该事件的过程代码就将被执行。 用编程方式能够使用 MOUSE 命令产生 CLICK、 DOUBLECLICK、 MOUSEMOVE、 DRAGDROP 事件, 使用 ERROR 命令产生 ERROR 事件, 或使用 KEYBOARD 命令产生 KEYPRESS 事件, 除此之外不能用其它的程序设计方法产生其它事件, 但可调用与它们相关的过程。 6.4 事件与方法 1. VFP 中的事件 VFP 中的常见事件分类 事件类型 事件名称 鼠标事件 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 命令一般出现在应用程序的主程序中, 同时必须保证主程序调出的界面中有发出 CLEAR EVENTS 命令的机制, 否则程序进入死循环。 3. 方法 VFP6.0 中的常见方法 名称 调用语法 功能 AddObject Object. AddObject (cName, cClass[, …]) 在运行时向容器对象中添加对象 Clear Object.Clear 清除组合框或列表框控件中的内容 Hide Object.Hide 经过把Visible属性设置为 .F., 来隐藏表单、 表单集或工具栏 Show Object.Show 把Visible属性设置为 .T., 显示并激活一个表单或表单集, 并确定表单的显示模式 Refresh Object.Refresh 重画表单或控件, 并刷新所有值 Release Object.Release 从内存中释放表单或表单集 Quit Object.Quit 结束一个VFP6.0实例, 返回到创立它的应用程序。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文