VFP计算机课件第八章._第1页
VFP计算机课件第八章._第2页
免费预览已结束,剩余29页可下载查看

下载本文档

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

文档简介

1、本章目录面向对錬的概念Visual FoxPro 6.0 中的类与对彖 类与对彖的程序设计方法 类和对象可视化设计方法/r/i 丁厂弟八厚目录W第一节上灰巻第二节乜洽笫三节巻第四节退出4目录上页下页退出第一节面向对象的概念在面向对象的程序设计(Object-Oriented Programming )中,对彖(Object)是组成程序的构件,就好像在面向过程 的结构化程序设计方法中的子程序和函数一样。在面向对象的程序设计方法中,程序设计人员不是完 全按过程对求解问题进行分解,而是按照面向对彖的观 点来描述问题、分解问题,最后选择一种支持而向对象 方法的程序语言来解决问题。目录上页5在面向对象程

2、序设计中,“对象”是对现实世界屮 实体的一种模拟工具。如命令按钮、文本框、菜单、工 具栏等。退出63、琴 件(Event)方法是与对象相关的过程,是指对象为完成而编写的一段代码。当作用在对象上的某一个设定“事件” 发生时,与该事件相联系的“方法程序”(当然假设对彖 的设计者已经设计了该程序并与对彖一起封装) 就运行并 完成该程序的功能。在面向对彖的方法里,继承是指在基于现冇的类创 建新类时,新类继承了现有类里的方法和属性。此外, 可以为新类添加新的方法和属性。 我们把新类称为现有 类的子类,而把现有类称为新类的父类。 一个子类的 成员一般包括:(1) 从其父类继承的属性和方法。下页退出55类”

3、是具有相同属性特征和行为规则的多个“对彖”的 i种统一描述。“类”是一个数据模式和若干个程序过程经封装而形成的一个整体,它是对现实世界的一种模拟与抽象,而“对象”则是“类”的一个具体实例。退出7(2) 由子类自己定义的属性和方法。CommandGroup命令按钮组OptionButton选项按钮上页Container容黔Optiongroup选项按钮组Contort控件Page页下页Custom定制PageFrame页框EditBoxProjectllook项目挂钩退出Fomi表单Separator分隔符IFtOTntilflt表单集Shape图形Grid衣格Spinner微调控件Header

4、(列)标头TcxtBox文本框HyperLink超级链接Timer定时器Image图象ToolBar工具栏目录CommandRuttonOkboundcontrolOI翩定控件命令按钮上页下页& Visual FoxPro 基类CREATEOBJECT(v 类名珂,v 参数1,v 参数2, .1)函数基于指定的类生成一个对象, 的引用。并返回对象类名AdiveDoc含义CheckBoxColumn活动文档复选框类名IbclLineComboBox(农格列组合框ListboxOlecontrol标签线条列衣框O辱器控件退出含义退出10L封装性对彖的封装性,就是指将对象的方法程序和属性代

5、码包装在一起。封装是借助类來实现的。从一种现有的、普遍的类派生出的一种新的、具体 的类型的方法。现有的、普遍的的类叫做父类,也称基 类。新的、具体的类被称作子类,也被称作派生类。子 类继承父类的属性或方法。一个子类可以拥有其父类的 全部动能,并可吞此基础上,添加其他功能。.所谓多态性实际上就是在运行时方法与对象的动态 绑定。多态性使得用户可以将所定义的方法应用于多个 对象,并使得程序更加容易扩充 n第二节 Visual FoxPro 6.0 中的类与对象sual FoxPro生0的类各种窗口、菜单栏、单选按钮、复选框等在面向 对象的设计中都称之“对象”。Visual FoxPro 6.0対这

6、些常用的对象提供了丰富的基木类(基类)供用户直接 使用。根据实际需要对它们进行相应的改造以形成“子 类”或者直接形成“对象”,以提高开发者的工作效率。Visual FoxPro 6.0的基类共分为两个犬类:容器类 和非容二,面退出上页下页9退出11器类。容器类可以包含其他对象,并且允许访问这些对象。 表 8-1列出了每种容器类所能包含的对象。退出12在进行容器类“子类”或“对象”的设计时,往往要引用容器中某一个特定对象,这就要掌握而向对象的标识方法。(1)容器类中对象的层次容器中的对象仍然可以是一个容器,一般把一个 “对象”的直接容器称为“父容器”, 不能将一个对象 的间接容器错误地视为“父容

7、器”。图 8-1表示了町能的一种容器类嵌套的状况。上页下页退出上页下页表8-1容器类所能包含的对象控件类的封装比容器类更为严密,但也因此损欠了 一些灵活性,控件类中不能包含其他类,最典型的就是 命令按钮。14怪件控件目录上页下页退出目录上页下页退出组选顷1O选I页2Formset. Form. PageFrame Page. Grid. Column. CmdlaS页柩13图8-1容器类的嵌套3)儿个代词的用法0bjecll,0bject2是对象的名字 是右边Object2的“父容器 后一个对象的名字,中间用小园点 如图 8 1 中列容器中的控件名可以表示为其中左边 Objectl 这种格式所

