第9章面向对象程序设计_第1页
第9章面向对象程序设计_第2页
第9章面向对象程序设计_第3页
第9章面向对象程序设计_第4页
第9章面向对象程序设计_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualFoxPuo

程序设计基础第9章面向对象程序设计面向对象基本概念的引入9.1VisualFoxPro中的类和对象9.2对象的操作9.39.1面向对象基本概念的引入传统的结构化程序设计(StructuredProgramming)是一种自顶向下、逐层细化、逐步求精、模块化、过程化程序设计方法,即程序的执行按照程序员编写程序代码的控制结构的顺序工作。

面向对象的程序设计(Object-OrientedProgramming,OOP)是一种系统化的程序设计方法。它允许抽象化、模块化的分层结构,且具有多态性、继承性和封装性等优点。

9.1.1对象在面向对象的程序设计方法中,程序设计人员不是完全按过程对求解问题进行分解,而是按照面向对象的观点来描述问题、分解问题,最后选择一种支持面向对象方法的程序语言来解决问题。在这种方法中,设计人员直接用一种称之为“对象”的程序构件来描述客观问题中“实体”,并用“对象”间的消息来模拟实体间的联系,用“类”来模拟这些实体间的共性。对象(Object)可以是现实世界中的任意物体,对象都具有一定的属性、特征,并可以产生一定的行为。对象是组成程序的构件,就好像在面向过程的结构化程序设计方法中的子程序和函数的作用一样。对象具有属性、事件和方法。9.1.2类类是对象的原型,是一组具有公共方法和一般属性对象的抽象描述。在面向对象的编程技术中,类(class)就是具有相同属性和相同操作的一组相似对象,而对象则可以看作是某个类的一个具体实例。在面向对象的程序设计中,系统中包含了一个基本类的集合,称为基类,它是该系统中所有类的来源,类的定义决定了类具有以下4个特性:抽象、继承、封装、多态。1.抽象在类的定义中,类也可以说是一组具有内部状态和运动规律对象的抽象,抽象是一种从一般的观点看待事物的方法,是用语言对需要程序解决问题的现实世界进行模拟,在计算机上模拟一个现实世界。

2.继承继承是指子类沿用父类的特征,可以利用已有的类创建新类。

可以不同。

3.封装面向对象技术把数据与处理代码组合在一个类的定义中,这种组合方式称为封装。

4.多态多态性是指一些关联的类包含同名的方法程序,但方法程序的内容。9.1.3属性属性用于描述对象具有的特征。在VisualFoxPro中,对基类的最小属性集介绍如下。● Class:类名,当前对象基于哪个类而生成。● BaseClass:基类名,当前类从哪个基类派生而来。● ClassLibrary:类库名,当前类存放于哪个类库之中。● ParentClass:父类名,当前类从哪个父类直接派生而来。

9.1.4事件事件是对象能够识别的动作,是一种预先定义好的,用户无法建立的新事件。其常用事件如表9.1所示。9.1.5事件过程当事件被触发时,对象可以识别该事件,并且对该事件做出响应,也就是立即执行为该事件编写的程序代码。为事件编写的程序代码称为事件过程。

9.1.6方法方法与事件过程不同,方法是对象内部预先编制好的内部过程或内部函数,它不需要用户自己定义或编制。方法独立于事件而存在,不必响应发生的事件。

9.2VisualFoxPro中的类和对象

9.2.1VisualFoxPro中的常用基类VisualFoxPro6.0中的基类是系统内部定义的基本类。VisualFoxPro的常用基类可分为容器和控件两类

1.容器类容器类可以包含其他对象,并且允许访问这些对象。下面列出各控件类可以包含的对象,如表9.2所示。2.控件类控件类是比容器类封装得更完全的类,其主要用于进行一种或几种相关的控制,但与此同时也会丧失一些灵活性。表9.3列出了VisualFoxPro中的常用控件。9.2.2类的创建

1.类的创建方法

创建新类有3种方式,即使用菜单方式、使用项目管理器方式和使用命令方式。方法一:使用菜单方式创建类。(1)选择“文件”/“新建”命令,或者在工具栏上单击“新建”按钮。从打开的对话框中选中“类”单选按钮,再单击“新建文件”按钮,随即弹出“新建类”对话框,如图9.1所示。图9.1“新建类”对话框

(2)设置结束后,单击“确定”按钮,打开“类设计器”窗口,如图9.2所示。

在本例中,将caption属性设置为quit,双击该按钮,打开其相应的代码窗口,从中输入:thisform.release。图9.2“类设计器”窗口(3)单击“保存”按钮,保存创建的类,同时关闭“类设计器”窗口。(4)打开控件工具栏,单击“查看类”按钮,从弹出的快捷菜单中选择“添加”选项,如图9.3所示。再在打开的对话框中选择所建立的库文件privateclass,即可把新建的类quitclass添加到表单控件设计器上,如图9.4所示。

