




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章第八章 面向对象程序设计面向对象程序设计8.1 面向对象程序设计的概念8.2 VFP中的类8.3 VFP中对象的操作第八章第八章 面向对象程序设计面向对象程序设计 VFP6支持过程化程序设计和面向对象程序设计两种程序设计与开发的类型。过程化程序设计:过程化程序设计:它是采用结构化编程语它是采用结构化编程语句来编写的程序。这类方法的特点是容易句来编写的程序。这类方法的特点是容易把一个复杂的程序分解为若干个较小的过把一个复杂的程序分解为若干个较小的过程,每个过程都可进行独立的调试。程,每个过程都可进行独立的调试。这类设计方法发展的总思想是从程序员角这类设计方法发展的总思想是从程序员角度考虑使
2、程序设计更简单,而较少从使用度考虑使程序设计更简单,而较少从使用角度去考虑。使用这类方法设计的程序流角度去考虑。使用这类方法设计的程序流程完全由程序员控制,使用者只能做由程程完全由程序员控制,使用者只能做由程序员预先安排好的事情。序员预先安排好的事情。面向对象程序设计面向对象程序设计:这类程序设计思想是面向这类程序设计思想是面向对象,即设计的重要任务在于描述对象。程序对象,即设计的重要任务在于描述对象。程序是由事件驱动的,因而,在执行过程中,持续是由事件驱动的,因而,在执行过程中,持续等待的是一个发生在对象上的事件。而发生什等待的是一个发生在对象上的事件。而发生什么事件则要看使用者的操作,如单
3、击、双击鼠么事件则要看使用者的操作,如单击、双击鼠标等。至于下一步的程序流向,则要看驱动的标等。至于下一步的程序流向,则要看驱动的是什么事件。这类程序设计的主要目的是从任是什么事件。这类程序设计的主要目的是从任何方便与简化使用入手,由使用者控制程序流何方便与简化使用入手,由使用者控制程序流向,这在一定程序上增加了编程的难度。向,这在一定程序上增加了编程的难度。8.1 面向对象的程序设计的概念面向对象的程序设计的概念面向对象编程用“对象”表现事物,用“事件”表示处理事物的动作,用“方法”表现处理事物的过程。面向对象程序设计时,不再是单纯地从代码的第一行一直编写到最后一行,而是考虑如何创建对象,利
4、用对象来简化程序设计。Visual FoxPro不但仍然支持标准的结构化程序设计,而且在语言上还进行了扩展,提供了面向对象程序设计的强大功能和更大灵活性。VFP是面向对象(Object Oriented)的,是以事件驱动为运行机制的。8.1 面向对象的程序设计的概念面向对象的程序设计的概念例8.1:设计一个窗口,如下图所示窗口中包含两个文本框,用于输入数据,还有一个命令按纽,单击它可以将两个文本框中的数相加,并在等号右边显示结果在在VFP中,窗口叫做中,窗口叫做“表单表单”,表,表单的扩展名为单的扩展名为.scx。图8.1 例8.1示例图8.1 面向对象的程序设计的概念面向对象的程序设计的概念
5、CLICK事件代码:thisform.label3.caption=alltrim(str(val(thisform.text1.value)+val(thisform.text2.value)8.1.1 对象对象1.对象对象 面向对象的理论首先把现实世界中的各种事物,划分为不同的类(Class),类是抽象的概念。类有“状态”和“行为”,“状态”是类的静态属性,但可以通过动态的“行为”来改变。 一个类的具体实例就是对象(Object)。类是抽象的,而对象是具体的。对象具有该类的状态和行为。 客观世界里的任何实体都可以被看作是对象。对象可以是具体的物,也可以指某些概念。 从编程的角度来看,对象是
6、一种将数据和操作过程结合在一起的数据结构,或者是一种具有属性(数据)和方法(过程和函数)的集合体。事实上程序中的对象就是对客观世界中对象的一种抽象描述。8.1.1 对象对象 从程序员的角度:世界上一切东西都是对象;在面向对象系统中一切成分都是对象,大到整个系统、项目、数据库、表、表单,小到窗口、控件都被视为对象。 从程序的角度:对象是一个实体,包含一定的属性和方法(动作),属性用来表示对象的状态,方法用来描述对象的行为,并且对象能够对外界事件进行响应。8.1.1 对象对象 在面向对象的方法里,对象被定义为由属性和相关方法组成的包。 方法是描述对象行为的过程,是对当某个对象接受了某个信息后所采取
7、的一系列操作的描述。8.1.1 对象对象2.对象的特性对象的特性一般对象具有如下属性: 属性(属性(Property):属性用来表示对象的状态。在程序设计中,类或对象的“状态”或特征称为属性。属性具有属性名和属性值,通过属性名,可以访问属性值,或为属性赋值。 事件(事件(Event):类或对象可能执行或发生的行为称为事件。8.1.1 对象对象 事件过程(事件过程(Event Procedure):即对象响应某个事件所执行的程序代码。程序代码是为处理特定的事件而编写的一段程序,也称为事件代码。 面向对象的程序设计的核心思路,就是为这些事件书写程序代码,在代码中改变对象的一些属性值,并让对象做出我
8、们所期望的反应。 方法(方法(Method):又称方法程序,是描述对象行为的过程。即指对象所固有的完成某种任务的功能,是对象能够执行的一个操作。因此,“方法”类似于面向过程程序设计中的“过程”和“函数”。VFP的一些常用方法:的一些常用方法:RELEASE:从内存中释放表单或表单集。从内存中释放表单或表单集。Show: 显示表单显示表单Setfocus:为一个控件指定焦点为一个控件指定焦点Hide:隐藏表单、表单集和工具栏隐藏表单、表单集和工具栏Quit:退出退出VFP的一个实例。的一个实例。8.1.1 对象对象 从面向对象的理论看,“方法”与“事件”本质上是相同的。“事件”可以看成系统预先定
9、义的空“方法”,可以在事件中调用用户定义的方法,也可以在用户自定义方法中激活特定事件。但在VFP中,“方法”在很多情况下更基本,因为VFP预先定义了一些方法,可以在事件中调用它们,而它们一般不调用事件。8.1.2 类类1.类的概念类的概念 类是对一类相似对象的性质描述,这些对象具有相同种类的属性以及方法 。 为了便于开发系统,面向对象的开发工具一般都会提供很多预先定义好的类和对象,并为这些类和对象预先设置足够多的属性和事件,以及足够多的方法,供程序员自由调用。 通常,把基于某个类生成的对象称为这个类的实例。可以说任何一个对象都是某个类的一个实例。 方法虽然定义在类中,但执行方法的主体是对象。同
10、一个方法,若由不同的对象去执行,一般会产生不同的效果。8.1.2 类类类类属性属性1方法方法方法方法属性属性Eg:TEXTBOX类的一些常用属性:类的一些常用属性:Alignment:设置文本的对齐方式。设置文本的对齐方式。Fontsize:指定字体的大小。指定字体的大小。Value:文本框中的任何数据类型的值,或文本框中的任何数据类型的值,或者字段或变量的数据类型。者字段或变量的数据类型。1.类的概念类的概念图8.2 类的结构8.1.2 类类2.子类与继承子类与继承 在面向对象的方法里,继承就是一个类可以在另一个类的基础上建立,继承该类的所有属性和事件。被继承的类称为父类,继承父类建立的类称
11、为子类。 在子类中,不仅可以继承父类的所有特性,而且还可以增加自己的属性和方法程序。 一个子类的成员一般包括: 从其父类继承的属性和方法; 由子类自己定义的属性和方法。 继承可以使在父类所作的改动自动反映到它的所有子类上8.1.2 类类 类可以实现多层次的继承关系。 例如:类继承了类,类又继承了类。因此,类既是类的子类,也是类的父类。 在一个层次结构中,如果有一个类,所有的其他的类都是由它直接或间接派生出来的,这个类就称为基类。基类。8.2 VFP中的基类中的基类8.2.1 Visual FoxPro基类基类 Visual FoxPro基类是系统本身内含的,并不存放在某个类库中。用户可以基于基
12、类生成所需要的对象,也可以扩展基类创建自己的子类。8-1 Visual Foxpro基类 列表类名含义类名含义ActiveDoc活动文档Label标签CheckBox复选框Line线条Column(表格)列Listbox列表框ComboBox组合框OlecontrolOLE容器控件CommandButton命令按钮OleboundcontrolOLE绑定控件CommandGroup命令按钮组OptionButton选项按钮Container容器类Optiongroup选项按钮组Contorl控件类Page页Custom定制PageFrame页框EditBox编辑框ProjectHook项目挂钩
13、Form表单Separator分隔符FormSet表单集Shape图形Grid 表格Spinner微调控件Header(列)标头TextBox文本框HyperLink超级链接Timer定时器Image图象ToolBar工具栏8.2.1 Visual FoxPro基类基类 每个VFP基类都有自己的属性、方法和事件。当扩展某个基类创建用户自定义类时,该基类就是用户自定义类的父类,用户自定义类继承该基类中的属性、方法和事件。 8.2.2 容器与控件容器与控件1.类的分类类的分类 按照用类创建的对象是否可视来划分,VFP的类可分为:可视类和不可视类; 按照类中能否放置其他类的对象来划分,可以分为:容器
14、类和控件类(非容器类)8.2.2 容器与控件容器与控件2.容器与控件容器与控件 控件类:可创建包含其他被保护对象的控件对象,是用以显示数据、执行操作或使表单更易阅读的一种图形对象。即控件是一个可以以图形化的方式显示出来并能与用户进行交互的对象,例如:一个命令按纽、一个文本框等。控件通常放置在一个容器里。控件类不能包含其它对象。可以使用“表单设计器”的“表单控件”工具栏在表单上绘制控件。 容器类:被认为是一种特殊的控件,它能包含其他的对象(控件或容器),并且允许访问这些对象。容器类所能包含的对象见P146表8.2。8.2.2 容器与控件容器与控件说明:说明: 不同的容器所能包含的对象类型不同。
15、一个容器内的对象本身也可以是容器,这样就构成了对象的嵌套层次关系,它指的是包容与被包容的关系。而类的层次指的是继承与被继承的关系。 在对象的层次关系中,要引用其中的某个对象,需要指明对象在嵌套层次中的位置。此时要用到如下四个属性或关键字:parent、this、Thisform、thisformset8.2.3 属性、事件与方法属性、事件与方法不同的对象具有不同的属性、事件与方法。可以把属性看作是对象的特征,把事件看作是对象能够响应和识别的动作,把方法看作是对象的行为。8.2.3 属性、事件与方法属性、事件与方法1.属性属性 属性用来描述对象的状态或特征,子类继承父类的全部属性。 VFP的所有
16、基类至少具有4个属性,见P147表8.3。 若一个对象基于VFP基类而生成,则该对象在属性CLASS和BASECLASS上的取值相同,而在CLASSLIBRARY和属性PARENTCLASS上的取值为空串。 若一个对象基于VFP基类的直接子类而生成,则该对象在属性PARENTCLASS和BASECLASS上的取值相同。8.2.3 属性、事件与方法属性、事件与方法例8.2 假设objtb是类MyTextBox的一个实例对象,类MyTextBox是基类TextBox的一个直接子类,那么objtb对象的BaseClass属性值是() ,ParentClass属性值是() 8.2.3 属性、事件与方法
17、属性、事件与方法2. 事件事件 事件是一种由系统预先定义而由用户或系统发出的动作。事件作用于对象,对象识别事件并作出相应反应。即类或对象可能执行或发生的行为称为事件(EVENT)。事件可以由系统引发,也可以由用户引发,还可以由代码引发。 与方法集可以无限扩展不同,事件集是固定的,用户不能定义新的事件 。 VFP中的每一个类,都具有至少个事件,见P148表8.4;8.2.3 属性、事件与方法属性、事件与方法 说明: 事件代码既能在事件引发时执行,也可以象方法一样被显示调用。 在容器对象的嵌套层次中,事件的处理遵循独立性原则,即每个对象识别并处理属于自己的事件;但这个原则不适用于命令按纽组和选项按
18、纽组。8.2.3 属性、事件与方法属性、事件与方法例如:一个选项按钮组包含两个选项按钮option1和option2,其中按钮组optiongroup1和option1都有click事件代码,而option2没有指定click事件代码,则当用户单击option1时,将引发option1的click事件,执行相应的事件代码。此时,不会引发optiongroup1的click事件,但如果单击option2,则会引发按钮组optiongroup1的click事件,执行按钮组的相应事件代码8.2.3 属性、事件与方法属性、事件与方法3.事件循环事件循环 VFP6.0中用READ EVENTS命令建立循
19、环,用CLEAR EVENT命令终止循环。 利用VFP6.0设计程序时,必须创建事件循环,否则不能正常运行。READ EVENTS通常出现在应用程序的主程序中,同时必须保证主程序调出的界面中有发出CLEAR EVENT命令的机制,否则程序进入死循环。8.2.3 属性、事件与方法属性、事件与方法4.方法方法 对象的行为或动作被称为方法,方法程序是VFP为对象内定的通用过程,能使对象执行一个操作,方法程序过程代码由VFP定义,对用户是不可见的。 VFP常见的方法有: Release:从内存中释放表单或表单集。 Show: 显示表单。 Setfocus:为一个控件指定焦点。 Hide:隐藏表单、表单
20、集和工具栏。 Refresh:重画表单或控件,并刷新所有值。 Clear:清除组合框或列表框控件中的内容8.2.3 属性、事件与方法属性、事件与方法 Setall(“属性名“,值,”控件名称“):给当前对象所包含的所有指定类型控件赋值同样属性值。例如:当前对象为一个FORM,现在要将FORM中所有包含的Text控件的Enabled属性设为不可用,则代码为:Thisform.Setall(“Enabled”,.F.,”text”) Quit:退出VFP的一个实例。8.3 VFP中对象的操作中对象的操作8.3.1 创建对象创建对象 在程序设计中,可以使用CREATEOBJECT函数来直接生成基于某
21、个类的对象。 格式:CREATEOBJECT(,,) 功能:函数基于指定的类生成一个对象,并返回对象的引用 。8.3 VFP中对象的操作中对象的操作 说明: 类名可以是基类,也可以是自定义类。 用CreateObject()函数创建的对象是不可见的,可以使用下面的语句使其可见。Object.show或Object.visible=.T.8.3 VFP中对象的操作中对象的操作例例8.3:基于VFP基类FORM生成一个表单对象,然后将该对象显示出来。formwelcome=createobject(“form”)formwelcome.show或: formwelcome.visible=.t.8
22、.3 VFP中对象的操作中对象的操作例8.4基于VFP基类FORM生成一个表单对象,然后显示输出该表单对象的一些属性值。oform=createobject(form)?class:+oform.class?baseclass:+oform.baseclass?classlibrary:+oform.classlibrary?parentclass:+oform.parentclass8.3.2 对象的引用对象的引用 在面向对象的程序设计中常常要引用对象,或引用对象的属性、事件与方法程序。 对象属性访问以及对象方法调用的基本格式如下:.(参数列表) 容器对象作为父对象,可以包含子对象,子对象如果是容器对象,还可以包含下一级子对象,形成对象的层次关系。在VFP中,对象是通过容器的层次关系来引用的,引用分为绝对引用和相对引用。8.3.2 对象的引用对象的引用 绝对引用:从最高容器开始逐层向下直到某个对象为止的引用称为绝对引用。 相对引用:从正在为编写事件代码的对象出发,通过逐层向高一层或低一层直到另一对象的引用称为相对引用。使用相对引用常用到表8.5所列属性或关键字 。表8.5相对引用关键字属性或关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届湖南邵阳市城区七年级数学第一学期期末检测模拟试题含解析
- 广东省东莞市2026届数学九上期末考试模拟试题含解析
- IE专业知识培训课件
- 个人延期还款的协议书14篇
- 高中《体育与健康》开学第一课课件
- 互联网金融行业现状及前景预测
- 2026届广东省深圳市龙岗区大鹏新区华侨中学数学九年级第一学期期末联考模拟试题含解析
- 邮储银行酒泉市金塔县2025秋招笔试言语理解题专练及答案
- 邮储银行乌兰察布市兴和县2025秋招笔试思维策略题专练及答案
- 邮储银行双鸭山市尖山区2025秋招笔试计算机基础专练及答案
- 2025-2026学年高一历史上学期第一次月考卷(原卷及解析)(江苏专用)
- 合同的效力教学设计-2025-2026学年中职专业课-经济法律法规-纳税事务-财经商贸大类
- 辽宁省名校联盟2025-2026学年高三上学期9月联合考试数学试题(无答案)
- 2025-2030中国农机金融租赁业务模式创新与风险定价策略报告
- 2025-2030年中国抽油机行业市场现状供需分析及投资评估规划分析研究报告
- 医用废弃口罩管理制度
- 大米先生公司管理制度
- 高考英语一轮专项复习:高考试题中的熟词生义(含解析)
- 部编版四年级上册语文大单元教学设计范例
- 第三单元整体阅读之人物篇 统编版高中语文选择性必修上册
- 高二上学期第一次月考物理试卷(附答题卷和答案)
评论
0/150
提交评论