8、表示的是垠 分隔。(2)对象使用局域名每个对象都有一个名字,在给对象命名时,只要保 证同一个“父容器”下的各个对彖不重名,即对彖使用 的是局域名,因此不能单独使用对象名来引用对彖,对 彖引用的一般格式是:说明:这些代词只能在方法代码或事件代码屮便川。代词总义This麦示对象本身Parent农示对彖於“父容器尸ThisForm表示对象所在的表单ThisFornset屉示对象所住表单所属农单集1516IC 切 EflJ 基于 Visual FoxPro的 FORM 类生成一个对象,然 后访问该对彖的一些属性和方法。Oforin-CREATEOBJECT(,zFormzz)&生成一个空白表单

9、Oforrn. show&显示表单Oforrn. caption 二演示&修改表单的标题? “这是一个生成对象的演示程序” &在表单上输出字符如杲 Foim1 中有一个命令按钮组 commandgroup 1,该命令按旬组有两个命令按钮:command 1 和 command 工 1 abe 11崑表单 form 1 _h的一个标签控件。上页I下页目录上页下页退出Oform.releas目录17七 his . paren七 command2 uaption=n取消” this form. command2 . capon=取消IThi s . Paren 七 paren

10、七.Caption=狈!J 试窗 口 ”I七 hisform. cap七 ion=测|试窗口 ”退出Visual FoxPro 7 0 中的事件与芳法1. Visual FoxPro 6. 0中的事件上页下页退出上页下页表8 2 Visual FoxPro 6 0核心事件集邠件啷件被激发若的动作Init创乂对彖Destroy从内仔中秤放対彖Click用户使用凯标主按忸单击对发DblClick用户使用歐标is按锁戏击对線RithtClick用门使用駅杯辅按饮单M对鮫GotFocus対線获紂焦点由用户动作引也.KlKcTabtt或单击歐标左按fll或音在代码中便用SCIFCKUS方法程睜LostF

11、ocus对線失去俶底由用门动作引起, 如按Tab fit或尬占就标主按L或音在代码中使用SctFocus方汕秤序便焦点移到紡的対彖1:.Keypress用户按卜或胖放键MouseDown、勺値标指计停在个对彖上肘用八胺下就标按細MouseMove用户在对線上移幼61标MouseUp肖就标指什停存个対彖I:时用户舁放锐标按细Valid邠厉鲨证”件洛对線矢/焦点澹如果脸证及达式的血为假(F.)则 他点离不开该对線When0询验证0件严对猱获何焦戍询如果柴证农达式的值为假CFJ则 该对線不能获彻似点20钮时,只会触发命令按钮的 Click事件,不会触发表 单的Click事件。目录上页下页退出当作用在

