第7章面向对象的程序设计PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在大型软件系统设计中,由于软件系统本身的复杂 性,要求必须许多人通力合作,采用工程化的方法进 行开发和管理,这也对程序设计语言和程序设计方法 提出了更高的要求。
通过使用结构化程序设计方法,可以对整个任务进 行清晰严格的划分,使每个程序员能明确了解自己的 工作任务以及与他人的接口。
每个程序员可以独立地设计调试自己负责的模块, 最终各模块也能够顺利地集成到整个系统中去。
§7.2.3 面向对象程序设计的特性(4)
3.继承性
例如,由基本类型的电话(拨号、讲话、听音 功能),可以派生出电话传真机、移动电话、 公用投币电话等,这些电话都继承了电话基本 类型的拨号、讲话、听音功能,又添加了各自 的独特功能。
由于有了继承性,当把基本类型的电话由拨 号改为按键,其它类型的电话都可以改为按键, 继承性使我们不必研究每种电话如何实现按键。
§7.2 面向对象程序设计的基本概念
面向对象技术为软件开发提供了一种新的思 想,引入了许多新的概念,这些概念是理解和 使用面向对象技术的基础和关键。
§7.2.1 对象(Object)(1) 现实世界的实体——事、物、概念等,都统
称为对象。在面向对象系统中一切成份都是对 象,大到整个系统、项目、数据库、表、表单, 小到窗口、控件都被视为对象。
§7.2.3 面向对象程序设计的特性(1)
与结构化程序设计相比,面向对象程序设计 有许多突出特性,即抽象性、封装性、继承性 和多态性。
1.抽象性
一般而们所关心的或认为重要的信息,而 将不重要的信息予以忽略。
例,我们对电话的认识已经抽象化了,拨号、 讲话、听音这就是我们印象中的电话,而不关 心和了解电话内部的线路和工作原理。
视图窗口的位置、大小、和颜色都是视图 对象的“属性”;对视图的修改操作后, 将数据替换源表,是视图对象的“方法”; 当数据修改完用鼠标点动关闭视图按钮, 就产生关闭视图的“事件”,视图对象接 收到这个关闭动作(事件)后,就会执行 另一方法程序将视图数据发送回源表。
§7.2.1 对象(Object)(4)
若类的层次具有多层,则这种继承性还具有 传递作用,即下层的子类可继承其以上各层父 类的全部功能。
§7.2.3 面向对象程序设计的特性(6)
4.多态性
例:F1 ~ F12功能键,不同的软件环境对每一 功能键有不同的功能定义。同是一键在不同的 软件中就会产生不同的操作,这就是多态性。
每个对象不可能只是单独工作,完成某一任 务可能要某些对象通过协同工作来完成,一个 对象可以请求或命令另一个对象完成某一操作。
对象的基本特点是具有属性,用来描述自己的状态; 有方法,构成自己的行为;有可以识别的事件,响应 外界的刺激。
以设计一个模拟收音机的程序为例,收音机有属性 “音量”,可以调节播放声音的大小;有方法“广 播”,来完成播放功能;有事件“改变音量”,在改
§7.2.1 对象(Object)(3) 又例如,一个视图窗口就是一个对象。
§7.2.3 面向对象程序设计的特性(2)
面向对象程序设计利用抽象性,提取一个类或对象 与众不同的特征,而不对该类或对象的所有信息进行 类和容器的层次结构处理,抽象性能够忽略对象的内 部细节,隐藏不必要的复杂性。
例如,在创建一个表浏览窗口类时,窗口中有一系 列定位表记录指针的按钮,我们可以把这些按钮作为 一个整体进行抽象,而不必关心其中的单个组件,以 及它们相互之间是如何作用的。
每一模块内部均由顺序、选择、和循环三种基本结 构组成,其模块化实现的具体方法是使用了过程(子 程序)。
这样,一个较复杂的系统按功能分解成许多易于控 制和处理的子系统、子任务,这些子系统、子任务都 是可独立编程实现的子程序模块,而这些子程序均由 分级的用户界面菜单实现调用。
§7.1.1 过程化(结构化)程序设计及其优缺点(2)
面向对象程序设计试图使程序设计环境适合 于现实世界的问题,而不是象过程程序设计所 要求的使现实世界的问题适合于程序设计语言。
§7.1 面向对象程序设计与过程化程序设计的比较
§7.1.1 过程化(结构化)程序设计及其优缺点(1) 结构化程序设计的设计方法,是将程序结构按功能
划分成若干基本模块,这些模块形成一个树形结构, 自顶向下,逐步求精。程序设计时,使各模块之间的 关系相对紧密。
综上所述,我们可以把对象初步理解为:
对象是一个封装了属性、事件和方法的实体。
属性描述了对象的状态、特征;
每个对象都有可以识别和响应的事件,事 件是一种定义好的特定动作,每当对对象进 行某种操作时,就会引发该事件所对应的程 序代码被执行;
每当其他对象向本对象发出消息并触发事 件时,与事件相关联的方法程序才得以执行。
第七章
面向对象的程序设计
第七章 面向对象的程序设计
面向对象程序设计(简称OOP)技术最近几 年在计算机领域得到了迅猛发展,它是程序设 计方法的一场革命。
与传统的结构化程序设计(面向过程程序设 计)相比,它具有许多优点,其中最主要的是, 面向对象程序设计是按照人类认识世界的方法 和思路方式来解决问题。
对象之间是通过“消息”传递实现相互联系。 向某个对象发送消息,就是要求该对象执行一 个操作。
一个消息只说明接受者应该执行哪种操作, 而不说明怎样去执行这个操作,操作的具体执 行由消息接受者确定。
§7.2.3 面向对象程序设计的特性(7)
所谓多态性是指同一个消息可以根据接收消 息的对象不同采用不同的操作。
继承性即子类延用父类特征的能力。一个子 类可以拥有其父类的全部功能,然后在此基础 上,可以添加其他控件或功能。继承性体现了 类层次中的“共享”机制。
§7.2.3 面向对象程序设计的特性(5)
由于有继承性,就可以使得在一个类上所做 的改动反映到它的所有子类当中,若发现类中 有一个小错误,用户不必逐一修改各子类的代 码,只需要在父类中改动,然后这个变动将会 体现在全部子类中。这种自动更新可节省用户 的时间和精力。
程序员在编程时必须要时刻考虑所要处理的数据格式, 对于不同的数据格式,即使要做同样的处理或对相同 的数据格式要做不同的处理,都需要编写不同的程序, 因此重用性不够好。
另一方面,当数据和过程相互独立时,总存在用错 误的数据调用正确程序模块,或用正确的数据调用错 误程序模块的可能性。
因此,要使数据与程序始终保持相容等问题,结构 化程序设计方法本身是无法解决的,这可借助于新一 代设计方法——面向对象的程序设计方法。
它用“对象”表现事物,用“事件”表示处 理事物的动作,用“方法”表现处理事物的过 程,用“消息”传递对象与对象之间的相互联
§7.1.2 面向对象程序设计及其优越性(2)
面向对象程序设计时,不再是单纯地从代码的第一 行一直编写到最后一行,而是考虑如何创建对象,利 用对象来简化程序设计,并提供代码的可重用性。同 时面向对象程序设计也吸取了结构化程序设计的优点。
而“对象”是类的具体实例,它是将类所描述的共 同特征赋予具体实体而形成的。因此,类与对象既有 区别,又有联系,两者关系十分紧密。
所有对象的属性、事件和方法都是在定义类时被指 定,由于类是定义了对象特征、外观和行为的模板, 所以对象由类生成,生成的对象也自然具有相同的属 性、事件和方法。例如,由复选框类、单选按钮类可 以生成各种形式的复选框、单选按钮。
§7.1.2 面向对象程序设计及其优越性(3)
面向对象程序设计方法具有模块化、信息封 装与隐藏、抽象性、继承性、多态性等特点, 它又解决了大型软件系统设计与管理中所需的 软件可靠性、可重用性、可扩充性、可维护性 及提高开发效率等问题。因此,面向对象程序 设计能够更好地支持大型软件系统的开发。
Visual FoxPro不但仍然支持标准的结构化程 序设计,而且在语言上还进行了扩展,提供了 面向对象程序设计的强大功能和更大灵活性。
面向对象程序设计,可以支持先进的软件开发策略: 编写可重用代码,编写可维护的代码,共享代码,优 化已有的代码等。
有了高质量的可重用代码就能有效地降低软件的复杂 性,提高软件开发效率。开发者在设计软件时可以利 用一些已经精心设计好并且经过测试的代码,这些可 重用的代码被组织和存放在程序设计环境的类库中, 使以后程序设计过程变得更简单。
7.3.1 VFP中的基类(3)
基类的最小事件集--每个基类都可能有各自的 区别于其它基类的属性、事件或方法,但VFP基 类都至少包含以下三个事件和四个属性。
VFP的基类有以下最小事件集——所有基类都 具有的事件组成的集合,包含这三个事件:
Init (初始): 当对象创建时激活。 Destroy(破坏): 当对象从内存中释放时激活。
方法可以操作对象数据,改变对象的状态、 特征。
§7.2.2 类
“类”源于日常生活中类别、分类概念。同类实体 具有相同的属性和行为特征。类是对一组相似对象的 共同抽象描述,它将该组对象所具有的共同特征集中 起来,用于说明该组对象的性质和能力。
可以看出,“类”是将相同属性和行为特征的对象, 提取共同属性和特征而产生的,是对象抽象化的结果, 是对象的兰图和框架。
§7.1.2 面向对象程序设计及其优越性(1)
面向对象程序设计将数据及对数据的操作融 为一体,作为一个相互依存、不可分割的整体 来处理。它采用数据抽象和信息隐藏技术,将 对象及对象的操作抽象成一种新的数据类型— —类,并且考虑到不同对象之间的联系和对象 类的重用性。
面向对象程序设计所追求的目标是将现实世 界的问题求解尽可能简单化,采用符合人类处 理问题的思维方式。
§7.2.3 面向对象程序设计的特性(3)
2.封装性
封装实际上是一种信息隐藏技术,抽象性通 过封装得以实现。
封装就是指将对象的方法程序和属性代码包 装在一起。封装将操作对象的内部复杂性与应 用程序的其它部分隔离开来。
例如,我们将电话的零部件和线路封装在电 话的外壳里,这样使用户看不到电话内部线路 的复杂性,只专心拨号、讲话、听音,从而也 产生用户对电话具有拨号、讲话、听音功能这 种抽象化的认识。
§7.3.1 VFP中的基类(2)
由基类可以创建对象,对象将继承该类的功 能。每一个对象都会对特定事件作出响应,对 一些最小事件(基本事件)的响应,各类是共 同的。
事件—— 是一种预先定义好的特定动作,它 由对象来识别。
用户可以编写程序码对相应的动作进行响应。
事件可以由操作者的一个动作产生,如单击 鼠标或按下一个键;也可以由程序代码或系统 产生。
对象是一个逻辑实体,它包括数据和完成处 理所需要的程序代码,是数据和代码的组合。
§7.2.1 对象(Object)(2)
在VFP中称对象的特征和数据为“属性”,称由对 象识别的一个动作为“事件”,称在对象上完成的操 作过程为“方法”。
定义了对象的属性、事件和方法就决定对象的外观 和它的动作。因此,对象是属性、事件和方法的集合 体,用户通过属性、事件和方法来处理对象。
也就说,当不同的对象收到相同的消息时将 产生不同的操作。
例如VFP中的加“+”运算符,不仅可以进行 数值相加,而且可以进行字符串相加。这完全 取决于表达式中加法运算符“+”所操作的对象 的数据类型。
§7.3 VFP中的基类
基类是系统内部已定义好的基本类,用户可以利用 这些基类创建自己的对象,或派生出子类。 7.3.1 VFP的基类(1) 复选框、组合框、命令按钮、控件、自定义、编辑 框、表头、图象、标签、线条、列表框、绑定型控件、 容器控件、形状、微调、文本框、容器、表单集、表 单、表格、列、页框、页面、工具栏、选项按钮组、 命令按钮组、选项组、分隔符等。
结构化程序设计方法,由于模块之间逻辑结构清晰, 功能相对独立,满足了大型软件系统易维护性和可读 性的要求。
因此,结构化程序设计能够较好地满足大型软件系 统的设计要求,是现代软件工程的基础。
§7.1.1 过程化(结构化)程序设计及其优缺点(3)
尽管结构化程序设计具有许多优点,但它仍然是一种 面向数据和过程的设计方法,它把数据和过程分离为 相互独立的实体。
相关文档
最新文档