1 / 57

本 章 内 容

第八章面向对象程序设计. 本 章 内 容. §8.1  面向对象程序设计基本概念 §8.1.1 对象与类 §8.1.2 属性、方法和事件 §8.1.3 面向对象程序设计的特点 §8.2 创建表单 §8.2.1 表单向导 §8.2.2 表单设计器 §8.2.3 “表单设计器”窗口和“表单设计器”工具栏 §8.2.4 创建表单实例 §8.2.5 设置数据环境 §8.2.6 引用层次结构中的对象 §8.2.7 自定义属性和方法. §8.1  面向对象程序设计基本概念. §8.1.1  对象与类. 1 .对象( Object )

channer
Download Presentation

本 章 内 容

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章面向对象程序设计 本 章 内 容 §8.1 面向对象程序设计基本概念 §8.1.1 对象与类 §8.1.2 属性、方法和事件 §8.1.3 面向对象程序设计的特点 §8.2 创建表单 §8.2.1 表单向导 §8.2.2 表单设计器 §8.2.3 “表单设计器”窗口和“表单设计器”工具栏 §8.2.4 创建表单实例 §8.2.5 设置数据环境 §8.2.6 引用层次结构中的对象 §8.2.7 自定义属性和方法

  2. §8.1 面向对象程序设计基本概念 §8.1.1 对象与类 1.对象(Object) 客观世界中独立存在的、能够区分的事物都可以看作对象。对象可以是具体事物,也可以指抽象概念。 对象的特征用属性(数据)来描述,对象的行为用方法(程序代码)来描述,对象是将数据和程序代码程结合在一起的数据结构。 对象中封装了数据和操作,每一个对象都具有自身的属性、方法和事件。 2.类 (1)类的概念 类(Class)是具有共同属性和操作的对象的抽象和概括,它抽取了该类对象的共性。 类是定义对象的的模板,反之对象是类的具体实例。

  3. (2)类的划分 1)根据类的由来划分 ①基类:它是VFP 6.0系统预先定义的内置的类。VFP 6.0基类共有29个,“表单控件”工具栏中的按钮都是基类按钮。基类不存放在某个类库文件中。 ②自定义类:由用户创建的类。从基类可以派生出用户自定义类,从用户自定义类还可以派生出新的用户自定义类。自定义类存放在自定义类库中,类库文件的扩展为.VCX。一个类库可以存放一个或者多个自定义类。 2)根据类的包容性划分 ①容器类:能包含其他类的类。例如命令按钮组、选项按钮组和页框等。 VFP 6.0的容器及其可包含的对象见表8-1。

  4. 表8-1VFP 6.0的容器及其可包含的对象

  5. ②控件类:不能包含其他类的类。例如命令按钮、文本框和标签等。②控件类:不能包含其他类的类。例如命令按钮、文本框和标签等。 使用容器类所创建的实例化对象是容器对象,使用控件类所创建的实例化对象是控件对象。 3)根据类的继承性划分 当基于现有的类创建新类时,新类就继承了现有的类的属性、事件和方法。新类称为子类,现有的类称为父类。

  6. §8.1.2 属性、方法和事件 1.属性(Property) 属性用于描述对象的特征。 对象创建之后,VFP就赋予该对象各属性的默认值,用户可以修改对象属性的默认值,还可以添加对象的属性。 2.方法(Method) 方法用于描述对象的行为,是对象能够执行的操作,是系统内置的过程。方法所包含的程序对用户来说是不可见的。用户只需了解方法的名称和功能,遵循规定的格式调用方法,就能够完成相应的操作。 每个对象拥有各自的方法集合,且允许扩展对象的方法集合。对已有的方法,用户可以添加新的代码以扩充方法的功能,但VFP不允许修改和删除已有的方法。

  7. 4.事件(Event) 事件是能被对象识别和响应的预先定义的动作。每个对象都拥有一组固定的、由VFP预定义的事件集合,用户不能扩充对象的事件集合。事件的代码通常需要由用户来编写。 事件可由用户引发或系统引发。例如,单击命令按钮,则引发了命令按钮的Click事件;而计时器的Timer事件则由系统引发。 VFP 6.0总是处于等待事件发生的状态。某事件一旦被触发,系统就会执行该事件对应的过程代码,当然事件的过程代码需要由用户事先编写好。过程执行完毕,系统又处于等待状态。这种工作方式称为事件驱动的工作方式。 VFP 6.0的事件总是在不断地发生,但只有被编写了代码的事件才会产生某种操作,否则事件只是发生,而不会引起对象的任何变化。

  8. §8.1.3 面向对象程序设计的特点 类具有三大特性:封装性、继承性和多态性。类的三大特性提高了代码的可重用性、易维护性和安全性。 1.封装性 封装性是指将对象的数据(属性)和操作(代码)隐藏起来,从而隐藏了对象内部的复杂性,只需通过简单的外部接口就能够访问对象。 封装性的优点如下: (1)隐藏了对象内部细节的复杂性,有利于程序的局部化,便于用户把精力集中于对象的设计。 (2)隐藏了对象的数据和操作的程序代码,有利于程序的安全。

  9. 2.继承性 继承是表示类与类之间的一种隶属关系。继承不仅仅是子类拷贝父类的属性、事件和方法,而且还继承父类的默认值。 子类不仅继承父类的属性、事件和方法,还可以添加自定义的属性和方法。 继承使对父类的修改自动反映到子类上,这将大大提高应用程序的开发效率。 3.多态性 多态性就是方法的名称相同,但允许所带的参数不同。用户根据不同的参数编写不同的代码。当调用该方法时,系统将根据传递来的参数而去调用相应的代码,从而实现使用同名方法调用不同程序代码的目的。 多态性提高了应用程序的可扩充性。

  10. §8.2 创建表单 创建表单有2种方法:使用“表单设计器”或使用“表单向导”创建表单。“表单设计器”是创建和修改表单的工具,“表单向导”只能用于创建表单,而不能修改表单。 有开发经验的用户通常先用“表单向导”快速地创建一个表单,然后使用“表单设计器”进行修改和完善。使用这种方法创建表单,效率高且质量好。 §8.2.1 表单向导 1.打开“向导选取”对话框 (1)在“项目管理器”中打开“向导选取”对话框 (2)使用“工具”菜单打开“表单向导” 。

  11. (3)使用“新建”按钮打开“表单向导” (4)单击工具栏中“表单向导”按钮,打开“向导选取”对话框。 “向导选取”对话框打开后,如图8-1所示。 图8-1 “向导选取”对话框

  12. 2.使用“表单向导”创建单数据源表单 【例8-1】使用表单向导创建一个维护职工简况表Zgjk.dbf的表单。 (1)打开“向导选取”对话框,选择“表单向导”选项,单击“确定”按钮,打开“表单向导”对话框(步骤1-字段选取)。在“数据库和表”列表框中,选择Zgjk.dbf表;在“可选字段”列表框中,选择所需的字段,并将其添加到“选定字段”列表框,如图8-2所示。 图8-2“字段选取”对话框

  13. (2)单击“下一步”按钮,打开“表单向导”对话框(步骤2-选择表单样式)。在“样式”列表框中,选择“浮雕式”;在“按钮类型”选项组中,选择“文本按钮”,如图8-3所示。 (2)单击“下一步”按钮,打开“表单向导”对话框(步骤2-选择表单样式)。在“样式”列表框中,选择“浮雕式”;在“按钮类型”选项组中,选择“文本按钮”,如图8-3所示。 图8-3“选择表单样式”对话框

  14. (3)单击“下一步”按钮,打开“表单向导”对话框(步骤3-排序次序)。在“可用的字段或索引标识”列表框中,选择“基本工资”,单击“添加”按钮,将其添加到“选定字段”列表框中,如图8-4所示。(3)单击“下一步”按钮,打开“表单向导”对话框(步骤3-排序次序)。在“可用的字段或索引标识”列表框中,选择“基本工资”,单击“添加”按钮,将其添加到“选定字段”列表框中,如图8-4所示。 图8-4“排序次序”对话框

  15. (4)单击“下一步”按钮,打开“表单向导”对话框(步骤4-完成)。在“请键入表单标题”文本框中,输入“职工简况表维护”,如图8-5所示。(4)单击“下一步”按钮,打开“表单向导”对话框(步骤4-完成)。在“请键入表单标题”文本框中,输入“职工简况表维护”,如图8-5所示。 图8-5“完成”对话框

  16. (5)单击“完成”按钮,打开“另存为”对话框。在“保存表单为”文本框中,输入“职工简况表维护.scx”,单击“保存”按钮。(5)单击“完成”按钮,打开“另存为”对话框。在“保存表单为”文本框中,输入“职工简况表维护.scx”,单击“保存”按钮。 (6)打开表单“职工表维护.scx”,适当调整表单控件的位置,然后保存表单。 (7)单击“常用”工具栏中的“运行”按钮,运行效果如图8-6所示。 图8-6 表单“职工表维护.scx”运行效果

  17. 3.使用“表单向导”创建一对多表单 【例8-2】创建一个按职工号排列的职工销售业绩的表单。 操作步骤如下: (1)打开“向导选取”对话框,在“选择要使用的向导:”列表框中,选择“一对多表单向导”选项,单击“确定”按钮,打开“一对多表单向导”对话框(步骤1-从父表中选定字段)。   在“数据库和表”列表框中,选择“Zgjk.dbf”表;在“可选字段”列表框中,分别选择“职工号”、“姓名”和“部门”3个字段 ,并将其添加到“选定字段”列表框,如图8-7所示。

  18. 图8-7“从父表中选定字段”对话框

  19. (2)单击“下一步”按钮,打开“一对多表单向导”对话框的步骤2-从子表中选定字段。在“数据库和表”列表框中,选择“Xs”表;在“可选字段”列表框中,选择“商品编号”和“销售数量”字段,然后将其添加到“选定字段”列表框,如图8-8所。(2)单击“下一步”按钮,打开“一对多表单向导”对话框的步骤2-从子表中选定字段。在“数据库和表”列表框中,选择“Xs”表;在“可选字段”列表框中,选择“商品编号”和“销售数量”字段,然后将其添加到“选定字段”列表框,如图8-8所。 图8-8“从子表中选定字段”对话框

  20. (3)单击“下一步”按钮,打开“一对多表单向导”对话框的步骤3-建立表之间的关系,如图8-9所示。(3)单击“下一步”按钮,打开“一对多表单向导”对话框的步骤3-建立表之间的关系,如图8-9所示。 图8-9“建立表之间的关系”对话框

  21. (4)单击“下一步”按钮,打开“一对多表单向导”对话框(步骤4-选择表单样式)。在“样式”列表框中,选择“标准式”;在“按钮类型”选项组中,选择“文本按钮”,如图8-10所示。 图8-10“选择表单样式”对话框

  22. (5)单击“下一步”按钮,打开“一对多表单向导”对话框(步骤5-排序次序)。在“可用的字段或索引标识”列表框中,选择“职工号”,单击“添加”按钮,将其添加到“选定字段”列表框,如图8-11所示。 图8-11“排序次序”对话框

  23. (6)单击“下一步”按钮,打开“一对多表单向导”对话框的步骤6-完成。在“键入表单标题”文本框中,输入:职工销售业绩,如图8-12所示 。 图8-12“完成”对话框   单击“完成”按钮,打开“另存为”对话框,以“职工销售业绩.scx”为名称保存表单。

  24. (7)打开表单“职工销售业绩.scx”,单击“常用”工具栏中的“运行”按钮 ,表单运行效果如图8-13所示。 图8-13 “职工销售业绩.scx” 表单运行效果 表单的上方显示一个职工的“职工号”、“姓名”和“部门”信息,表单的下方显示该职工销售的若干个商品的“商品编号”和“销售数量”的信息。

  25. §8.2.2“表单设计器” “使用“表单设计器”创建表单的一般步骤如下: 打开“表单设计器”→[设置数据环境]→添加对象→ 设置对象的属性→编写事件代码→保存表单→运行表单。 有的表单要设置数据环境,有的表单不设置数据环境。  打开“表单设计器”常用的方法有3种。 1.使用“项目管理器”打开“表单设计器” 2.使用“新建”对话框打开“表单设计器” 3.使用命令打开“表单设计器” 在命令窗口中键入命令:CREATE FORM [<表单名>]

  26. §8.2.3 “表单设计器”窗口和“表单设计器”工具栏 “表单设计器”用于创建新表单或修改已有的表单。“表单设计器”打开后,在VFP主窗口中,将出现“表单设计器”窗口、“属性”窗口、“表单设计器”工具栏和“表单控件”工具栏;在主窗口的菜单栏中增加了“表单”菜单,如图8-14所示。 图8-14 “表单设计器”窗口

  27. 1.“表单设计器”窗口 “表单设计器”窗口内嵌于VFP 6.0主容器中,“表单设计器”窗口中包含一个表单窗口。新创建的空白表单的默认名称为Form1。 2.“表单设计器”工具栏 “表单设计器”打开的同时还打开了“表单设计器”工具栏,单击“表单设计器”工具栏中的按钮,可以打开或关闭“表单控件”工具栏、“属性”窗口、“布局”工具栏、“数据环境”窗口和“代码”窗口等 。 3.“表单控件”工具栏 单击“表单设计器”工具栏中的“表单控件工具栏”按钮,可以激活或隐藏“表单控件”工具栏。 (1)“表单控件”工具栏中的按钮 “表单控件”工具栏中共有25个按钮,除了“选定对象”、“查看类”、“生成器锁定”和“按钮锁定”4个辅助按钮外,其余都是用于定义表单控件的按钮。

  28. (1)向表单添加对象 单击“表单控件”工具栏中的某控件按钮,然后将鼠标移到表单窗口的合适位置,若单击鼠标,则添加默认大小的对象;若拖动鼠标,则添加指定大小的对象。 (2) 调整对象的大小和位置 若要调整对象的大小和位置,应先选定要调整的对象。 1)选定对象 在表单上选定对象的方法见表8-5,被选定的对象四周出现8个控点。

  29. 2)移动对象 先选定对象,然后用鼠标将对象拖动到合适的位置。用鼠标拖动的步幅是一个或者半个小方格。选定对象后,若用箭头方向键移动,则可以进行细微的位置调整。 3)调整对象大小 选定对象,然后用鼠标拖动对象四周的控点,可改变对象的宽度和高度。 4)复制对象 选定要复制的对象,单击工具栏中的“复制”按钮,将其复制到剪贴板,单击工具栏中的“粘贴”按钮,复制的对象就出现在表单的左上角,然后将复制的新对象拖动到表单的合适的位置。 5)删除对象 选定要删除的对象,然后按Delete键。 6)对象对齐 先选定要对齐的多个对象,然后 执行“格式”菜单中“对齐”命令的子命令进行对齐,或者单击“表单设计器”工具栏中的“布局”按钮,打开“布局”工具栏,然后使用“布局”工具栏中的按钮进行对齐。

  30. 4.属性”窗口 “表单设计器”打开后,一般“属性”窗口也打开了。如果看不到“属性”窗口,可单击“表单设计器”工具栏中“属性窗口”按钮,打开“属性”窗口。 “属性”窗口包含对象框、选项卡、属性设置框、属性列表框和属性说明框,如图8-17所示。 图8-17“属性”窗口

  31. §8.2.4 创建表单实例  创建表单的一般步骤如下:  打开“表单设计器”→[设置数据环境]→添加对象→设置对象的属性→编写事件代码→保存表单→执行表单。  表单可以设置数据环境,也可以不设置数据环境。

  32. 【例8-3】创建一个如图8-19所示的表单,其功能为:输入圆的半径,单击“计算”按钮,即计算出圆的面积。 (1)设计界面 1)单击“新建”按钮,打开“新建”对话框,选择“表单”选项,单击“新建文件”按钮,打开“表单设计器”窗口。 2)单击“表单控件”工具栏中的“标签”控件,然后单击表单,表单上出现标签控件Lable1;用同样的方法创建标签控件Lable2。 3)单击“表单控件”工具栏中的“文本框”控件,然后单击表单,表单上出现文本框控件Text1;用同样的方法创建文本框控件Text2。 4)单击“表单控件”工具栏中的“命令按钮”控件,然后单击表单,表单上出现命令按钮控件Command1。

  33. (2)设置对象属性  在“属性”窗口中,分别设置各对象的属性值见下表。 思考:为什么文本框Value的值要设置为0 ?

  34. (3)编写事件代码 1)双击表单中的命令按钮Command1,打开“代码编辑”窗口。 2)在“过程”组合框中,选择Click事件。 3)在“代码”窗格中,输入如下代码 R=Thisform.Text1.Value Thisform.Text2.Value=3.1416*R*R (4)保存表单 1)单击工具栏中的“保存”按钮,打开“另存为”对话框。 2)在“另存为”对话框中,选择表单保存的位置,输入表单的名称“计算圆面积”。 3)单击“保存”按钮。

  35. (5)执行表单  单击“常用”工具栏中的“运行”按钮。在“半径R=”所标示的文本框中,输入半径值,例如输入12,单击“计算”按钮,在“圆的面积=”所标示的文本框中,显示圆的面积计算的结果,如图8-6所示。 图8-6 计算圆的面积

  36. §8.2.5 设置数据环境  数据环境指表单的数据源,数据源可以是表、视图和表间关系。数据环境建立后,当打开或运行表单时,数据环境所定义的表或视图即自动打开;关闭表单,表或视图也随之关闭。 【例8-4】创建一个表单,用于浏览职工简况和销售业绩。在表单上设置“上一条”、“下一条”和“退出”3个按钮。单击“上一条”或“下一条”按钮,则上下翻阅每一个职工基本简况和销售业绩;单击“退出”按钮,则关闭表单。 1.打开“数据环境设计器” 右击表单,在弹出的快捷菜单中选择“数据环境”命令,或在“显示”菜单中选择“数据环境”命令,即打开“数据环境设计器”窗口,并在VFP主窗口的菜单栏中增加一个“数据环境”菜单。

  37. 2.向“数据环境设计器”窗口添加表和表间关系2.向“数据环境设计器”窗口添加表和表间关系 (1)右键单击“数据环境设计器”窗口,在弹出的快捷菜单中选择“添加”命令,或在“数据环境”菜单中,选择“添加”命令,如果数据库已经打开,就会弹出“添加表或视图”对话框,如右图8-20所示。 (2)在“选定”选项组中,选择“表”;在“数据库中的表”列表框中,选择所需的Zgjk表,单击“添加”按钮,将其添加到“数据环境设计器”窗口中,如图8-21所示。 图8-20 “添加表或视图”对话框 图8-21 “数据环境设计器”窗口

  38.  (3)建立表间临时联系  在“数据环境设计器”窗口中,可以建立表间临时联系。方法为:将父表的关联字段拖放到子表的匹配索引标识上,前提条件是子表的索引项已经建立。 数据环境以及其中的表和表间联系都是对象,在“属性”窗口中,可以看到数据环境的对象名为DataEnviroment,表的对象名为Cursor1和Cursor2,表间联系的对象名为Relation。 3.创建字段映像  用鼠标将“数据环境设计器”窗口中的字段拖放到表单上,则在表单上生成相应的控件对象,这些控件对象与表中的数据便实现了数据捆绑。  若将“数据环境设计器”窗口中一个字段名拖放到表单上,则生成一个标签控件和另外一个控件(通常是文本框);若将“数据环境设计器”窗口中“   ”拖放到表单上,则生成表的全部映像控件;

  39. (3)创建字段映像  若将“数据环境设计器”窗口中表的标题栏拖放到表单上,则生成一个表格控件。 使用以上介绍的方法,将Zgjk.表“”拖放到表单上,将Xs.表标题栏拖放到表单上,调整控件位置后,如图8-22所示 图8-22“表单设计器”窗口

  40. 4.添加控件对象  单击“表单控件”工具栏中的“命令按钮”控件,然后单击表单,在表单上创建命令按钮控件Command1,Command2,Command3。 5.设置对象属性  在“属性”窗口中,分别设置各对象的属性值见下表。

  41. 6.编写对象的事件代码  (1)双击表单中的命令按钮Command1,打开“代码编辑”窗口。  (2)在“过程”组合框中,选择Click事件。  (3)在“代码”窗格中,输入如下代码: Skip -1 &&指针倒退一个记录 if bof() &&假如到了表文件开始标记 Messagebox("已到文件开始标记") &&弹出提示框 This.Enabled=.F. &&"上一条"按钮失效 else &&假如还没有到表文件开始标记 This.Enabled=.T. &&"上一条"按钮有效 endif This.Parent.Command2.Enabled=.T. &&"下一条"按钮有效 ThisForm.Refresh &&刷新表单,以显示当前记录的内容

  42. (4)输入命令按钮Command2的Click事件代码如下:(4)输入命令按钮Command2的Click事件代码如下: Skip &&指针前进一个记录 if eof() &&假如到了表文件结束标记 Messagebox("已到文件结束标记") &&弹出提示框 This.Enabled=.F. &&"下一条"按钮失效 skip -1 &&指针倒退一个记录 else &&假如还没有到表文件结束标记 This.Enabled=.T. &&"下一条"按钮有效 endif This.Parent.Command1.Enabled=.T. &&"上一条"按钮有效 ThisForm.Refresh &&刷新表单,以显示当前记录的内容 (5)输入命令按钮Command3的Click事件代码如下: ThisForm.Release &&释放表单

  43. 7.保存表单 (1)单击工具栏中的“保存”按钮,打开“另存为”对话框。 (2)输入表单的名称“职工简况和销售业绩 ”,然后单击“保存”按钮。 8.执行表单 单击“常用”工具栏中的“运行”按钮,表单运行效果如图8-26所示。 图8-26“职工浏览”表单运行效果

  44. §8.2.6 引用层次结构中的对象 1.对象的层次关系 VFP的对象分为容器对象和控件对象。容器对象中可包含容器对象和控件对象,这样就形成了容器对象的嵌套层次关系,如图8-27所示。如果要引用层次结构中的某个对象,那么必须指明该对象在层次结构中的位置,即对象的地址。 图8-27 容器对象的嵌套层次关系

  45. (1)绝对引用  绝对引用是从包含该对象的最外层容器对象开始,逐层描述到所引用的对象。 格式:[表单集名.]表单名.[容器对象名……].对象名.属性或方法 例如: ThisFormSet1.Form1.PageFrame1.Grid1.Column1.Text1.Value&&属性引用 ThisForm.Refresh&&方法引用 (2)相对引用  相对引用是从当前对象的位置开始,逐层(通常向下)描述到所引用的对象。  相对引用要使用引用关键字。引用关键字及其意义见下表。

  46. 格式:引用关键字.[容器对象名……].对象名.属性或方法格式:引用关键字.[容器对象名……].对象名.属性或方法 例如: This.Value &&当前对象的值属性 This.Command1.Caption&&当前容器对象中命令按钮的Caption属性 This.Parent.Caption&&当前对象的容器对象的Caption属性

  47. §8.2.7 自定义属性和方法 1.自定义属性 【例8-5】创建一个用户登录系统的表单。用户输入用户名和口令,单击“确定”按钮,系统检测用户名和口令是否正确。如果正确,则允许打开系统,否则提示重新输入;如果三次输入错误,则关闭系统。在程序代码中,以Zgjk表中的“姓名”字段值为用户名,以Zgjk表中的“职工号”字段值为口令。 (1)设计界面 在表单上创建三个标签控件(Lable1、Lable2和Lable3)、一个文本框(Text1)、一个组合框(Combo1)和两个命令按钮Command1和Command2,如右图所示。 图8-28 表单窗口

  48. (2)添加对象和设置对象属性 1)添加表单的新属性 ①选择“表单”菜单中的“新建属性”命令,打开“新建属性”对话框,如下图所示。 ②在“名称”框中输入新属性名“num”,然后单击“添加”按钮。 图8-29 “新建属性”对话框

  49. 2)在“属性”窗口中,分别设置各对象的属性值见下表。2)在“属性”窗口中,分别设置各对象的属性值见下表。

  50. 3)使用“生成器”设置对象的属性值 组合框的属性值可以使用“属性”窗口来设置,也可以使用“生成器”来设置。具体操作方法如下: ①右击组合框,在弹出的快捷菜单中选择“生成器”命令,打开“组合框生成器”对话框。 ②在“数据库和表”列表框中,选择Zgjk表;在“可用字段”列表框中,选择“姓名”,单击“添加”按钮 ,将其添加到“选定字段”列表框中,如图8-30所示。 图8-30 组合框生成器

More Related