《面向对象的程序设计基础概要.pptx》由会员分享,可在线阅读,更多相关《面向对象的程序设计基础概要.pptx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 面向对象的程序设计基础 8.1 8.1 面向过程和面向对象的程序设计面向过程和面向对象的程序设计8.1.1 8.1.1 面向过程的程序设计面向过程的程序设计 在面向过程的程序设计中,整个系统以功能分在面向过程的程序设计中,整个系统以功能分类,它被划分成各类功能模块,各个功能模块如果需类,它被划分成各类功能模块,各个功能模块如果需要,还必须划分为更为具体的小功能模块,直至该功要,还必须划分为更为具体的小功能模块,直至该功能模块能以一个函数或一个过程来实现为止。它具有能模块能以一个函数或一个过程来实现为止。它具有思路清晰、功能单一等特点,但其缺点也是很明显的,思路清晰、功能单一等特点,但其
2、缺点也是很明显的,主要表现在:主要表现在:1 1程序代码被分为模块和函数,程序越大,在代码程序代码被分为模块和函数,程序越大,在代码中出现错误的可能性也就越大,因此不便维护和修改。中出现错误的可能性也就越大,因此不便维护和修改。第1页/共23页2 2程序设计人员需要用大量的时间去设计输入输出界程序设计人员需要用大量的时间去设计输入输出界面,而且设计出来的界面又不能像用户普遍使用的面,而且设计出来的界面又不能像用户普遍使用的如如WINDOWSWINDOWS视窗操作系统那样被接受。视窗操作系统那样被接受。3 3程序在执行过程中受过程的控制,会一直独占计算程序在执行过程中受过程的控制,会一直独占计算
3、机的资源,难以实现多任务的操作。机的资源,难以实现多任务的操作。由于以上这些问题,使得由于以上这些问题,使得VFPVFP程序设计逐渐演程序设计逐渐演变发展到了变发展到了OOPOOP。现在的。现在的VFPVFP等等WindowsWindows应用软件,既应用软件,既提供了传统的面向过程的程序设计方法,也提供了提供了传统的面向过程的程序设计方法,也提供了以下的程序设计方法。以下的程序设计方法。第2页/共23页面向对象程序设计的两个基本特点是:面向对象程序设计的两个基本特点是:(1)(1)它是可视化的编程方式。它是可视化的编程方式。(2)(2)程序运行没有一定的顺序,由事件驱动。程序运行没有一定的顺
4、序,由事件驱动。对象是程序和数据的结合体,是对象是程序和数据的结合体,是VFPVFP的一个操作单位。的一个操作单位。对象和对象又可组成新的对象。在面向对象的程序设计对象和对象又可组成新的对象。在面向对象的程序设计方方法中,用户需要考虑的是如何创建对象,及对对象应实法中,用户需要考虑的是如何创建对象,及对对象应实施施哪些操作,每个操作应完成什么功能,以完成用户提出哪些操作,每个操作应完成什么功能,以完成用户提出的的所有要求。所有要求。8.1.2 面向对象的程序设计第3页/共23页 在面向对象的程序设计中,最重要的概念是对象和类,它们是关系密切但又完全不同的两个概念。8.2.1对象(object)
5、对象是数据和数据操作代码的组合体。对象既具有静态的属性又可具有动态的行为。在面向对象的程序设计中,对象是构成程序的基本单位,是程序的运行实体。对象可以是任何的具体事物。在VFP中,标签、表格、表单以及所有控件都可看成是应用程序中的对象。对象是应用程序中的一个处理单位。8.2 面向对象的基本概念第4页/共23页 8.2.2 8.2.2 类类(class)(class)类含有某个对象的数据和操作功能,是对一组具类含有某个对象的数据和操作功能,是对一组具有相同属性和方法的对象的抽象,是对象的原型。在类有相同属性和方法的对象的抽象,是对象的原型。在类定义代码中可含有对象的属性、事件和方法。定义代码中可
6、含有对象的属性、事件和方法。类和对象是抽象和具体的关系。类包含有关对象类和对象是抽象和具体的关系。类包含有关对象的特征和行为信息,是对象定义的模板。对象是类的具的特征和行为信息,是对象定义的模板。对象是类的具体化和实例化,所以对象又称为类的实例(体化和实例化,所以对象又称为类的实例(InstanceInstance)。)。一个类可以实例化为多个对象,各个对象都有所属类的一个类可以实例化为多个对象,各个对象都有所属类的属性、事件和方法程序,但每个对象的属性值可以不同。属性、事件和方法程序,但每个对象的属性值可以不同。类是一个静态的概念,只有实例化的对象才是可运行的类是一个静态的概念,只有实例化的
7、对象才是可运行的实体。实体。第5页/共23页 类具有封装性、继承性和多态性。类具有封装性、继承性和多态性。封装性(封装性(EncapsulationEncapsulation)。封装是指将对象的)。封装是指将对象的特性特性(属性属性)和行为和行为(方法方法)包装在一起。包装在一起。继承性(继承性(InheritanceInheritance)。类都可以从已有的类中)。类都可以从已有的类中派生而来,派生出的子类继承父类的全部属性和法,可派生而来,派生出的子类继承父类的全部属性和法,可以添加新的方法,也可放弃若干原有的方法。以添加新的方法,也可放弃若干原有的方法。多态性(多态性(Polymorph
8、ism)Polymorphism)。多态性是指相同的操。多态性是指相同的操作可以作用于多种类型的对象上,并获得不同的结果。作可以作用于多种类型的对象上,并获得不同的结果。Visual FoxProVisual FoxPro允许用户利用多态性。允许用户利用多态性。第6页/共23页8.2.3 类与对象的关系 类和对象关系密切,但并不相同。类包含了有关对象的共同特征和行为信息,它是对象的蓝图和框架。类是对象的抽象描述,对象是类的一个具体实例。例如,电话可以是一个类,而这个类的实例对象,便是某一部具体的电话。从某种程度上讲,类也是一种对象,例如学生是一类也是一个对象。类决定了对象的特征。对象可以是类的
9、成品,类与对象是应用程序的组装模块。第7页/共23页 8.2.4 8.2.4 属性属性 对事物性质等进行的描述称为事物的属对事物性质等进行的描述称为事物的属性。属性是对象的特征,是对象某一方面的行性。属性是对象的特征,是对象某一方面的行为参数。它描述对象的状态或某一方面的行为为参数。它描述对象的状态或某一方面的行为功能,说明了对象可以完成的工作,但还没有功能,说明了对象可以完成的工作,但还没有说明如何去完成任务。状态是对象在其生命周说明如何去完成任务。状态是对象在其生命周期中某个特定阶段所处的某种境域、所表现的期中某个特定阶段所处的某种境域、所表现的形态,行为是指对象在某种状态下所做的一系形态
10、,行为是指对象在某种状态下所做的一系列处理、操作、反应。列处理、操作、反应。第8页/共23页 8.3 VFP中的类和对象 VFP的对象所具有的属性是由派生该对象的类决定的,而且这些属性既可以在设计时指定,也可以在运行时指定。当用户打开表单或控件的属性窗口,并选择“其它”选项卡时,可能会看到涉及类定义的以下几个属性:(1)BaseClass(基类):VFP中内部定义的类,用户可使用它们创建(2)自定义类,如表单和所有控件都是基类,用户可在此基础上创建新类,增添需要的功能。Class(类):派生该对象的类名。(3)ParentClass(父类):派生该对象的父类名。仅对自定义类有效,如果类是直接从
11、VFP基类上派生的,则本项为空。第9页/共23页8.3.1 容器类容器类可以包含其它对象,并允许访问这些对象。这些对象无论是在运行时还是在设计时都可以单独地操作。常用的容器类有:表单(Form)、表单集(FormSet)、列(Coumn)、命令按钮组(CommandButton Group)、容器(Container)、表格(Grid)、选项按钮组(OptionButtonGroup)、页(Page)、页框(PageFrame)、工具栏(TooBar),其中,表单集和页框是不可见类。第10页/共23页 8.3.2 控件类 控件类中不能包含其它对象,只能加入到其它对象中。控件类的封装比容器类更为
12、严密。当引用容器中的控件对象时必须经过容器,其格式是:容器对象.控件对象.属性。例如,在Form1表单中设置标签abc1的Caption属性:Form1.abc1.Caption=姓名第11页/共23页VFPVFP中常用的控件类有:中常用的控件类有:复选框(复选框(CheckBoxCheckBox)、组合框()、组合框(ComboBoxComboBox)、)、命令按钮(命令按钮(CommandButtonCommandButton)、编辑框()、编辑框(EditBoxEditBox)、)、图像(图像(ImageImage)、标签()、标签(abeabe)、线条()、线条(ineine)、)、列
13、表框(列表框(IstBoxIstBox)、选项按钮()、选项按钮(OptionButtonOptionButton)、)、形状(形状(ShapeShape)、微调()、微调(SpinnerSpinner)、文本框)、文本框(TextBoxTextBox)、)、计数器(计数器(TimerTimer)、控件()、控件(ControContro)、列标题)、列标题(HeaderHeader)、)、OEOE绑定型控件(绑定型控件(OE Bound ControOE Bound Contro)、)、OEOE容器控件(容器控件(OE Container ControOE Container Contro)
14、、)、自定义类(自定义类(CustomCustom),其中计数器和自定义类是不可),其中计数器和自定义类是不可见类。见类。第12页/共23页8.3.3 容器对象和控件对象 VFP的类有容器类和控件类之分,所以VFP中的对象也分为容器对象和控件对象(有时也称之为非容器对象)。1容器对象容器对象是由容器类创建的对象,它们可以包含其它对象,并且允许用户在设计和运行时访问这些对象。第13页/共23页容器对象容器对象所能包含的对象所能包含的对象命令按钮组命令按钮组CommandGroupCommandGroup命令按钮命令按钮选项按钮组选项按钮组OptionGroupOptionGroup选项按钮选项按
15、钮表格表格GridGrid表格列表格列页框页框PageFramePageFrame页面页面页面页面PagePage任意控件、容器和自定义对象任意控件、容器和自定义对象表单集表单集FormSetFormSet表单、工具栏表单、工具栏表单表单FormForm页框、任意控件、容器或自定义对象页框、任意控件、容器或自定义对象表格列表格列HeaderHeader标头对象以及除表单、表单集、工具栏、标头对象以及除表单、表单集、工具栏、计时器和其它列对象以外的任意对象计时器和其它列对象以外的任意对象工具栏工具栏ToolBarToolBar任意控件、页框和容器任意控件、页框和容器容器容器OleControlO
16、leControl任意控件任意控件表8.1 各种容器类及其所能包含的对象 第14页/共23页2控件对象 控件对象也称为非容器对象,即控件对象可以包含在容器对象中,但控件类对象没有“AddObject”(添加对象)的方法程序,因此在控件对象中不能添加其它对象,即控件对象不能作为其它对象的父对象。控件对象一般作为一个独立的部件出现,提供移动、拖放和单击等操作,用户可执行封装在控件内的方法程序。第15页/共23页8.4 事件和方法程序 VFP中的每个对象都是用类定义的。在VFP的“表单控件工具栏”上,控件代表类并不实际存在,直到在表单上放置了控件的对象为止。创建控件也就是在复制控件类,或者说是建立控
17、件类的实例。这个实例就是程序中将引用的对象。第16页/共23页8.4.1 VFP常用事件 事件确定控件对外部条件的响应。事件由各个控件识别,再由应用程序处理。例如,命令按钮可以识别鼠标单击事件,但无法响应这个事件,除非提供了所需要的代码,即必须告诉VFP在用户单击特定命令按钮时所进行的操作。每个对象都能够识别和响应系统预先定义好的特定事件。用户不能自定义新的事件。在面向对象的程序设计中,程序的执行取决于当前所发生的事件,并由事件来驱动。什么事件发生了,便有相应的事件处理程序去处理。事件可由用户或系统激活,多数情况下,事件是通过用户的交互操作产生的。用户可以编写具有一定功能的程序代码,以响应特定
18、的事件。第17页/共23页事件事件说明说明InitInit当对象创建时激活当对象创建时激活DestroyDestroy 当对象从内存中释放时激活当对象从内存中释放时激活ErrorError当类中的事件或方法程序过程中发生错误时激活当类中的事件或方法程序过程中发生错误时激活表8.2 最小事件集 第18页/共23页事件事件事件的激发事件的激发InitInit当对象创建时激活当对象创建时激活DestroyDestroy当对象从内存中释放时激活当对象从内存中释放时激活ClickClick用户单击用户单击ErrorError当类中的事件或方法程序过程中发生错误时激活当类中的事件或方法程序过程中发生错误时
19、激活DblClickDblClick用户使用主鼠标按钮双击对象激活用户使用主鼠标按钮双击对象激活RightClickRightClick用户使用辅鼠标按钮单击对象激活用户使用辅鼠标按钮单击对象激活GotFocusGotFocus对象接收焦点由用户动作引起激活对象接收焦点由用户动作引起激活LostFocusLostFocus对象失去焦点由用户动作引起激活对象失去焦点由用户动作引起激活KeyPressKeyPress用户按下或释放按钮用户按下或释放按钮MouseDownMouseDown用户在对象上按下鼠标按钮用户在对象上按下鼠标按钮MouseMoveMouseMove用户在对象上移动鼠标按钮用户
20、在对象上移动鼠标按钮MouseUpMouseUp鼠标指针停在对象上,用户释放鼠标按钮鼠标指针停在对象上,用户释放鼠标按钮其他事件其他事件 表8.3 核心事件表 第19页/共23页8.4.2 VFP常用方法程序介绍 方法程序是对象能够执行的一些操作,不同的对象具有不同的操作行为。为了很好地、准确地触发并执行方法程序,配备了控件和事件;同时设置了数据环境以满足用户对使用信息数据范围的选取并构成与其他几个方面的完整配合体系。可以把属性看作是一个对象的性质参数,把事件看作是触发对象响应的指令,把方法程序看作是对象的响应动作,把数据环境看作是对象的生存与运行条件。方法程序是一段能完成特定操作的程序代码。
21、方法程序既可以与相应的事件相关联,例如,为Cick事件编写的方法程序代码将在Cick事件出现时被执行,也可以独立于事件而单独存在,此类方法程序必须在代码中被显式地调用。例如,命令按钮对象具有SetFocus方法程序,该方法程序的作用是将焦点放置到该按钮上。表8.4给出了VFP中常用方法程序。第20页/共23页常用方法程序常用方法程序用途说明用途说明AddColumnAddColumn在表格控件中添加一个列对象在表格控件中添加一个列对象AddObjectAddObject在表单对象中添加一个对象在表单对象中添加一个对象BoxBox在表单对象中画一个矩形在表单对象中画一个矩形CircleCircl
22、e在表单对象中画一个圆或椭圆在表单对象中画一个圆或椭圆ClearClear清除控件中的内容清除控件中的内容ClsCls清除表单上的图形和文本清除表单上的图形和文本DrawDraw重画表单对象重画表单对象HideHide隐藏表单、表单组或工具隐藏表单、表单组或工具LineLine在表单对象上画一条线在表单对象上画一条线MoveMove移动对象移动对象PointPoint返回表单上指定点的红蓝绿返回表单上指定点的红蓝绿3 3种颜色种颜色PrintPrint在表单上打印一个字符串在表单上打印一个字符串PrintFormPrintForm打印当前表单的屏幕内容打印当前表单的屏幕内容ReadExpres
23、sionReadExpression返回保存在一个属性单中的表达式字符串返回保存在一个属性单中的表达式字符串表8.4 常用方法程序第21页/共23页ReadMethod00返回一个方法中的文本Refresh重画表单或控件,并刷新所有数据Release从内存中释放表单或表单组RemoveObject在运行时从容器对象中删除指定的对象ResetDrfault将Time控件复位,使它从零开始计数Saveas把对象保存为.scx文件SaveasClass把对象的实例作为类定义保存到类库中SetAll为容器对象中的所有控件或某一类控件指定属性设置SetFocus使指定控件获得焦点Show显示表单并且决定表单是模态还是非模态TextHeight按照当前字体中的显示,返回文本串的高度TextWidth按照当前字体中的显示,返回文本串的宽度WriteExpression把一个表达式写入属性WriteMethod把指定的文本写入指定的方法中Zoder设定当前表单相对于其他表单的显示位置续上表第22页/共23页感谢您的观看!第23页/共23页
限制150内