面向对象方法学引论

上传人:wm****3 文档编号:52102873 上传时间:2018-08-18 格式:PPT 页数:92 大小:1.07MB
返回 下载 相关 举报
面向对象方法学引论_第1页
第1页 / 共92页
面向对象方法学引论_第2页
第2页 / 共92页
面向对象方法学引论_第3页
第3页 / 共92页
面向对象方法学引论_第4页
第4页 / 共92页
面向对象方法学引论_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《面向对象方法学引论》由会员分享,可在线阅读,更多相关《面向对象方法学引论(92页珍藏版)》请在金锄头文库上搜索。

1、第九章 面向对象方法学引论1传统的生命周期方法学 l传统方法学的本质是在具体的软件开发工作开始之前,通过需求分 析预先定义软件需求,然后一个阶段接着一个阶 段有条不紊地开发用户所要求的软件,实现预先 定义的软件需求。l生命周期方法学是一个巨大的进步,对实现 软件开发工程化曾经起了重要的促进作用, 部分地缓解了软件危机。2传统的生命周期方法学l实践表明,传统的生命周期方法学并不能完 全消除软件危机。l对某些类型的软件开发,这种方法学比较适 用,对另一些类型的软件则可能完全不适用 。l近年来软件工程的新途径快速原型法和 面向对象方法学已经进入实用阶段,应 用得越来越广泛了。39.1.1 面向对象方

2、法学的要点l面向对象方法学的出发点和基本原则尽可能模拟人类习惯的思维方式,使开发软件的 方法与过程尽可能接近人类认识世界解决问题的 方法与过程;也就是使描述问题的问题空间(也称为问题域) 与实现解法的解空间(也称为求解域)在结构上 尽可能一致。4问题空间l客观世界的问题都是由客观世界中的实体及实体间 相互间的关系构成的。l我们把客观世界中的一个实体抽象为问题域中的对 象(Object)。l从动态观点看,对对象施加的操作就是该对象的行 为。l通常,客观世界中的实体既具有静态的属性又具有 动态的行为。 5解空间l计算机中的实体称为解空间的对象,显然,解空间 的对象取决于所使用的程序设计语言。例如,

3、汇编语言提供的对象是存储单元;面向过程的高级 语言提供的对象,是各种预定义类型的变量、数组、记录 和文件等。l这些解空间对象实质上仅仅是描述实体属性的数据 ,必须在程序中从外部对它施加操作,才能模拟它 的行为。6传统方法中问题空间和解空间的映射关系l在问题空间中(即客观世界中的实体)既具有静态 的属性又具有动态的行为。l在解空间中,传统方法把数据(静态的属性)和处 理(动态的行为)人为地分离成两个独立的部分, 这使得描述问题的问题空间(也称为问题域)与实 现解法的解空间(也称为求解域)在结构上不一致 。l增加了软件开发的难度。 7面向对象方法中问题空间和解空间的映射关系l面向对象方法尽可能模拟

4、客观世界,它把数据以及 在这些数据上的操作所构成的统一体称为“对象”。l对象是进行处理的主体。必须发消息请求对象执行它的某些操作,处理它的私有数 据,而不能从外界直接对它的私有数据进行操作。l这样,软件开发者可以根据问题空间的结构,定义 或选取解空间对象,然后用一系列离散的解空间对 象的集合组成软件系统。8面向对象方法中问题空间和解空间的映射关系l这些解空间对象彼此间通过发送消息而相互作用, 从而得出问题的解。l也就是说,面向对象是一种新的思维方法,它不是 把程序看作是工作在数据上的一系列过程或函数的 集合,而是把程序看作是相互协作而又彼此独立的 对象的集合。l在许多系统中解空间对象都可以直接

5、模拟问题空间 的对象,解空间与问题空间的结构十分一致,因此 ,这样的程序易于理解和维护。 9面向对象方法的四个要点 n认为客观世界是由各种对象组成的,任何事 物都是对象;复杂的对象可以由比较简单的 对象以某种方式组合而成。因此,面向对象的软件系统是由各种对象组成的 ;任何元素都是对象,复杂的对象可以由比较简单 的对象某种方式组合而成。10面向对象方法的四个要点 n把所有对象都划分成各种对象类(简称为类Class) ,每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。每当建立该对象类的一个新实例时,就按照类中对数据的 定义为这个新对象生成一组专用的数据,以便描述

