《第7章面向对象的程序设计优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第7章面向对象的程序设计优秀PPT.ppt(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7章面向对象的程序设计章面向对象的程序设计现在学习的是第1页,共67页第七章第七章 面向对象的程序设计面向对象的程序设计n n 面向对象程序设计(简称面向对象程序设计(简称OOP)技术最近几)技术最近几年在计算机领域得到了迅猛发展,它是程序设计年在计算机领域得到了迅猛发展,它是程序设计方法的一场革命。方法的一场革命。n n 与传统的结构化程序设计(面向过程程序设计)与传统的结构化程序设计(面向过程程序设计)相比,它具有许多优点,其中最主要的是,面向相比,它具有许多优点,其中最主要的是,面向对象程序设计是按照人类认识世界的方法和思路对象程序设计是按照人类认识世界的方法和思路方式来解决问题。方
2、式来解决问题。n n 面向对象程序设计试图使程序设计环境适合于面向对象程序设计试图使程序设计环境适合于现实世界的问题,而不是象过程程序设计所要求现实世界的问题,而不是象过程程序设计所要求的使现实世界的问题适合于程序设计语言。的使现实世界的问题适合于程序设计语言。现在学习的是第2页,共67页.面向对象程序设计与过程化程序设计的比较面向对象程序设计与过程化程序设计的比较n n .过程化过程化(结构化结构化)程序设计及其优缺点程序设计及其优缺点(1)n n 结构化程序设计的设计方法,是将程序结构按功能划结构化程序设计的设计方法,是将程序结构按功能划分成若干基本模块,这些模块形成一个树形结构,自顶分成
3、若干基本模块,这些模块形成一个树形结构,自顶向下,逐步求精。程序设计时,使各模块之间的关系相向下,逐步求精。程序设计时,使各模块之间的关系相对紧密。对紧密。n n 每一模块内部均由顺序、选择、和循环三种基本结构每一模块内部均由顺序、选择、和循环三种基本结构组成,其模块化实现的具体方法是使用了过程(子程序)。组成,其模块化实现的具体方法是使用了过程(子程序)。n n 这样,一个较复杂的系统按功能分解成许多易于控制和这样,一个较复杂的系统按功能分解成许多易于控制和处理的子系统、子任务,这些子系统、子任务都是可独立处理的子系统、子任务,这些子系统、子任务都是可独立编程实现的子程序模块,而这些子程序均
4、由分级的用户界编程实现的子程序模块,而这些子程序均由分级的用户界面菜单实现调用。面菜单实现调用。现在学习的是第3页,共67页.过程化过程化(结构化结构化)程序设计及其优缺点程序设计及其优缺点(2)n n 在大型软件系统设计中,由于软件系统本身的复杂性,在大型软件系统设计中,由于软件系统本身的复杂性,要求必须许多人通力合作,采用工程化的方法进行开发要求必须许多人通力合作,采用工程化的方法进行开发和管理,这也对程序设计语言和程序设计方法提出了更和管理,这也对程序设计语言和程序设计方法提出了更高的要求。高的要求。n n 通过使用结构化程序设计方法,可以对整个任务进行清通过使用结构化程序设计方法,可以
5、对整个任务进行清晰严格的划分,使每个程序员能明确了解自己的工作任务晰严格的划分,使每个程序员能明确了解自己的工作任务以及与他人的接口。以及与他人的接口。n n 每个程序员可以独立地设计调试自己负责的模块,最终各每个程序员可以独立地设计调试自己负责的模块,最终各每个程序员可以独立地设计调试自己负责的模块,最终各每个程序员可以独立地设计调试自己负责的模块,最终各模块也能够顺利地集成到整个系统中去。模块也能够顺利地集成到整个系统中去。模块也能够顺利地集成到整个系统中去。模块也能够顺利地集成到整个系统中去。n n 结构化程序设计方法,由于模块之间逻辑结构清晰,功结构化程序设计方法,由于模块之间逻辑结构
6、清晰,功能相对独立,满足了大型软件系统易维护性和可读性的要能相对独立,满足了大型软件系统易维护性和可读性的要求。求。n n 因此,结构化程序设计能够较好地满足大型软件系统的设因此,结构化程序设计能够较好地满足大型软件系统的设因此,结构化程序设计能够较好地满足大型软件系统的设因此,结构化程序设计能够较好地满足大型软件系统的设计要求,是现代软件工程的基础。计要求,是现代软件工程的基础。计要求,是现代软件工程的基础。计要求,是现代软件工程的基础。现在学习的是第4页,共67页.过程化过程化(结构化结构化)程序设计及其优缺点程序设计及其优缺点(3)n n尽管结构化程序设计具有许多优点,但它仍然是一种面向
7、尽管结构化程序设计具有许多优点,但它仍然是一种面向数据和过程的设计方法,它把数据和过程分离为相互独立数据和过程的设计方法,它把数据和过程分离为相互独立的实体。的实体。n n程序员在编程时必须要时刻考虑所要处理的数据格式,对于不程序员在编程时必须要时刻考虑所要处理的数据格式,对于不程序员在编程时必须要时刻考虑所要处理的数据格式,对于不程序员在编程时必须要时刻考虑所要处理的数据格式,对于不同的数据格式,即使要做同样的处理或对相同的数据格式要做同的数据格式,即使要做同样的处理或对相同的数据格式要做同的数据格式,即使要做同样的处理或对相同的数据格式要做同的数据格式,即使要做同样的处理或对相同的数据格式
8、要做不同的处理,都需要编写不同的程序,因此重用性不够好。不同的处理,都需要编写不同的程序,因此重用性不够好。不同的处理,都需要编写不同的程序,因此重用性不够好。不同的处理,都需要编写不同的程序,因此重用性不够好。n n 另一方面,当数据和过程相互独立时,总存在用错误的另一方面,当数据和过程相互独立时,总存在用错误的数据调用正确程序模块,或用正确的数据调用错误程序模数据调用正确程序模块,或用正确的数据调用错误程序模块的可能性。块的可能性。n n 因此,要使数据与程序始终保持相容等问题,结构化程因此,要使数据与程序始终保持相容等问题,结构化程序设计方法本身是无法解决的,这可借助于新一代设计方序设计
9、方法本身是无法解决的,这可借助于新一代设计方法法面向对象的程序设计方法。面向对象的程序设计方法。现在学习的是第5页,共67页.面向对象程序设计及其优越性面向对象程序设计及其优越性(1)n n 面向对象程序设计将数据及对数据的操作融为面向对象程序设计将数据及对数据的操作融为一体,作为一个相互依存、不可分割的整体来处一体,作为一个相互依存、不可分割的整体来处理。它采用数据抽象和信息隐藏技术,将对象及理。它采用数据抽象和信息隐藏技术,将对象及对象的操作抽象成一种新的数据类型对象的操作抽象成一种新的数据类型类,并类,并且考虑到不同对象之间的联系和对象类的重用性。且考虑到不同对象之间的联系和对象类的重用
10、性。n n 面向对象程序设计所追求的目标是将现实世界面向对象程序设计所追求的目标是将现实世界的问题求解尽可能简单化,采用符合人类处理问的问题求解尽可能简单化,采用符合人类处理问题的思维方式。题的思维方式。n n 它用它用“对象对象”表现事物,用表现事物,用“事件事件”表示处理表示处理事物的动作,用事物的动作,用“方法方法”表现处理事物的过程,表现处理事物的过程,用用“消息消息”传递对象与对象之间的相互联系。传递对象与对象之间的相互联系。现在学习的是第6页,共67页.面向对象程序设计及其优越性面向对象程序设计及其优越性(2)n n 面向对象程序设计时,不再是单纯地从代码的第一行一面向对象程序设计
11、时,不再是单纯地从代码的第一行一直编写到最后一行,而是考虑如何创建对象,利用对象来直编写到最后一行,而是考虑如何创建对象,利用对象来简化程序设计,并提供代码的可重用性。同时面向对象程简化程序设计,并提供代码的可重用性。同时面向对象程序设计也吸取了结构化程序设计的优点。序设计也吸取了结构化程序设计的优点。n n面向对象程序设计,可以支持先进的软件开发策略:编写可面向对象程序设计,可以支持先进的软件开发策略:编写可面向对象程序设计,可以支持先进的软件开发策略:编写可面向对象程序设计,可以支持先进的软件开发策略:编写可重用代码,编写可维护的代码,共享代码,优化已有的代码重用代码,编写可维护的代码,共
12、享代码,优化已有的代码重用代码,编写可维护的代码,共享代码,优化已有的代码重用代码,编写可维护的代码,共享代码,优化已有的代码等。等。等。等。n n有了高质量的可重用代码就能有效地降低软件的复杂性,提高有了高质量的可重用代码就能有效地降低软件的复杂性,提高有了高质量的可重用代码就能有效地降低软件的复杂性,提高有了高质量的可重用代码就能有效地降低软件的复杂性,提高软件开发效率。开发者在设计软件时可以利用一些已经精心设软件开发效率。开发者在设计软件时可以利用一些已经精心设软件开发效率。开发者在设计软件时可以利用一些已经精心设软件开发效率。开发者在设计软件时可以利用一些已经精心设计好并且经过测试的代
13、码,这些可重用的代码被组织和存放在计好并且经过测试的代码,这些可重用的代码被组织和存放在计好并且经过测试的代码,这些可重用的代码被组织和存放在计好并且经过测试的代码,这些可重用的代码被组织和存放在程序设计环境的类库中,使以后程序设计过程变得更简单。程序设计环境的类库中,使以后程序设计过程变得更简单。程序设计环境的类库中,使以后程序设计过程变得更简单。程序设计环境的类库中,使以后程序设计过程变得更简单。现在学习的是第7页,共67页.面向对象程序设计及其优越性面向对象程序设计及其优越性(3)n n 面向对象程序设计方法具有模块化、信息封装面向对象程序设计方法具有模块化、信息封装与隐藏、抽象性、继承
14、性、多态性等特点,它又与隐藏、抽象性、继承性、多态性等特点,它又解决了大型软件系统设计与管理中所需的软件可解决了大型软件系统设计与管理中所需的软件可靠性、可重用性、可扩充性、可维护性及提高开靠性、可重用性、可扩充性、可维护性及提高开发效率等问题。因此,面向对象程序设计能够更发效率等问题。因此,面向对象程序设计能够更好地支持大型软件系统的开发。好地支持大型软件系统的开发。n n Visual FoxPro不但仍然支持标准的结构化程序不但仍然支持标准的结构化程序设计,而且在语言上还进行了扩展,提供了面向设计,而且在语言上还进行了扩展,提供了面向对象程序设计的强大功能和更大灵活性。对象程序设计的强大
15、功能和更大灵活性。现在学习的是第8页,共67页.面向对象程序设计的基本概念面向对象程序设计的基本概念n n 面向对象技术为软件开发提供了一种新的思想,面向对象技术为软件开发提供了一种新的思想,引入了许多新的概念,这些概念是理解和使用面引入了许多新的概念,这些概念是理解和使用面向对象技术的基础和关键。向对象技术的基础和关键。n n .对象对象(Object)(1)n n 现实世界的实体现实世界的实体事、物、概念等,都统称事、物、概念等,都统称为对象。在面向对象系统中一切成份都是对象,为对象。在面向对象系统中一切成份都是对象,大到整个系统、项目、数据库、表、表单,小到大到整个系统、项目、数据库、表
16、、表单,小到窗口、控件都被视为对象。窗口、控件都被视为对象。n n 对象是一个逻辑实体,它包括数据和完成处理对象是一个逻辑实体,它包括数据和完成处理所需要的程序代码,是数据和代码的组合。所需要的程序代码,是数据和代码的组合。现在学习的是第9页,共67页.对象对象(Object)(2)n n 在在在在VFPVFP中称对象的特征和数据为中称对象的特征和数据为中称对象的特征和数据为中称对象的特征和数据为“属性属性属性属性”,称由对象识别,称由对象识别,称由对象识别,称由对象识别的一个动作为的一个动作为的一个动作为的一个动作为“事件事件事件事件”,称在对象上完成的操作过程为,称在对象上完成的操作过程为
17、,称在对象上完成的操作过程为,称在对象上完成的操作过程为“方方方方法法法法”。n n 定义了对象的属性、事件和方法就决定对象的外观和它的动定义了对象的属性、事件和方法就决定对象的外观和它的动定义了对象的属性、事件和方法就决定对象的外观和它的动定义了对象的属性、事件和方法就决定对象的外观和它的动作。因此,对象是属性、事件和方法的集合体,用户通过属性、作。因此,对象是属性、事件和方法的集合体,用户通过属性、作。因此,对象是属性、事件和方法的集合体,用户通过属性、作。因此,对象是属性、事件和方法的集合体,用户通过属性、事件和方法来处理对象。事件和方法来处理对象。事件和方法来处理对象。事件和方法来处理
18、对象。n n 对象的基本特点是具有属性,用来描述自己的状态;有方法,对象的基本特点是具有属性,用来描述自己的状态;有方法,对象的基本特点是具有属性,用来描述自己的状态;有方法,对象的基本特点是具有属性,用来描述自己的状态;有方法,构成自己的行为;有可以识别的事件,响应外界的刺激。构成自己的行为;有可以识别的事件,响应外界的刺激。构成自己的行为;有可以识别的事件,响应外界的刺激。构成自己的行为;有可以识别的事件,响应外界的刺激。n n以设计一个模拟收音机的程序为例,收音机有属性以设计一个模拟收音机的程序为例,收音机有属性以设计一个模拟收音机的程序为例,收音机有属性以设计一个模拟收音机的程序为例,
19、收音机有属性“音量音量音量音量”,可以调节播放声音的大小;有方法可以调节播放声音的大小;有方法可以调节播放声音的大小;有方法可以调节播放声音的大小;有方法“广播广播广播广播”,来完成播放功能;,来完成播放功能;,来完成播放功能;,来完成播放功能;有事件有事件有事件有事件“改变音量改变音量改变音量改变音量”,在改变音量时触发。,在改变音量时触发。,在改变音量时触发。,在改变音量时触发。现在学习的是第10页,共67页.对象对象(Object)(3)n 又例如,一个视图窗口就是一个对象。视又例如,一个视图窗口就是一个对象。视图窗口的位置、大小、和颜色都是视图对象图窗口的位置、大小、和颜色都是视图对象
20、的的“属性属性”;对视图的修改操作后,将数据;对视图的修改操作后,将数据替换源表,是视图对象的替换源表,是视图对象的“方法方法”;当数据;当数据修改完用鼠标点动关闭视图按钮,就产生关修改完用鼠标点动关闭视图按钮,就产生关闭视图的闭视图的“事件事件”,视图对象接收到这个关,视图对象接收到这个关闭动作(事件)后,就会执行另一方法程序闭动作(事件)后,就会执行另一方法程序将视图数据发送回源表。将视图数据发送回源表。现在学习的是第11页,共67页.对象对象(Object)(4)n n 综上所述,我们可以把对象初步理解为:综上所述,我们可以把对象初步理解为:对象是一个封装了属性、事件和方法的实体。对象是
21、一个封装了属性、事件和方法的实体。uu 属性描述了对象的状态、特征;属性描述了对象的状态、特征;uu 每个对象都有可以识别和响应的事件,事每个对象都有可以识别和响应的事件,事件是一种定义好的特定动作,每当对对象进行件是一种定义好的特定动作,每当对对象进行某种操作时,就会引发该事件所对应的程序代某种操作时,就会引发该事件所对应的程序代码被执行;码被执行;uu 每当其他对象向本对象发出消息并触发事每当其他对象向本对象发出消息并触发事件时,与事件相关联的方法程序才得以执行。件时,与事件相关联的方法程序才得以执行。uu 方法可以操作对象数据,改变对象的状态、方法可以操作对象数据,改变对象的状态、特征。
22、特征。现在学习的是第12页,共67页 .类类n n “类类类类”源于日常生活中类别、分类概念。同类实体具有相同的源于日常生活中类别、分类概念。同类实体具有相同的源于日常生活中类别、分类概念。同类实体具有相同的源于日常生活中类别、分类概念。同类实体具有相同的属性和行为特征。类是对一组相似对象的共同抽象描述,它将属性和行为特征。类是对一组相似对象的共同抽象描述,它将属性和行为特征。类是对一组相似对象的共同抽象描述,它将属性和行为特征。类是对一组相似对象的共同抽象描述,它将该组对象所具有的共同特征集中起来,用于说明该组对象的性该组对象所具有的共同特征集中起来,用于说明该组对象的性该组对象所具有的共同
23、特征集中起来,用于说明该组对象的性该组对象所具有的共同特征集中起来,用于说明该组对象的性质和能力。质和能力。质和能力。质和能力。n n 可以看出,可以看出,可以看出,可以看出,“类类类类”是将相同属性和行为特征的对象,提取是将相同属性和行为特征的对象,提取是将相同属性和行为特征的对象,提取是将相同属性和行为特征的对象,提取共同属性和特征而产生的,是对象抽象化的结果,是对象的共同属性和特征而产生的,是对象抽象化的结果,是对象的共同属性和特征而产生的,是对象抽象化的结果,是对象的共同属性和特征而产生的,是对象抽象化的结果,是对象的兰图和框架。兰图和框架。兰图和框架。兰图和框架。n n 而而“对象对
24、象”是类的具体实例,它是将类所描述的共同是类的具体实例,它是将类所描述的共同特征赋予具体实体而形成的。因此,类与对象既有区别,特征赋予具体实体而形成的。因此,类与对象既有区别,又有联系,两者关系十分紧密。又有联系,两者关系十分紧密。n n 所有对象的属性、事件和方法都是在定义类时被指定,所有对象的属性、事件和方法都是在定义类时被指定,由于类是定义了对象特征、外观和行为的模板,所以对由于类是定义了对象特征、外观和行为的模板,所以对象由类生成,生成的对象也自然具有相同的属性、事件象由类生成,生成的对象也自然具有相同的属性、事件和方法。例如,由复选框类、单选按钮类可以生成各种和方法。例如,由复选框类
25、、单选按钮类可以生成各种形式的复选框、单选按钮。形式的复选框、单选按钮。现在学习的是第13页,共67页.面向对象程序设计的特性面向对象程序设计的特性(1)与结构化程序设计相比,面向对象程序设计与结构化程序设计相比,面向对象程序设计有许多突出特性,即抽象性、封装性、继承性和有许多突出特性,即抽象性、封装性、继承性和多态性。多态性。n n 抽象性抽象性n n 一般而言,抽象是对复杂的实体的简明表示,一般而言,抽象是对复杂的实体的简明表示,它强调了我们所关心的或认为重要的信息,而将它强调了我们所关心的或认为重要的信息,而将不重要的信息予以忽略。不重要的信息予以忽略。n n 例,我们对电话的认识已经抽
26、象化了,拨号、例,我们对电话的认识已经抽象化了,拨号、讲话、听音这就是我们印象中的电话,而不关心讲话、听音这就是我们印象中的电话,而不关心和了解电话内部的线路和工作原理。和了解电话内部的线路和工作原理。现在学习的是第14页,共67页.面向对象程序设计的特性面向对象程序设计的特性(2)n n 面向对象程序设计利用抽象性,提取一个类或对象与众面向对象程序设计利用抽象性,提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行类和容器不同的特征,而不对该类或对象的所有信息进行类和容器的层次结构处理,抽象性能够忽略对象的内部细节,隐藏的层次结构处理,抽象性能够忽略对象的内部细节,隐藏不必要的复杂
27、性。不必要的复杂性。n n 例如,在创建一个表浏览窗口类时,窗口中有一系列定位例如,在创建一个表浏览窗口类时,窗口中有一系列定位例如,在创建一个表浏览窗口类时,窗口中有一系列定位例如,在创建一个表浏览窗口类时,窗口中有一系列定位表记录指针的按钮,我们可以把这些按钮作为一个整体进行表记录指针的按钮,我们可以把这些按钮作为一个整体进行表记录指针的按钮,我们可以把这些按钮作为一个整体进行表记录指针的按钮,我们可以把这些按钮作为一个整体进行抽象,而不必关心其中的单个组件,以及它们相互之间是如抽象,而不必关心其中的单个组件,以及它们相互之间是如抽象,而不必关心其中的单个组件,以及它们相互之间是如抽象,而
28、不必关心其中的单个组件,以及它们相互之间是如何作用的。何作用的。何作用的。何作用的。现在学习的是第15页,共67页.面向对象程序设计的特性面向对象程序设计的特性(3)n n 2.封装性封装性n n 封装实际上是一种信息隐藏技术,抽象性通封装实际上是一种信息隐藏技术,抽象性通过封装得以实现。过封装得以实现。n n 封装就是指将对象的方法程序和属性代码包封装就是指将对象的方法程序和属性代码包装在一起。封装将操作对象的内部复杂性与应用装在一起。封装将操作对象的内部复杂性与应用程序的其它部分隔离开来。程序的其它部分隔离开来。n n 例如,我们将电话的零部件和线路封装在电话例如,我们将电话的零部件和线路
29、封装在电话的外壳里,这样使用户看不到电话内部线路的复的外壳里,这样使用户看不到电话内部线路的复杂性,只专心拨号、讲话、听音,从而也产生用杂性,只专心拨号、讲话、听音,从而也产生用户对电话具有拨号、讲话、听音功能这种抽象化户对电话具有拨号、讲话、听音功能这种抽象化的认识。的认识。现在学习的是第16页,共67页.面向对象程序设计的特性面向对象程序设计的特性(4)n n 3.继承性继承性n n 例如,由基本类型的电话(拨号、讲话、听音例如,由基本类型的电话(拨号、讲话、听音功能),可以派生出电话传真机、移动电话、公功能),可以派生出电话传真机、移动电话、公用投币电话等,这些电话都继承了电话基本类型用
30、投币电话等,这些电话都继承了电话基本类型的拨号、讲话、听音功能,又添加了各自的独特的拨号、讲话、听音功能,又添加了各自的独特功能。功能。n n 由于有了继承性,当把基本类型的电话由拨号由于有了继承性,当把基本类型的电话由拨号改为按键,其它类型的电话都可以改为按键,继改为按键,其它类型的电话都可以改为按键,继承性使我们不必研究每种电话如何实现按键。承性使我们不必研究每种电话如何实现按键。n n 继承性即子类延用父类特征的能力。一个子类继承性即子类延用父类特征的能力。一个子类可以拥有其父类的全部功能,然后在此基础上,可以拥有其父类的全部功能,然后在此基础上,可以添加其他控件或功能。继承性体现了类层
31、次可以添加其他控件或功能。继承性体现了类层次中的中的“共享共享”机制。机制。现在学习的是第17页,共67页.面向对象程序设计的特性面向对象程序设计的特性(5)n n 由于有继承性,就可以使得在一个类上所做的由于有继承性,就可以使得在一个类上所做的改动反映到它的所有子类当中,若发现类中有一改动反映到它的所有子类当中,若发现类中有一个小错误,用户不必逐一修改各子类的代码,只个小错误,用户不必逐一修改各子类的代码,只需要在父类中改动,然后这个变动将会体现在全需要在父类中改动,然后这个变动将会体现在全部子类中。这种自动更新可节省用户的时间和精部子类中。这种自动更新可节省用户的时间和精力。力。n n 若
32、类的层次具有多层,则这种继承性还具有传若类的层次具有多层,则这种继承性还具有传递作用,即下层的子类可继承其以上各层父类的递作用,即下层的子类可继承其以上各层父类的全部功能。全部功能。现在学习的是第18页,共67页.面向对象程序设计的特性面向对象程序设计的特性(6)n n4.多态性多态性 n n例:例:F1 F12功能键,不同的软件环境对每一功能键,不同的软件环境对每一功能键有不同的功能定义。同是一键在不同的软功能键有不同的功能定义。同是一键在不同的软件中就会产生不同的操作,这就是多态性。件中就会产生不同的操作,这就是多态性。n n 每个对象不可能只是单独工作,完成某一任务每个对象不可能只是单独
33、工作,完成某一任务可能要某些对象通过协同工作来完成,一个对象可能要某些对象通过协同工作来完成,一个对象可以请求或命令另一个对象完成某一操作。可以请求或命令另一个对象完成某一操作。n n 对象之间是通过对象之间是通过“消息消息”传递实现相互联系。传递实现相互联系。向某个对象发送消息,就是要求该对象执行一个向某个对象发送消息,就是要求该对象执行一个操作。操作。n n 一个消息只说明接受者应该执行哪种操作,而一个消息只说明接受者应该执行哪种操作,而不说明怎样去执行这个操作,操作的具体执行由不说明怎样去执行这个操作,操作的具体执行由消息接受者确定。消息接受者确定。现在学习的是第19页,共67页.面向对
34、象程序设计的特性面向对象程序设计的特性(7)n n 所谓多态性是指同一个消息可以根据接收消息所谓多态性是指同一个消息可以根据接收消息的对象不同采用不同的操作。的对象不同采用不同的操作。n n 也就说,当不同的对象收到相同的消息时将产也就说,当不同的对象收到相同的消息时将产生不同的操作。生不同的操作。n n 例如例如VFP中的加中的加“+”运算符,不仅可以进行运算符,不仅可以进行数值相加,而且可以进行字符串相加。这完全取数值相加,而且可以进行字符串相加。这完全取决于表达式中加法运算符决于表达式中加法运算符“+”所操作的对象的所操作的对象的数据类型。数据类型。现在学习的是第20页,共67页.VFP
35、中的基类中的基类 基类是系统内部已定义好的基本类,用户可以利用这些基类是系统内部已定义好的基本类,用户可以利用这些基类创建自己的对象,或派生出子类。基类创建自己的对象,或派生出子类。n n 7.3.1 VFP的基类的基类(1)n n 复选框、组合框、命令按钮、控件、自定义、编辑框、表头、复选框、组合框、命令按钮、控件、自定义、编辑框、表头、复选框、组合框、命令按钮、控件、自定义、编辑框、表头、复选框、组合框、命令按钮、控件、自定义、编辑框、表头、图象、标签、线条、列表框、绑定型控件、容器控件、形状、图象、标签、线条、列表框、绑定型控件、容器控件、形状、图象、标签、线条、列表框、绑定型控件、容器
36、控件、形状、图象、标签、线条、列表框、绑定型控件、容器控件、形状、微调、文本框、容器、表单集、表单、表格、列、页框、页面、微调、文本框、容器、表单集、表单、表格、列、页框、页面、微调、文本框、容器、表单集、表单、表格、列、页框、页面、微调、文本框、容器、表单集、表单、表格、列、页框、页面、工具栏、选项按钮组、命令按钮组、选项组、分隔符等。工具栏、选项按钮组、命令按钮组、选项组、分隔符等。工具栏、选项按钮组、命令按钮组、选项组、分隔符等。工具栏、选项按钮组、命令按钮组、选项组、分隔符等。现在学习的是第21页,共67页.1 VFP中的基类中的基类(2)由基类可以创建对象,对象将继承该类的功由基类可
37、以创建对象,对象将继承该类的功能。每一个对象都会对特定事件作出响应,对一能。每一个对象都会对特定事件作出响应,对一些最小事件(基本事件)的响应,各类是共同的。些最小事件(基本事件)的响应,各类是共同的。n n 事件事件 是一种预先定义好的特定动作,它是一种预先定义好的特定动作,它由对象来识别。由对象来识别。n n 用户可以编写程序码对相应的动作进行响应。用户可以编写程序码对相应的动作进行响应。n n 事件可以由操作者的一个动作产生,如单击鼠事件可以由操作者的一个动作产生,如单击鼠标或按下一个键;也可以由程序代码或系统产生。标或按下一个键;也可以由程序代码或系统产生。现在学习的是第22页,共67
38、页7.3.1 VFP中的基类中的基类(3)基类的最小事件集基类的最小事件集-每个基类都可能有各自每个基类都可能有各自的区别于其它基类的属性、事件或方法,但的区别于其它基类的属性、事件或方法,但VFP基类都至少包含以下三个事件和四个属性。基类都至少包含以下三个事件和四个属性。n n VFP的基类有以下最小事件集的基类有以下最小事件集所有基类都所有基类都具有的事件组成的集合,包含这三个事件:具有的事件组成的集合,包含这三个事件:uu Init (初始初始):当对象创建时激活。当对象创建时激活。uu Destroy(破坏破坏):当对象从内存中释放时激当对象从内存中释放时激活。活。uu Error (
39、错误错误):当类中的事件或方法发生错当类中的事件或方法发生错误时激活。误时激活。现在学习的是第23页,共67页7.3.1 VFP中的基类中的基类(4)n n 基类的最小属性基类的最小属性-VFP的基类都有各自属性,但还有最的基类都有各自属性,但还有最小属性(最基本属性)小属性(最基本属性),所有基类至少包含以下四个属性:所有基类至少包含以下四个属性:uu Class(类类):该类对象属于何类,返回派生对象的类名该类对象属于何类,返回派生对象的类名称。称。uu BaseClass(基类基类):该类是由何基类派生而来,指定该类是由何基类派生而来,指定被引用对象的基类的类名。例如被引用对象的基类的类
40、名。例如Form(表单表单),CommandButton(命令按钮命令按钮)或或TextBox(文本框文本框)。uu ClassLibrary ClassLibrary(类库)(类库)(类库)(类库):该类从属于哪个类库,指定用户该类从属于哪个类库,指定用户该类从属于哪个类库,指定用户该类从属于哪个类库,指定用户自定义类库的文件名。自定义类库的文件名。自定义类库的文件名。自定义类库的文件名。uu ParentClass(ParentClass(父类父类父类父类):):返回对象所属于的父类名。返回对象所属于的父类名。返回对象所属于的父类名。返回对象所属于的父类名。若该类若该类若该类若该类直接由直
41、接由直接由直接由VFPVFP基类派生而来,则基类派生而来,则基类派生而来,则基类派生而来,则ParentClassParentClass属性值与属性值与属性值与属性值与BaseClassBaseClass属性值相同,即父类为基类。属性值相同,即父类为基类。属性值相同,即父类为基类。属性值相同,即父类为基类。现在学习的是第24页,共67页 .容器类和控件类容器类和控件类(1)VFP的基类有两大主要类型,的基类有两大主要类型,容器类容器类容器类容器类和和和和控件类控件类。因此。因此。因此。因此VFPVFP的对象也可分为这两大类型。的对象也可分为这两大类型。的对象也可分为这两大类型。的对象也可分为这
42、两大类型。容器类容器类容器类容器类n n 容器类中可以包含其他对象,这些对象可以是容器类对象,容器类中可以包含其他对象,这些对象可以是容器类对象,容器类中可以包含其他对象,这些对象可以是容器类对象,容器类中可以包含其他对象,这些对象可以是容器类对象,也可以是控制类对象,并允许访问这些对象。也可以是控制类对象,并允许访问这些对象。也可以是控制类对象,并允许访问这些对象。也可以是控制类对象,并允许访问这些对象。n n 例如,若创建一个含有两个列表框和两个命令按钮对例如,若创建一个含有两个列表框和两个命令按钮对象的容器类,而后将该类作为一个对象加入到表单中。象的容器类,而后将该类作为一个对象加入到表
43、单中。这样在设计时还可以对其中的任何一个列表框或命令按这样在设计时还可以对其中的任何一个列表框或命令按钮对象进行调整,如可以改变列表框的位置,可以给命钮对象进行调整,如可以改变列表框的位置,可以给命令按钮加注标题。令按钮加注标题。此外,还可以在容器中添加新的对象,此外,还可以在容器中添加新的对象,如可以给列表框加标签来标明列表框。如可以给列表框加标签来标明列表框。n n 容器类提供了一种将多个对象按需要进行组合的功能。容器类提供了一种将多个对象按需要进行组合的功能。容器类中的对象还可以是容器类的,这就形成了容器类容器类中的对象还可以是容器类的,这就形成了容器类对象的嵌套,因此容器类是允许有层次
44、的。对象的嵌套,因此容器类是允许有层次的。现在学习的是第25页,共67页.容器类和控件类容器类和控件类(2)n n VFP每个容器类所能包含的对象种类是有一定限制:每个容器类所能包含的对象种类是有一定限制:(容器所能够包含的对象)(容器所能够包含的对象)uu 命令按钮组:命令按钮组:命令按钮命令按钮命令按钮命令按钮uu 容器:容器:任意控件任意控件 控件:控件:任意控件任意控件任意控件任意控件uu 自定义:自定义:自定义:自定义:任意控件、页框、容器和自定义对象任意控件、页框、容器和自定义对象任意控件、页框、容器和自定义对象任意控件、页框、容器和自定义对象uu 表单集:表单集:表单、工具栏表单
45、、工具栏uu 表单:表单:页框、任意控件、容器或自定义对象页框、任意控件、容器或自定义对象uu 表格列:表格列:表头和除表单集、表单、工具栏、计时表头和除表单集、表单、工具栏、计时表头和除表单集、表单、工具栏、计时表头和除表单集、表单、工具栏、计时 器和器和器和器和其他列以外的其余任一对象。其他列以外的其余任一对象。其他列以外的其余任一对象。其他列以外的其余任一对象。uu 表格:表格:表格:表格:表格列表格列 选项按钮组:选项按钮组:选项按钮选项按钮uu 项目:项目:项目:项目:文件、服务程序文件、服务程序文件、服务程序文件、服务程序 页框:页框:页框:页框:页面页面 uu 页面:页面:页面:
46、页面:任意控件、容器和自定义对象任意控件、容器和自定义对象uu工具栏:工具栏:任意控件、页框和容器任意控件、页框和容器现在学习的是第26页,共67页 .容器类和控件类容器类和控件类(3)n n 2.控制类:控制类:n n 控制类也可以包含其他对象,这些对象在设计和运行时控制类也可以包含其他对象,这些对象在设计和运行时是作为一个整体对待进行修改或操作,而不能单独对其中是作为一个整体对待进行修改或操作,而不能单独对其中的个别对象进行修改或操作。的个别对象进行修改或操作。n n 也就是说,控制类中的对象不能是容器类对象,只能是也就是说,控制类中的对象不能是容器类对象,只能是最基本的对象,不能再分隔为
47、几个其它对象。最基本的对象,不能再分隔为几个其它对象。n n 容器类与控制类的根本区别在于,容器类可以按层次访问容器类与控制类的根本区别在于,容器类可以按层次访问容器类与控制类的根本区别在于,容器类可以按层次访问容器类与控制类的根本区别在于,容器类可以按层次访问容器类中的对象;而控制类的对象都是同一层的对象,不能容器类中的对象;而控制类的对象都是同一层的对象,不能容器类中的对象;而控制类的对象都是同一层的对象,不能容器类中的对象;而控制类的对象都是同一层的对象,不能再包含下一层对象。再包含下一层对象。再包含下一层对象。再包含下一层对象。现在学习的是第27页,共67页 .扩展基类扩展基类(1)n
48、 n 用户可以对用户可以对VFP的基类进行扩展,创建派生出的基类进行扩展,创建派生出满足自己需要的子类。满足自己需要的子类。n n 在创建子类后,可以设置自己的默认控件属性在创建子类后,可以设置自己的默认控件属性(如显示的标题、文本颜色、背景颜色等)(如显示的标题、文本颜色、背景颜色等)例如,我们可以由表单或表单集基类,创建例如,我们可以由表单或表单集基类,创建具有自定义外观和方法的表单类,用它作为创建具有自定义外观和方法的表单类,用它作为创建所有表单的模板。所有表单的模板。现在学习的是第28页,共67页.扩展基类扩展基类(2)n n 除了由基类派生子类以外,还可以在基类的基础上,创建除了由基
49、类派生子类以外,还可以在基类的基础上,创建除了由基类派生子类以外,还可以在基类的基础上,创建除了由基类派生子类以外,还可以在基类的基础上,创建具有封装功能的控件。具有封装功能的控件。具有封装功能的控件。具有封装功能的控件。uu 例如,假设需要一个按钮,在单击该钮时释放退出该例如,假设需要一个按钮,在单击该钮时释放退出该表单。表单。uu 可以在命令按钮类的基础上创建一个类,将它的可以在命令按钮类的基础上创建一个类,将它的可以在命令按钮类的基础上创建一个类,将它的可以在命令按钮类的基础上创建一个类,将它的Caption Caption 标题属性设置为标题属性设置为标题属性设置为标题属性设置为“退出
50、退出退出退出”;uu 并在按钮的并在按钮的并在按钮的并在按钮的ClickClick事件事件事件事件(鼠标指针点击控件,此事件发生)(鼠标指针点击控件,此事件发生)(鼠标指针点击控件,此事件发生)(鼠标指针点击控件,此事件发生)的过的过程代码中添加程代码中添加 “THISFORM.Release”方法方法(从内存(从内存(从内存(从内存中释放表单)中释放表单)中释放表单)中释放表单),uu 这样就可以将这个新按钮作为控件对象添加到应用程序的这样就可以将这个新按钮作为控件对象添加到应用程序的这样就可以将这个新按钮作为控件对象添加到应用程序的这样就可以将这个新按钮作为控件对象添加到应用程序的任何表单