单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,*,*,*,第,9,章,面向对象的程序设计,【教学内容】,Visual FoxPro程序设计的特点,可视化的程序设计根底,应用软件的开发过程概述,编译应用程序,【,教学要求,】,了解:,Visual FoxPro,程序设计的特点。,理解:,类和对象的概念。,掌握:,类的应用;,应用软件的开发过程;,编译应用程序;,连编应用程序,。,9.1 Visual FoxPro,程序设计的特点,在Visual FoxPro8.0中,面向对象的程序设计可以看作是在程序设计中不断调用由软件平台提供的程序模块或其他方式形成的程序,并输入工作模块所需要的特征、要求、参数、实现方法、过程事件等,再由软件平台在内部通过调用各类内部构件自行进行归类、定义、计算、转换、连接、嵌入等工作,使编程工作在程序员的监督下按要求逐步进行。,1.可视化操作,每一个Windows应用程序界面上都含有假设干个控件,常见的有菜单、按钮、滚动条、对话框、窗体等,这些都是可视化操作的根底。,2.事件驱动的编程工具,事件是窗体或控件等对象可以识别的行为动作,事件驱动是在Visual FoxPro8.0中进行面向对象编程的另一个特征,即当事件发生时,该事件的过程代码将被执行。,9.1 Visual FoxPro,程序设计的特点,3.易于扩充,与面向过程的编程技术相比,Visual FoxPro8.0的面向对象编程不仅简单易学,而且是一种易于扩充的开放系统。一方面系统为程序员提供了许多在Visual FoxPro 8.0下使用的控件;另一方面,程序员也可以使用其他语言编写自己特定的控件后在Visual FoxPro 8.0中使用。,除此之外,Visual FoxPro 8.0的面向对象的编程相对于面向过程的编程相比,还具有以下三个优点:,程序的易读性好 只须了解类和对象的外部特性,不必关注其内部实现细节。,提高了代码的复用率 可以直接将已经存在的类或对象添加到应用程序这去。,程序的可维护性好 通过修改类或对象的属性或方法即可修改程序。,9.2可视化的程序设计根底,9.2.1面向对象的概念,1.类的概念,1类:所谓类(class),就是一组对象的属性和行为特征的抽象描述。或者说,类是具有共同属性、共同操作性质的对象的抽象。,在Visual FoxPro 8.0中,类就像是一个模板,对象都是由它生成的,类定义了对象所有的属性、事件和方法,从而决定了对象的属性和行为。,一般来说类可以分为父类和子类。父类是可以用作其他类的根底类。子类那么是以对应父类为起点建立的扩展类,它将继承父类的所有特征。从系统的角度来说,类又可以分为系统类和用户类。系统类又包含基类、基 础类和向导类。,2基类:Visual FoxPro 的.vcx 可视类库位于 Ffc 文件夹,包含了各种基类,使用这些基类可以不通过编程或较少的编程即能改进 Visual FoxPro 应用程序。用户可以自由地将基类和其应用程序一起发布。,Visual FoxPro 8.0的基类有两大主要类型,它们是容器类和控件类。,3根底类和向导类,4用户类自定义类:除了Visual FoxPro8.0提供的系统类外,用户还可以自己开发类,形成自定义类。,9.2可视化的程序设计根底,5类的特性,面向对象的程序设计中,类具有继承性、封装性等特性,2.关于对象的概念,1对象 对象(object)是反映客观事物属性及行为特征的描述,每个对象都具有描述其特征的属性及附属于它的行为,是面向对象编程的根本元素,是类的具体实例。,对象还具有以下一些特点:,每个对象都具有对象标识符,用标识符来表示对象的惟一性。,对象必须属于一个对象类。,2事件:事件是对象所能识别的一个动作。在Visual FoxPro8.0中,可以编写相应的代码对此动作进行响应的事件。,事件可以由一个动作产生,如单击或按键;也可以由程序代码或系统产生,如计数器溢出等。,3 属性:属性(Attribute)是描述对象特征的参数,对象的属性是由对象所基于的类决定的。对象的属性设置可以在设计时通过“属性 窗口设置,也可以直接编写程序代码在运行的过程中设置。,9.2可视化的程序设计根底,4方法:方法Method是附属于对象的行为和动作,是与对象相关联的过程,是对象能够执行的操作。方法程序也可以独立于事件而单独存在,此类方法程序必须在代码中被显示地调用。,对于对象、属性、事件和方法程序的关系,可以用以下的式子来描述:,对象=控件+属性+数据环境+事件+方法程序,控件是显示数据和执行交互式操作使用的工具。,属性是附加和作用于对象的一个内存变量,是对象中的数据,是用来描述对象特征的参数。,数据环境是对象运行所依据的数据信息范围。,方法程序是对象在事件发生时进行的功能实现性操作。,事件是对象能够识别和响应的某些行为和操作。,3对象的引用,在面向对象的程序设计的过程中,要处理一个对象,首先需要知道对象所在的容器层次关系。,对象的引用有两种方式:绝对引用和相对引用。,1绝对引用 绝对引用是通过对对象完整的容器层次描述来实现的对象的引用。,9.2可视化的程序设计根底,2 相对引用 在Visual FoxPro8.0中,也可以采用相对引用的方法实现快速引用对象。,9.2.2 创立类,在利用Visual FoxPro 8.0进行软件系统开发设计时,每次在表单中都需要处理记录的前移、后移、保存、查找、添加、修改、打印、退出等通用的命令,此时就可以定义一个通用的按钮类来处理几乎每个表单都会遇到的操作,在需要的时候从这个按钮类创立一个对象参加表单中即可。,1.使用类设计器创立类,“类设计器是设计类时的惟一可以使用的工具,其根本操作与表单非常相似,特别要注意类设计完成后要保存到.VCX和.VCT文件中去。启动类设计器的方式有三种:,命令方式 CREATE CLASSLIB ,菜单方式,利用用“工程管理器的方式,创立类步骤如下:,1启动类设计器创立类,2修改属性和方法,9.2可视化的程序设计根底,3添加新属性,4为类添加新方法,5保存新建类,2利用编程创立类,在Visual FoxPro8.0中为创立一个用户自定义类或子类,提供了DEFINE CLASS命令,并可以为创立的类或子类指定属性、事件和方法。其语法格式如下:,DEFINE CLASS ClassName1 AS ParentClass OLEPUBLIC,PROTECTED|HIDDEN PropertyName1,PropertyName2.,.Object.PropertyName=eExpression.,ADD OBJECT PROTECTED,ObjectName AS ClassName2 NOINIT,WITH cPropertylist,PROTECTED|HIDDEN FUNCTION,|PROCEDURE Name NODEFAULT,cStatements,ENDFUNC|ENDPROC,ENDDEFINE,9.2可视化的程序设计根底,9.2.3.修改类,类建立好以后,还可以进行修改,修改的结果将反映到派生于它的子类。也可以根据需要参加新的属性和方法,对错误或不合理的代码进行修改。这种修改将影响所有派生于它的子类,使得子类自动获得改动后的新特征。,“类设计器除了设计类外还可以用来修改类,1定义新属性,向新类中添加新属性的根本步骤如下:,1以“颜色选择类为例,在要修改的选项按钮组上右击鼠标,在弹出的快捷菜单中选择“属性命令,翻开该选项按钮组的“属性窗口。,2附属性表中选择前面添加的新属性,右击属性,在弹出的快捷菜单中选择“表达式生成器命令,翻开“表达式生成器对话框,输入属性值表达式。,3单击“确定按钮即可完成新属性值的定义。,注意:只有新加的属性可以定义,新类从基类中继承的属性是不能被重新定义的。,9.2可视化的程序设计根底,2编辑新属性,1删除新属性,2修改新属性,3.编写新方法程序,向新类中添加新方法的根本步骤如下:,1以“颜色选择类为例,在要修改的选项按钮组上右击鼠标,在弹出的快捷菜单中选择“属性命令,翻开该选项按钮组的“属性窗口的“方法程序选项卡。,2双击新建方法see,弹出“颜色选择.see代码窗口。,3输入代码后关闭窗口即可。,4编辑新方法,编辑新方法与编辑新属性的方式完全相同,可以参照编辑新属性的步骤对要编辑的方法进行删除、修改等操作。,9.2可视化的程序设计根底,9.2.4 类的使用,类是对象的抽象,对象是类的实例。对象的过程代码设计是最重要的操作之一,可以利用程序代码,在类的根底上派生出对象的属性、方法和事件或进行重新设计。对象的属性、方法和事件决定了对象的操作功能。,对象是在类的根底上派生的,只有具体的对象才能实现类的事件或方法的操作。,1使用类浏览器,Visual FoxPro8.0中还提供了“类浏览器来管理和查看类库中的类的信息,查看类的步骤如下:,1在Visual FoxPro8.0主窗口中的常用工具栏中单击“类浏览器按钮,弹出一个Class Browser窗口。,2在Class Browser窗口中,单击“翻开按钮,在“翻开对话框中选择“自定义.vcx类库,单击“确定按钮。返回Class Browser窗口。,3选择一个前面介绍的类“用户工具。,4在Class Browser窗口中,双击类名,将进入给类的设计器窗口。单击类名,那么显示该类的结构,包括对象、方法和属性。单击View Class Code按钮,那么系统自动生成该类的完整代码。,9.2可视化的程序设计根底,2.启用自定义类创立对象,在表单或报表中添加可视化对象,其操作步骤如下:,1翻开“窗体设计器窗口和“窗体控件工具栏。,2在“窗体设计器窗口中添加一个标签,修改其标题为“启用自定义类添加可视化对象,并适当修改字体等属性。,3在“窗体控件工具栏中选择“查看类按钮。,4选择“自定义按钮。由此在“自定义类库定义的用户自定义类“颜色选择和“用户工具的工具栏按钮。,5在“窗体控件工具栏中单击“颜色选择类的按钮,然后单击表单的任何地方,就会为表单添加一个用于对表单内的标签的标题进行颜色选择的“颜色按钮组。,6以“标签颜色为文件名保存表单,然后运行该表单。,3利用命令创立对象,在Visual FoxPro8.0中还可以采用编程的方式来创立对象,该方式主要是利用CREATEOBJECT函数实现从类定义中创立对象。该函数的语法格式如下:,CREATEOBJECT(ClassName,eParameter1,eParameter2,.),功能:从类定义序中创立对象,并将对象引用赋给内存变量或数组元素,9.3,应用软件的开发过程概述,假设从软件工程的角度来分析,编写一个规模较大的应用程序大致要经历以下六个阶段:,制定方案 确定待开发软件系统的总目标,给出它的功能、性能、可靠性以及接口方面的要求。研究完成该项任务的可行性,探讨解决问题的可能方案,弄清系统开发的的限制条件。制定完成开发任务的实际方案,连同可行性研究报告提交管理部门审查。,需求分析 对待开发软件提出的需求进行分析并给出详细定义。编写软件需求说明书及初步的用户手册,提交管理机构评审。,软件设计 把已经确定的各项需求转换成相应的系统结构。从而对每个子系统或模块需要完成的任务进行具体描述。然后编写设计说明书,提交有关部门评审。,程序编写 把已确定的软件体系结构转换成相应的计算机可以接受的程序代码。,软件测试 在设计测试用例的根底上,检验软件的各个组成局部。,运行和维护 将已经交付的软件正式运行,并在使用过程中进行适当的维护。,9.3,应用软件的开发过程概述,9.3.1可行性研究阶段,当系统开发人员接受开发任务时,首先要研究开发任务,判断是否有简单明确的解决方法。事实上,许多问题不可能在一定的系统规模之内解决,如果问题没有可行的解决方法,那么花费在这项开发工程上的任何时间、资源、经费都是无谓的浪费。,可行性研究的目的就是付出较低得