第5章 面向对象的方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 面向对象方法概述
面向对象方法具有下述4个要点: (1)对象(Object) 客观世界由各种对象组成,任何事物都是对 象,复杂的对象可以由比较简单的对象组合而成。 按照这种观点,可以认为整个世界就是一个最复 杂的对象。面向对象方法把客观世界中的实体抽 象为问题题中的对象。 面向对象方法用对象分解取代了传统方法的 功能分解。面向对象的软件系统由对象组成,软 件中的任何元素都是对象,复杂的软件对象由比 较简单的对象组合而成。
5.1 面向对象方法概述
5.1.2 面向对象方法概述 1. 面向对象方法学的要点 面向对象的方法是尽可能模拟人类习惯的思 维方式,使开发软件的方法与过程尽可能接近人 类认识世界解决问题的方法与过程。将软件系统 看作一系列离散的解空间对象的集合,并使问题 空间的对象与解空间对象尽量一致,这些解空间 对象相互之间发送消息而相互作用,从而获得问 题空间的解。这样,问题空间与解空间的结构、 描述的模型十分一致,减少了软件系统开发的复 杂度,使系统易于理解和维护。
如果在派生类中对某些特性又做了重新描述, 则在派生类中的这些特性将以新描述为准,即: 低层的特性将屏蔽高层的同名特性。
建立继承结构的优点有:易编程、易理解: 代码短,结构清晰;易修改:共同部分只要在一 处修改即可;易增加新类:只须描述不同部分即 可。
Leabharlann Baidu
5.1 面向对象方法概述
(4)消息传递 消息是对象发出的服务请求,对象彼此之间 仅能通过传递消息互相联系。对象与传统的数据 有本质区别,它不是被动地等待外界对它施加操 作,而是必须发消息请求它执行它的某个操作, 处理它的私有数据。对象是处理的主体,不能从 外界直接对它的私有数据进行操作。 也就是说,对象的私有信息被封装在该对象 类的定义中,必须发消息请求它执行某个操作, 处理它的数据,外界看不见这些信息,更不能直 接对它的信息进行操作,这就是“封装性”。
5.1 面向对象方法概述
4. 开发出的软件不能满足用户需要 用传统软件工程方法在开发需求模糊或需求 动态变化的系统时,开发出的软件系统往往不能 真正满足用户的需要。所谓“不能真正满足用户 的需要”,主要有以下两种表现:一种是开发人 员不能完全获得或不能彻底理解用户的需求,以 致开发出的软件系统与用户预期的系统不一致, 不能满足用户的需要;另一种表现是,所开发出 的系统不能适应用户需求的经常变化,系统的稳 定性和可扩充性不能适应变化。传统软件工程方 法是围绕处理功能的“过程”构造系统的,而用 户需求的变化大部分是针对功能的,用户需求的 变化往往造成系统结构的较大变化,从而需要花 很大代价才能实现这种变化。
5.1 面向对象方法概述
例如学生是一个类,根据学生入学条件的不 同、学制的不同、课程的不同等,学生类可以分 为专科生、本科生和研究生三个子类,每个学生 分别属于不同的子类,但都是学生。凡学生类定 义的数据和方法专科生、本科生和研究生都自动 拥有。各个特殊类可以从一般类中继承共性,这 样就避免了重复。
20世纪80年代中期起,开始注重面向对象技术 的研究,到了20世纪90年代,面向对象方法成为人 们在开发软件时的首选。
5.1 面向对象方法概述
5.1.1传统软件工程方法存在的问题 传统的软件工程方法强调需求分析的重要性, 要求在每个阶段结束前必须进行评审,在软件开 发过程中实行严格的质量管理,从而提高软件开 发的质量和成功率;采用先进的技术方法(主要 是结构分析、设计、编程技术)和软件工具,加 快了软件开发的速度。但是,传统的软件工程方 法仍然存在着许多根本性的问题。
5.1 面向对象方法概述
例如学生类都具有学号、姓名、性别等属性, 具体到每一个学生,这些属性都是不尽相同的。 类好比是一个对象模板,它定义了各个实例所共 有的结构,用它可以产生多个对象。类所代表的 是一个抽象的概念或事物,在客观世界中实际存 在的是类的实例,即对象。
(3)继承(Inheritance) 按照父类(也称为基类)与子类(也称为派生类) 的关系,把若干个对象类组成一个层次结构的系 统(也称为类等级)。在这种层次结构中,通常下 层的派生类具有和上层的基类相同的特性(包括 数据和方法),这种现象称为继承。
5.1 面向对象方法概述
1. 软件重用性差 重用性指同一事物不经修改或稍加修改就可 多次重复使用的性质,软件重用性是软件工程追 求的目标,也是节约费用、减少人员、提高软件 生产率的重要途径。结构化分析、设计和结构化 程序开发,虽然一定程序上提高了开发效率,但 却没能很好地解决软件重用问题。同类型项目, 如果需求发生一些变化,都要从头开始,原有的 系统很难重用。
5.1 面向对象方法概述
(2)类(class) 和实例(Instance) 把所有对象都划分成各种对象类,每个对象 类都定义了一组数据和一组方法。其中数据用于 表示对象的静态属性,是对象的状态信息;方法 是允许施加于该类对象上的操作,是该类所有对 象共享的,并不需要为每个对象都复制操作的代 码。 属于某个类的对象叫做该类的实例。对象的 状态则包含在它的实例变量,即实例的属性中。 因此,每当建立该对象类的一个新实例时,就按 照类中对数据的定义为这个新对象生成一组专用 的数据,以描述该对象独特的属性值。
5.1 面向对象方法概述
2. 软件可维护性差 软件工程强调软件可维护性,强调文档资料 的重要性,规定最终的软件产品应该由完整、一 致的文档成分组成。开发过程中,始终强调软件 的可读性、可修改性和可测试性是软件的重要质 量指标。但实践表明,即使是用生命周期方法学 开发出的软件,维护起来仍然相当困难,软件维 护成本仍然很高。 3. 软件生产率提高的幅度远不能满足需要 传统软件工程方法提高许多软件的开发效率, 但提高的幅度仍然很有限,远远赶不上市场对软 件产品的需要。
第5章 面向对象的方法
• 5.1 面向对象方法概述 • 5.2 面向对象分析 • 5.3 面向对象设计 • 实例分析 • 本章小结
尽管传统的软件工程方法给部分地缓解了软件危 机,给软件产业带来了巨大进步,开发中、小规模 的软件获得了成功。但是传统的软件工程方法并不 适用于所有类型的软件开发,并且自身也存在着局 限性。随着软件规模越来越大、越来越复杂,用这 种方法开发大型软件系统时,很少取得成功。