6、该对象 独特的属性值。类中定义的方法,是允许施加于该类对象上的操作,是该 类所有对象共享的,并不需要为每个对象都复制操作的代 码。11面向对象方法的四个要点 n按照子类(或称为派生类)与父类(或称为 基类)的关系,把若干个对象类组成一个层 次结构的系统(也称为类等级)。派生类具有基类的特性(包括数据和方法),但 是派生类又有某些基类没有的特性。这种现象称为继承(Inheritance)。12面向对象方法的四个要点 n对象彼此之间仅能通过传递消息互相联系。对象是进行处理的主体,必须发消息请求它执行 它的某个操作,处理它的私有数据,而不能从外 界直接对它的私有数据进行操作。也就是说,该对象的私有信

7、息,都被封装在该对 象类的定义中,这就是“封装性”。13面向对象方法学方程 lOO Objects + Classes + Inheritance + Communication with messagesl也就是说,面向对象就是既使用对象又使用 类和继承等机制,而且对象之间仅能通过传 递消息实现彼此通信。 149.1.2 面向对象方法的主要优点l与人类习惯的思维方法一致面向过程的设计方法:l这种方法以算法为核心,把数据和过程作为相互独立的 部分。面向对象的设计方法:l这种方法以对象为核心,用这种技术开发出的软件系统 由对象组成。l对象之间通过传递消息互相联系,以模拟现实世界中不 同事物彼此之

8、间的联系。15面向对象方法的主要优点l稳定性好面向过程的设计方法:l这种方法以算法为核心,开发过程基于功能分析和功能 分解。软件系统的结构紧密依赖于系统所要完成的功能 ,当功能需求发生变化时将引起软件结构的整体修改。面向对象的设计方法:l这种方法以对象为中心构造软件系统。用对象模拟问题 领域中的实体,以对象间的联系刻画实体间的联系。当 系统的功能需求变化时,往往只需要作一些局部性的修 改。这样的软件系统比较稳定。16面向对象方法的主要优点l可重用性好传统的软件重用技术:l用标准函数库中的函数作为“预制件”来建造新的软件系统。但 标准函数缺乏必要的“柔性”,不能适应不同的应用场合,不是 理想的可

9、重用的软件成分。面向对象的设计方法:l重用一个对象类有两种方法,一种方法是创建该类的实例,从 而直接使用它;另一种方法是从它派生出一个满足当前需要的 新类。继承性机制使得子类不仅可以重用其父类的数据结构和 程序代码,而且可以在父类代码的基础上方便地修改和扩充, 这种修改并不影响对原有类的使用。17面向对象方法的主要优点l较易开发大型软件产品可以将大系统分解成相互独立的小产品来处理可以降低成本,提高质量l可维护性好面向对象的软件稳定性比较好。面向对象的软件比较容易修改。面向对象的软件比较容易理解。易于测试和调试。189.1.3 喷泉模型l迭代是软件开发过程中普遍存在的一种内在属性。 这种迭代过程

10、在面向对象开发中,更常见。l面向对象开发的工作重点应该放在生命周期中的分 析阶段。l这种方法在开发的早期阶段定义了一系列面向问题 的对象,并且在整个开发过程中不断充实和扩充这 些对象l每次反复都会增加或明确一些目标系统的性质,但 却不是对先前工作结果的本质性改动,这样就减少 了不一致性,降低了出错的可能性。19喷泉模型图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭并且相互“无缝”; 图中在一个阶段内的向下箭头代 表该阶段内的迭代(或求精)。图 中较小的圆圈代表维护,圆圈较 小象征着采用了面向对象范型之 后维护时间缩短了。应该把一个线性过程(例如,快速 原型模型或图91中的中

11、心垂线 )作为总目标。209.2 面向对象的基本概念l对象l类(Class)l实例(Instance)l消息(Message)l方法(Method)l属性(Attribute)l继承(Inheritance)l多态性(Polymorphism)l重载(Overloading)21对象l在应用领域中有意义的、与所要解决的问题 有关系的任何事物都可以作为对象。l它既可以是具体的物理实体的抽象,也可以 是人为的概念,或者是任何有明确边界和意 义的东西。22对象l面向对象方法学中的对象是由描述该对象属 性的数据以及可以对这些数据施加的所有操 作封装在一起构成的统一体。l对象可以作的操作表示它的动态行为