12、对象上的一个事件发生时,若没有与之相 关的代码,则不会发生任何操作。开发者只需对少数儿 个要用到的事件设计响应程序。事件的响应程序一般是一个过程,用事件的名称来 命名。系统对事件的响应有先后顺序。为对彖编写事件代码时,注意两条基本原则:(1)容器不处理与所包含的对象相关联的事件。例如:一个命令按钮位于表单上,当用户单击命令按-尸(2 )若没有与某对象相关联的事件代码,则 Visual FoxPro 在该对象所在的类的层次结构屮逐层向丄检查是否有与此事件相关联的代码。若找到则执行此代码。目录上页下页(1)事件是面向对彖方法中骡动程序的引擎。退出(2)事件的触发与停止。事件的触发分为用户操作触发和

13、在程序运行过程 中触发两种方式。典型的用户操作触发事件有用户单 击鼠标时触发 Click事件。程序运行过程中触发事件 表示在程序运行过程中口动触发,例如某对象的 lint事件,是在对象创建时程序自动触发。通常让程序允 许事件触发使用 READEVENTS命令。如果不允许事件 触发可以使用 CLEAREVENTS命令21退出节类与对象的程序化设计方進1.用程序方法设计类创建类的语法基本框DEFINE CLASS ClassNamel AS ParentClass OLEPUBLIC目录PROTECTED| HIDDEN PropertyNamel, PropertyName2 . Object

14、PropertyName =eExpression 上页ADD OBJECT PROTECTED ObjectName AS ClassName2NOINIT WITH ePropertylist.PROTECTED | HIDDEN FUNCTION | PROCEDURE Name_ACCESS | .ASSIGNNODEFAULTcStatementsENDFUNC | ENDPROC.ENDDEFINEParentClass既可以是“基类”,也可以是开发者自己创建的的其它“子类”。(3) PropertyNaiuel, PropertyNauie2 .:列举该类中要保 护或隐含的的属性

15、名称。(4) ObjectName:如果创建的是一个容器对象,这个子句 指出该容器中所含的其它对象,这个参数是所加入的对 象的名字。(5) ClassName2:加入的对象 ObjectName 的父类”的名 字(6) Cpropertylist:创建类的属性名。(7) Name:创建类中的过程或函数名。(8) Cstatements:类中响应各事件的方法程序或函数。”下页退出目录上页下页(1) ClassNamel:要创建的类”的名字。(2) ParentClass:要创建的“类”的“父类”,退出(1)由类创建对象创建对象就是在内存中建立一个变量。对象变量(简 称为对象)只有在创建后才能使川

