面向对象软件开发概述.ppt_第1页
面向对象软件开发概述.ppt_第2页
面向对象软件开发概述.ppt_第3页
面向对象软件开发概述.ppt_第4页
面向对象软件开发概述.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言与面向对象程序 设计 中南民族大学 周斌 学 习 方 法 wNot to study, But to learn. w少做笔记,多听、多动手 。 课 程 考 试 平时情况与考试情况相结合 书面考试与上机实验相结合 第1章 面向对象软件开发概述 1.1 面向对象问题求解的提出 1.2 面向对象问题求解概述 1.3 对象、类与实体 1.4 对象的属性与相互关系 1.5 面向对象的软件开发过程 1.6 面向对象程序设计方法的优点 1.7 小结 1.1 面向对象问题求解的提出 早期计算机中运行的程序大都是为特定 的硬件系统专门设计的,称为面向机器的程序 。这类程序的运行速度和效率都很高,但是可 读性和可移植性很差,随着软件开发规模的扩 大,这类面向机器的程序逐渐被以FORTRAN 、C等为代表的面向过程的程序所取代。 面向过程的程序遵循面向过程的问题 求解方法。其中心思想是用计算机能够 理解的逻辑来描述和表达待解决的问题 及其具体的解决过程。 数据结构、算法是面向过程问题求解 的核心组成。其中数据结构利用计算机 的离散逻辑来量化表达需要解决的问题 ,而算法则研究如何快捷、高效地组织 解决问题的具体过程。 面向过程的问题求解可以精确、完备地 描述具体的求解过程(这里的过程通常是指操 作),但却不足以把一个包含了多个相互关联 的过程的复杂系统表述清楚, 而面向对象的问题求解则可以胜任这件 工作。面向对象问题求解关心的不仅仅是孤立 的单个过程,而是孕育所有这些过程的母体系 统,它能够使计算机逻辑来模拟描述系统本身 ,包括系统的组成,系统的各种可能状态,以 及系统中可能产生的各种过程与过程引起的系 统状态切换。 1. Simula I,它首次提出模拟人类的思维方法, 把数据和相关的操作集成在一起的思想。 2. Smalltalk 80 3. 产生了Lisp、Clascal、Object Pascal、C+等 多种面向对象的语言,这中间最有影响,也是对 面向对象技术的普及推动最大的当属C+。 4. Java是90年代新出现的面向对象的编程 语言。 1.2 面向对象问题求解概述 不同于面向过程的程序设计中以具体的解题 过程为研究和实现的主体,面向对象的程序设 计是以需解决的问题中所涉及到的各种对象为 主要矛盾。 “对象”是现实世界的实体或概念在计算机逻 辑中的抽象表示。 对象是具有唯一对象名和固定对外接口的一 组属性和操作的集合,用来模拟组成或影响现 实世界问题的一个或一组因素。 (1) 对象的数据封装特性彻底消除了传统结构 方法中数据与操作分离所带来的种种问题,提 高了程序的可复用性和可维护性,降低了程序 员保持数据与操作相容的负担。 (2) 对象的数据封装特性还可以把对象的私有 数据和公共数据分离开,保护了私有数据,减 少了可能的模块间干扰,达到降低程序复杂性 、提高可控性的目的。 面向对象的程序设计具有如下的优点: (3) 对象作为独立的整体具有良好的自恰性, 即它可以通过自身定义的操作来管理自己。 (4) 在具有自恰性的同时,对象通过一定的接 口和相应的消息机制与外界相联系。 (5) 继承是面向对象方法中除封装外的另一个 重要特性,通过继承可以很方便地实现应用的 扩展和已有代码的重复使用,在保证质量的前 提下提高了开发效率。 面向对象程序设计是将数据及数据的操作封装 在一起,成为一个不可分割的整体,同时将具有相同 特征的对象抽象成为一种新的数据类型类。通过 对象间的消息传递使整个系统运转。通过对象类的继 承提供代码重用的有效途径。 1.3 对象、类与实体 不同于面向过程的程序设计中以具体的 解题过程为研究和实现的主体,面向对象的程 序设计是以需解决的问题中所涉及到的各种对 象为主要矛盾。 更确切地,面向对象技术中的对象就是 现实世界中某个具体的物理实体在计算机逻辑 中的映射和体现。 类:是同种对象的集合与抽象,是一种抽象的数据类 型,它是所有具有一定共性的对象的抽象,而属 于类的某一个对象则被称为是类的一个实例,是 类的一次实例化的结果。 图1.1 对象、实体与类 1.4 对象的属性与相互关系 1.4.1 对象的属性 状态和行为是对象的主要属性。 状态:又称为对象的静态属性,主要指对象内 部所包含的各种信息,也就是变量。 行为:对象的操作,表述对象的动态属性,通 过行为设置或改变对象状态。 图1.2 对象的属性 “对象”是现实世界的实体或概念在计算机逻辑 中的抽象表示。最主要的特点是以数据为中心 ,它是一个集成了数据和其上操作的独立、自 恰的逻辑单位。 1.4.2 对象的关系 一个复杂的系统必然包括多个对象,这 些对象间可能存在的关系有三种:包含、继承 和关联。 1. 包含 当对象A是对象B的属性时,称对象B包 含对象A。 当一个对象包含另一个对象时,它将在 自己的内存空间中为这个被包含对象留出专门 的空间,即被包含对象将被保存在包含它的对 象内部。 2. 继承 当对象A是对象B的特例时,称对象A继承了对 象B。 实际上,这里所说的对象间的继承关系就是后 面要详细介绍的类间的继承关系。作为特例的类称为 子类,而子类所继承的类称为父类。父类是子类公共 关系的集合,子类将在父类定义的公共属性的基础上 ,根据自己的特殊性特别定义自己的属性。 3. 关联 当对象A的引用是对象B的属性时,称对 象A和对象B之间是关联关系。所谓对象的引 用是指对象的名称、地址、句柄等可以获取或 操纵该对象的途径。 相对于对象本身,对象的引用所占用的 内存空间要少得多,它只是找到对象的一条线 索。通过它,程序可以找到真正的对象,并访 问这个对象的数据,调用这个对象的方法。 1.5 面向对象的软件开发过程 面向对象的软件开发过程可以大体划分 为面向对象的分析(object oriented analysis ,OOA)、面向对象的设计(object oriented design,OOD)、面向对象的实现(object oriented programming,OOP)三个阶段。 1.5.1 面向对象的分析 面向对象的分析的主要作用是明确用户的需求 ,并用标准化的面向对象的模型规范地表述这一需求 ,最后将形成面向对象的分析模型,即OOA模型。 这种OOA模型包含5个层次,每个层次描述需求模型 的一个方面。 1. 对象 类层 这个层次将捕捉要开发的应用软件所对应的各个现实 世界的实体,并从中抽象出对象和类。 2. 静态属性层 静态属性层将为对象 类层中抽取出来的各个类和对 象设计静态属性(状态)和它们之间的约束关系(称 为实例连接)。 3. 服务层 服务层定义了对象和类的动态属性以及对象之 间的消息通信。对象和类的动态属性就是它们 的行为或方法(又称为“服务”),它规定了对 象和类的作用和功能,当对象在执行这些功能 的时候,它们之间将引发消息通信。 4. 结构层 结构层将定义系统中所有对象和类之间的层次 结构关系。如前所述,对象间有包含、继承和 关联三种关系,其中包含和继承属于结构层需 要表达的层次结构关系。继承将在对象间建立 “一般 特殊”的结构关系;包含将在对象间建 立 “整体 部分”的结构关系。 5. 主题层 当面临的系统非常复杂、庞大时,将它拆解为 若干个相对独立的子系统就变得非常必要了。 主题层将定义若干个主题,把有关的对象分别 划归不同的主题,每个主题成为一个子系统。 设计完上述5个层次,就得到了完整的 OOA模型。 1.5.2 面向对象的设计 如果说分析阶段应该明确所要开发的软 件系统“干什么”,那么设计阶段将明确这个软 件系统“怎么做”。面向对象的设计将对OOA模 型加以扩展并得到面向对象的设计阶段的最终 结果:OOD模型。 面向对象的设计将在OOA模型的基础上引入界 面管理、任务管理和数据管理三部分的内容,进一步 扩充OOA模型。 界面管理:负责整个系统的人机界面的设计; 任务管理:负责处理并行操作之类的系统资源管理功 能的工作; 数据管理:负责设计系统与数据库的接口。 其优点是实现了技术实现上的透明性,即一个部 分的具体技术细节与实现方法相对于所有其他部分是 不可见的,从而使系统的可重用性大大提高。 1.5.3 面向对象的实现 面向对象的实现就是具体的编码阶段,其主要 任务包括: (1) 选择一种合适的面向对象的编程语言,如 C+、Object Pascal、Java等。 (2) 用选定的语言编码实现详细设计步骤所得 的公式、图表、说明和规则等对软件系统各对 象类的详尽描述。 (3) 将编写好的各个类代码模块根据类的相互 关系集成。 (4) 利用开发人员提供的测试样例和用户提供 的测试样例分别检验编码完成的各个模块和整 个软件系统。在面向对象的开发过程中,测试 工作可以随着整个实现阶段编码工作的深入同 步完成。因为每个模块(类实现)完成之后可 以立即加入到系统框架中,模块的修改和细化 也可以在框架内部完成。 实际上,面向对象的软件开发还包括面向对象 的测试和维护。在面向对象的软件开发中,由 于采用了对象这个灵活、可扩展的概念,维护 阶段的工作将被大大简化。 1.6 面向对象程序设计方法的优点 与传统的方法相比,面向对象的问题求解具有 更好的可重用性、可扩展性和可管理性。本节 将简要介绍使用面向对象的程序设计方法的优 点和这种方法的适用场合。 1.6.1 可重用性 可重用性是面向对象软件开发的一个核 心思路,面向对象程序设计的抽象、封装、继 承、多态的四大特点都无一例外、或多或少地 围绕着可重用性这个核心并为之服务。 采用可重用模块来构建程序: 提高了开发效率,缩短了开发周期,降低了开 发成本; 其次,由于采用了已经被证明为正确、有效的 模块,程序的质量能够得到保证,维护工作量 也相应减少; 最后,采用可重用模块来构建程序,能提高程 序的标准化程度,符合现代大规模软件开发的 需求。 对于可重用的模块的要求: 首先,可重用模块必须是结构完整、逻辑严谨 、功能明确的独立软件结构; 其次,可重用模块必须具有良好的可移植性; 最后,可重用模块应该具有与外界交互、通信 的功能,它应该可以与它所工作的环境交换信 息,接受命令,提供结果,它还应该能与其他 的可重用模块协同工作。 1.6.2 可扩展性 可扩展性是对现代应用软件提出的又一个重要 要求,即要求应用软件能够很方便、容易地进行扩充 和修改,这种扩充和修改的范围不但涉及到软件的内 容,也涉及到软件的形式和工作机制。 使用面向对象技术开发的应用程序,具有较好 的可扩展性。面向对象技术的可扩展性,首先体现在 它特别适合于在快速原型的软件开发方法中使用。快 速原型法是研究软件生命周期的研究人员提出的一种 开发方法,相对于传统的瀑布式的开发方法,它在某 些程度上来说更加灵活和实用。 图 1.3 快速原型法的开发过程 用面向对象的程序设计方法来实现快速 原型这种先搭框架,再填入内容的开发思路是 非常合适的,因为面向对象程序的基本和主要 组成部分类,就是抽象出现实实体的主要 矛盾而形成的结构。 面向对象技术的这种可扩展性使得系统的维护 从另一个角度上来说就是把原有系统作为一个原 型而进行的延伸开发变得更加简单和容易,即只 需在原来系统框架的基础上对类做扩充和修改,维护 的工作量和开销自然大大降低。 面向对象开发方法的可扩展性还体现在它对模 块化技术的更有效的支持。用传统的面向过程方法来 实现模块化技术时,一个很大的障碍是无法实现同一 模块的多次同时运行。相反,用面向对象技术中的类 来实现模块,用类的实例化对象来实现模块在系 统中的多次、同时应用,则是再自然不过的安排。 1.6.3 可管理性 面向对象的开发方法采用内涵比过程和 函数丰富、复杂得多的类作为构建系统的部件 ,使整个项目的组织更加合理、方便。 在面向对象开发方法中,把数据和其上 的操作封装在一起,使得仅有该类的有限个方 法才可以操纵、改变这些数据。 1.7 小结 本章概述了面向对象软件开发的基础知 识,包括面向对象问题求解的提出和面向对象 问题求解的基本过程。 习题 1-1 简述面向过程问题求解和面向对象问题求解的异 同。试列举出面向对象和面向过程的编程语言各两种 。 1-2 简述对象、类和实体及它们之间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论