软件工程第九章 面向对象的方法知识.ppt
文本预览下载声明
软件工程 第9讲 面向对象的方法 9.1传统方法与面向对象方法 (1)传统方法存在的问题 传统方法的发展 以结构化程序设计为基础,并逐步扩展到分析与设计阶段的一种软件工程方法。 面向功能的方法 面向数据流的方法 面向数据结构的方法 传统方法的本质 进行功能分解,从目标系统的整体功能着手,自顶向下不断将复杂的处理分解为子处理,直至每个子处理比较简单,在使用的时候一个一个依次调用就可以了 。 传统方法存在的主要问题 由于围绕处理功能来构造系统的,因此任何需求的变化都会对原有系统产生致命的影响; 需求不能精确描述,从分析到设计的转化存在鸿沟,造成分歧,系统的稳定性和易变性差; 将数据与实现方法相分离的做法,偏离了客观世界中人们处理问题的方式; 产生的软件重用性差,易变性差,可维护性差,软件不能满足用户要求的问题。 (2)面向对象的概念与思想 (1)认识问题、分析问题、解决问题的方式不同 将数据和方法封装在一个称为“对象”的统一体中; 对象之间通过“消息”相互联系,“对象+消息”机制取代了“数据结构+算法”的思路,减小了系统变化所带来的波动性; 以对象为中心构建系统。 (2)“问题空间”与“解空间” 有较一致的表示 在“OOA-OOD-OOI”的过程中,采用一致的模型表示,弥合了“鸿沟”问题。 (3)利用继承性和封装性支持软件复用 后一阶段可直接复用前一阶段的结果,可重用性好。 (4)适应复杂大型系统的发展和变化要求 以对象为中心,而不是基于功能与功能的分解来建立系统,因此,当功能需求发生变化时,不会引起系统的整体变化,稳定性较好 例如五子棋,传统的设计思路就是确定问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。 面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为: 1、黑白双方,这两方的行为是一模一样的, 2、棋盘系统,负责绘制画面, 3、规则系统,负责判定诸如犯规、输赢等。 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 9.2 传统面向对象方法 OOA/OOD方法(Coad和Yourdon提出) OMT方法(Rumbaugh提出) Booch方法(Booch提出) OOSE方法(Jacobson提出) Coad/Yourdon方法 (1)方法简介 提出: P. Coad 和E. Yourdon于 1991年提出。 该方法分2个阶段: OOA(Object-Oriented Analysis)面向对象分析 OOD(Object-Oriented Design)面向对象设计。 主题(subject)又称为子系统(subsystem)是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。 用“对象-关系模型”描述系统的静态结构 通过消息连接说明所标识的各种对象是如何通信、协作,使系统运作起来 。 什么是问题域设计 OOD是对OOA的修改、增补 根据实现技术及实现方面的限制,合并或分开一些类及对象、结构、属性、服务,但保留在OOA模型中所捕获到的基本的系统行为 什么是人机交互设计 通常在OOA阶段给出了所需的属性和操作,在设计阶段必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必需的实际显示和输入。 什么是任务管理设计 当系统中有许多并发行为时,需要依照各个行为的协调和通信关系,划分各种任务。任务管理主要包括识别事件驱动任务、识别时钟驱动任务、识别优先任务、识别协调任务、审查每个任务、定义每个任务等 什么是数据管理设计 数据管理提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。它分离了数据管理机构所关心的事项,包括文件、关系型DBMS或面向对象DBMS等。 9.3 UML与RUP (1)UML概述 20世纪90年代,3个最流行的面向对象方法是:OMT方法(Rumbaugh提出),Booch方法(Booch提出),OOSE方法(Jacobson提出),每种方法各有所长,但不同符号体系的使用给用户带来了混乱。 1994年Rumbaugh加入Booch所在的Rational公司,他们将Booch和OMT方法统一为UM0.8,后来Jacobson也加入到这一工作中,并于1996年6月和10月发布了UML0.9和UML0.91。到1996年年底
显示全部