16、,便川命令方式创建 对象的一般格式是:功能:在内存中创建一个对象例女(1: FtiuFoinil = CreateObject (FORM)目录上页下页退出实例:DEFINE CLASS test AS FORM&定义个子类Test,它的基类是Form&将输出发送到Visual FoxPro主窗口中&从内存中释2.用程序方法设计对象目录下页退出&用基类 FORM 创建一个对象 FroiuForuilCreateObject(Test)&上面一条命令成立的前提是我们已在前面的例子 中己经创建了一个 Test 的矣FrmTestFrmTest 二Frui F

17、or ml 二退出26么、_ E|:rz:x-;JEParent. Object. Property=ValueWITH对象名 属性名 1二属性值 1 属性名 2二属性值 2(3) 对象方法程序的调用凋用对象的方法程序的语法如下例如:要调用显示 friuform 1 表单对彖的 Show ()方法,则 代码形式如下:(4)对象变量的的分类与普通变量一样,对象变量也有全局变量、局部变 量和私有变量之分,其对应的说明符也是 PUBLIC、 LOCAL、PRIVATEo 局部变量和私冇变量都随着创建对象 的程序结束而白动释放,而全局变量则会留存在内存屮 直到用显我的命令释放对彖。(5)对象变量的释放

18、Release对象名目录下页退出目录上页下页要同时设置一个对象的多个属性时,用第二种方法更加方便快捷。28目录上页下页(6)在容器对象中添加对象在容器对象己经创建后,要在容器对彖中添加 对象应使用 AddObject ()方法,格式是:该方法在已经建立的容器对象中加入一个由 类名派生的对象,对彖就成为容器的一个成员。退出节类和对象可视化设计方法.27,用类设计器设计类的一般步球目录1 进入类设计器上页下页退出有两种方法可以进入类设计器。(1)在系统菜单栏中单击“文件”菜单中的“新建”命 令,在“新建”对话框中指定文件类型是“类”, 单击“新建 文件”按钮。(2)已经进入项目管理器,就可以在项目

19、管理器中,选 择“类”选项卡,并单击“新建”命令按钮。两者都将进入一个统一的界而(如图 8-2 所示)29退出图8 3派生于其他子类对话框30目录确定上页下页退出图8 2新建类对话框2.指定子类的名称、父类和存储类的文件名。图 8-2 中有3个文本框中的内容需耍设计者根据设 计确定相应信息:(1)类名:每一个类都有一个名称,只要按照一般的 命名规则给子类取一个名字即可(cdm.test) o29目录(2)派生于:指定子类的“父类”。由下拉列衣框中可 择相应的Visual FoxPro中的基类(CommandGroup) 可以了。如果需要用一个非基类的类作为子类的 类”,可以单击派生于后面的命屋

20、钮进入所示的对话框进一步选择。该对话框的左半选择“父类”所在的文件,右半部分选择就“父图 8-3 部分用于上页“父类呼一F陆 j 何下页z|claw.te$t.vcxR3(文嵌豐iwys(;退出图8 3派生于其他子类对话框30目录上页下页退出伸仔目录Inlxl上页ConrandlConnand2下页1退出4GD b 53*保TEBt:3132图8 5类设计器图8 4子类心储完成以上操作后, 已经设计出了一个子类, 该类与 其“父类具有相同的属性和事件代码,也可以理解为 是父类的一个拷贝,如图 8 5 所示。(3)存储丁:指定子类的存储文件(默认扩展名.vex,),所指定的文件可以存在,也可以不

21、存在。当指定了一个已经存在的类文件时,VisualFoxPro把新建的类加入该文件,否则,VisualFoxPro建立一个新的类文件。一般我们都是将相关的类存储于一个文件中,很少将每一个类单独用一个文件存储。这个文本框后的命令按钮也是用于选择子类存储文件。如图8-4所示。退出343.子类属性设置4 I 丨:J 丫 :沔巧 vTJ 匚、-応?、舟 fl |*4 | - p* jit Qk, -rName :描述类的名称。Caption:类的标题。Font Name:类所用字体。FontSize:类所用字号。(2)添加新属性当子类为了某个特殊的需要,还可以在子类 中添加新的属性。方法是:选择“类”

22、菜单中“新建属性”选项, 在出现的界面中,指定要添加的属性名称,并单 击“添加”按钮,完成新属性的添加工作。上页下页退出|-|x|.全趣|aKcdn ttxiBoseClossIBox-derColorI Bordcx-S ty 1 e招定一吟心 刍短sa俎戒也耶 塩燈俎中 的twa救 冃属性可从“父类”那里获得继承值。这里只设置ButtonCount为 4。最常见的属性有:图/类的属性设暨容器3目录下页退出4.代码设计F *操作方法;(1) 在“对象”列表框中指定为哪个对象设计代 码。(2) 在“过程”列表框中指定为所选对象设计哪 个事件或 方法设计代码。大窗口是代码设计 窗口,在这里设计 类方法程序。图8-7所示的 就是为对象Command 1的Click过程设计的代码。上页下页退出上页下页图87代码设计窗口35退出38(1)创建新类或删除类下面用创建Cm(l_test的子类Cui(l_testl为例來演示类 浏览器”的基石操作。1首先用上述两种方法之一进入类浏览器。2单击(打开按钮)日进入“打开”对话框,选择确定要 操作的类库。3选中类库中 Cmd_test类,再单击(新类按钮)E5丁开“新 建类”对话框。4在“新建类”对话框中“类名” 一栏中输入耍新建的子 类名Cn)d_test_r再单击“确定”按钮,就进入了类 设计器。“Ciud_test啲设计

温馨提示

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

评论

0/150

提交评论