12、,在面 向对象分析和面向对象设计中,通常把对象 的操作称为服务或方法。23对象的形象表示24对象l使用对象时只需知道它向外界提供的接口形 式而无须知道它的内部实现算法。l不仅使得对象的使用变得非常简单、方便, 而且具有很高的安全性和可靠性。 l对象内部的数据只能通过对象的公有方法来 访问或处理,这就保证了对这些数据的访问 或处理,在任何时候都是使用统一的方法进 行的。25对象的定义l对象是封装了数据结构及可以施加在这些数 据结构上的操作的封装体,l这个封装体有可以唯一地标识它的名字,l而且向外界提供一组服务(即公有的操作) 。26对象的特点l以数据为中心。l对象是主动的。l实现了数据封装。l本

13、质上具有并行性。l模块独立性好。27类(Class)l人类习惯于把有相似特征的事物归为一类, 分类是人类认识客观世界的基本方法。l在面向对象的软件技术中,把具有相同数据 和相同操作的一组相似对象也归为一“类”。 28类(Class)l三个圆心位置、半径大小和颜色均不相同的 圆,是三个不同的对象;l但是,它们都有相同的数据(圆心坐标、半 径、颜色)和相同的操作(显示自己、放大 缩小半径、在屏幕上移动位置,等等)。l因此,它们是同一类事物,可以用“Circle类 ”来定义。29实例(Instance)l实例就是由某个特定的类所描述的一个具体 的对象。类是对具有相同属性和行为的一组相似的对象的 抽象

14、,类在现实世界中并不能真正存在。在地球上并没有抽象的“中国人”,只有一个个具 体的中国人,例如,张三、李四、王五30实例(Instance)l实际上类是建立对象时使用的“模板”;l按照这个模板所建立的一个个具体的对象, 就是类的实际例子,通常称为实例。 31消息(Message)l消息是要求某个对象执行在定义它的那个类 中所定义的某个操作的规格说明。l一个消息由下述三部分组成:接收消息的对象;消息选择符(也称为消息名);零个或多个变元。32消息(Message)lMyCircle是一个半径4cm、圆心位于(100 ,200)的Circle类的对象,也就是Circle类 的一个实例。l当要求它以

15、绿颜色在屏幕上显示自己时,在 C+语言中应该向它发下列消息:l MyCircle.Show(GREEN);33方法(Method)l方法,就是对象所能执行的操作,也就是类 中所定义的服务。l方法描述了对象执行操作的算法,响应消息 的方法。在C+语言中把方法称为成员函数。例如,为了Circle类的对象能够响应让它在屏幕 上显示自己的消息Show(GREEN),在Circle 类中必须给出成员函数Show(int color)的定义 ,也就是要给出这个成员函数的实现代码。34属性(Attribute)l属性,就是类中所定义的数据,它是对客观 世界实体所具有的性质的抽象。l类的每个实例都有自己特有的

16、属性值。在C+语言中把属性称为数据成员。例如,Circle类中定义的代表圆心坐标、半径、 颜色等的数据成员,就是圆的属性。356封装(encapsulation)l定义:把数据和实现操作的代码集中起来放 在对象内部。对外部,表示对象状态的数据 和实现操作的代码与局部数据都不可见,更 不能从外面直接访问或修改这些数据和代码 。l对象具有封装性的条件如下: (1)有一个清晰的边界。所有私有数据和实现操作的 代码都被封装在这个边界内,从外面看不见更不 能直接访问。 (2)有确定的接口(即协议)。这些接口就是对象可以 接受的消息,只能通过向对象发送消息来使用它 。 (3)受保护的内部实现。实现对象功能的细节(私有数 据和代码)不能在定义该对象的类的范围外访问。36继承(Inheritance)l广义地说,继承是指能够直接获得已有的性 质和特征,而不必重复定义它们。l在面向对象的软件技术中,继承是子类自动 地共享基类中定义的数据和方法的机制。37继承(Inheritance)38继承(Inh

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号