图9.3添加新类

图9.4新类添加完成方法二:使用项目管理器方式创建类。方法三:以命令方式创建类。(1)命令格式1:createclass<类名>[of<类库名>]命令功能:打开“新建类”对话框,建立新类。(2)命令格式2:

defineclass<类名>as<父类>[<对象>]<属性>=<属性值>[addobject<对象>][as<类名>]With<属性列表>[procedure<事件名称>]<命令序列>

Endprocedure

Enddefine

命令功能:建立一个新类。

【例9.1】定义一个表单类“quitform”,表单上有quitclass类按钮。DefineclassquitformasformCaption="关闭窗体"Height=270Width=300

Backcolor=rgb(192,100,92)Addobjectquitclassascommandbutton

Withcaption="quit"Left=200Top=70Height=25Width=35

Endwith

Procedurequitclass.click

Ifmessagebox("确定?",4+16+0,"确定")=6

Thisform.release

Endif

Endprocedure

Enddefine

2.添加类的新属性和方法程序为类新建属性的方法如下。(1)选择“文件”/“打开”命令,或者单击工具栏上的“打开”按钮,在弹出的“打开”对话框中选择需要添加新属性的类。(2)选择“类设计器”窗口,然后选择“类”/“新建属性”命令,将弹出如图9.5所示的“新建属性”对话框。图9.5“新建属性”对话框(3)以上选项设置完成后,单击“添加”按钮,即可将新建属性添加到当前类中,如图9.6所示。图9.6属性设置窗口

(4)新建方法的具体过程为:选中类设计器,在系统菜单栏中选择“类”/“新建方法程序”命令,打开如图9.7所示的“新建方法程序”对话框,从中进行适当的设置,再单击“添加”按钮即可。图9.7“新建方法程序”对话框

该对话框中各选项内容与“新建属性”对话框相类似,只是缺少Assign和Access方法程序两个选项。新建方法程序的代码编写与类中已存在的方法程序完全相同。3.类的属性、方法的修改及信息查看(1)属性的修改。(2)方法的修改。

图9.8代码编辑窗口9.3对象的操作在进行面向对象程序设计时,对象的操作是通过修改对象的属性值或执行对象的方法程序来完成的。属性可以通过属性窗口设置新的属性值,在程序运行阶段属性要通过相应的命令来对属性值进行修改。

9.3.1对象的创建创建对象的方法有两种,下面将对其进行具体介绍。方法一:使用CreatrObject()函数创建对象。命令格式:CreatrObject(<类名>[<参数表达式>])方法二:使用AddObject方法添加对象。命令格式:<容器对象>.AddObject(<控件对象>,<类名>[,参数>])【例9.2】创建一个名为form1的表单。并添加一个标题为“欢迎使用本系统”的标签。Form1.form=createobject("form")Form1.form.show(1)Form1=createobject("form")Form1.addobject("labelwelcom","label")Form1.labelwelcom.visible=.t.Form1.labelwelcom.caption="欢迎使用本系统"

9.3.2对象的引用对象的引用就是要说明它在应用程序中所在的层次、位置、对象名、属性名和方法名,从而实现对该对象的有效操作。

其中引用分绝对引用和相对引用两种。(1)绝对引用:绝对引用是通过引用对象与所有父对象(包含了当前对象的上层对象)的层次关系来描述其位置,包括属性的决定引用和方法的绝对引用。属性的绝对引用格式:父对象.对象名.属性名方法的绝对引用格式:父对象.对象名.方法名其中,父对象是指包含被引用对象的外层对象。(2)相对引用:在容器层次中引用对象时(如在表单集中,在表单上命令按钮的Click事件里),可以通过快捷方式指明所要处理的对象,引用时可以只指出被引用对象相对于当前表单集、当前表单的位置即可,而不需要列出所有父类对象的对象名,这种引用方式就是相对引用。在表9.4中列出了一些相对引用中常用的属性和关键字

【例9.3】相对引用示例。THISFORMSET.frm1.cmd1.Caption="OK"包含命令的地方是:在此表单集的任意表单的任意控件相应的事件或方法程序代码中。THISFORM.cmd1.Capton="OK"包含命令的地方是:在cmd1所在的同一表单的任意控件相应的事件或方法程序代码中。THIS.Caption="OK"包含命令的地方是:在需要改变其标题的控件的事件或方法程序代码中。THIS.Parent.BackColor=RGB(192,0,0)包含命令的地方是:在表单的一个控件的事件或方法程序代码中,此例的命令设置表单的背景色为暗红色。9.3.3设置对象属性

1.在程序运行时设置对象的属性命令格式1:<对象>.<属性>=<属性值>命令格式2:WITH<>[<.语句>]ENDWITH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论