当前位置:
文档之家› 3-面向对象软件开发技术(OOA-OOD-OOP)
3-面向对象软件开发技术(OOA-OOD-OOP)
2、设想用户界面
界面对用户是否喜欢、是否接受一个系统起着很 重要的作用。 界面中的信息交换方式是非常重要的。 设想用户界面的目的就是确保能够完成全部必要 的信息交换,而不会丢失重要的信息。
3、画事件跟踪图/状态图 画事件跟踪图/ 确定事件与状态 UML顺序图、活动图表示事件活动的过程 UML状态图表示事件与对象状态的关系
OOA 过程
概念上:OOA大体上按照下列顺序进行: 概念上:OOA大体上按照下列顺序进行:寻找类 大体上按照下列顺序进行 与对象,识别结构,识别主题,定义属性, 与对象,识别结构,识别主题,定义属性,建立 动态模型,建立功能模型,定义服务。 动态模型,建立功能模型,定义服务。 但,正如前面已经多次强调指出过的,分析不可 正如前面已经多次强调指出过的, 能严格地按照预定顺序进行,大型、 能严格地按照预定顺序进行,大型、复杂系统的 模型需要反复构造多遍才能建成。通常, 反复构造多遍才能建成 模型需要反复构造多遍才能建成。通常,先构造 出模型的子集,然后再逐渐扩充,直到完全、充 出模型的子集,然后再逐渐扩充,直到完全、 分地理解了整个问题,才能最终把模型建立起来。 分地理解了整个问题,才能最终把模型建立起来。
三、建立对象模型 获取客户对OO系统的需求 获取客户对OO系统的需求 OO 使用基本的需求作为指引来选择类和对象 为每个系统对象标识属性和操作 定义组织类的结构和层次 建造对象—关系模型 建造对象 关系模型
1、确定类和对象 找出候选的类与对象
筛选出正确的类与对象
ATM系统
ATM系统候选类和对象:
OOA --- 面向对象分析
不论采用哪种方法开发软件, 不论采用哪种方法开发软件,分析的过程都是提 取系统需求的过程。 取系统需求的过程。 分析工作主要包括3项内容,这就是理解、表达和 分析工作主要包括 项内容,这就是理解、 项内容 理解 验证。 验证。 分析过程得出的最重要的文档资料是软件需求规 格说明(在面向对象分析中,主要由对象模型、 格说明 在面向对象分析中,主要由对象模型、动 在面向对象分析中 态模型和功能模型组成)。 态模型和功能模型组成 。
OOD设计金字塔 设计金字塔
OOD — OO系统的设计
尽管分析和设计的定义有明显区别,但是在实 际的软件开发过程中二者的界限是模糊的。许 多分析结果可以直接映射成设计结果,而在设 计过程中又往往会加深和补充对系统需求的理 解,从而进一步完善分析结果。因此,分析和 设计活动是一个多次反复迭代的过程。 面向对象方法学在概念和表示方法上的一致性, 保证了在各项开发活动之间的平滑(无缝)过渡, 领域专家和开发人员能够比较容易地跟踪整个 系统开发过程,这是面向对象方法与传统方法 比较起来所具有的一大优势。
把这些名词从候选类与对象中去掉。当然,如果某个性质 具有很强的独立性,则应把它作为类而不是作为属性。
在ATM系统的例子中,“现金”、“支票”、“取款额”、“账单”、 “余额”、“分行代码”、“卡号”、“密码”、“类型”等,实际 上都应该作为属性对待。
操作、实现……
2、确定关联
初步确定关联 筛选 进一步完善 实例 p238-246
面向对象分析(OOA)的关键: 识别出问题域内 面向对象分析(OOA)的关键: (OOA)的关键 的类与对象,并分析它们相互间的关系, 的类与对象,并分析它们相互间的关系,最终 建立起问题域的简洁、精确、 建立起问题域的简洁、精确、可理解的正确模 型。 在用面向对象观点建立起的3种模型中, 在用面向对象观点建立起的3种模型中,对象 模型是最基本、最重要、最核心的。 模型是最基本、最重要、最核心的。
一、 面向对象分析的基本过程
面向对象分析, 面向对象分析,就是抽取和整理用户 需求并建立问题域精确模型的过程。 需求并建立问题域精确模型的过程。
三个模型、 三个模型、五个层次
静态结构) 动态模型( 3个模型:对象模型 (静态结构)、动态模型(交互次 个模型: 序)和功能模型(数据变换)。 功能模型(数据变换) 复杂问题(大型系统)的对象模型由5个层次组成 复杂问题(大型系统)的对象模型由5
以可实现的方式描述每个子系统 对象设计 消息设计 复审设计模型并在需要时迭代
对象设计 分析
系统设计
OOD设计准则 OOD设计准则
模块化 抽象 信息隐藏 弱耦合(减少交互耦合、增加继承耦合) 强内聚(服务内聚、类内聚、一般-特殊内聚) 可重用
OOD — 系统设计过程
划分分析模型 并发性和子系统分配 任务管理构件 数据管理构件 资源管理构件 人机界面构件 子系统间通信
ATM正常情况的事件顺序图 正常情况的事件顺序图
ATM取款类的状态图 取款类的状态图
五、建立功能模型/定义服务 建立功能模型/
功能模型表明了系统中数据之间的依赖关系, 以及有关的数据处理功能。 建立功能模型:数据流图、UML的用例图 定义服务
OOD— OO系统的设计 系统的设计
责任设计 消息设计 类及对象设计 子系统设计
OOD — 对象设计过程 对象描述 涉及算法和数据结构 程序构件和接口
---- 面向对象实现
面向对象实现(OOP) 面向对象实现(OOP)
实现语言 基本实现手段 实现环境(类库、开发工具) 编码调试 测试
基本实现手段
类定义 对象创建 结构定义 实例关联定义 操作调用和消息发送 内存管理 封装 多态
面向对象的概念和原则
Introduction to Object Technology Concepts of Object Orientation 标识对象模型元素
面向对象软件开发技术
面向对象分析(OOA) 面向对象设计(OOD) 面向对象实现(OOP)
OOA/D中最关键、最基本的能力是熟练地 为软件组织分配职责。 OOA OOA强调在问题领域内发现和描述对象或 概念,而不是解决方案 。(做正确的事) OOD强调的是定义软件对象和这些软件对 象如何协作来满足需求。(正确地做事)
小 结
近年来,面向对象方法学日益受到人们的重视, 近年来,面向对象方法学日益受到人们的重视,特 别是在用这种方法开发大型软件产品时, 别是在用这种方法开发大型软件产品时,可以把该 产品看作是由一系列本质上相互独立的小产品组成, 产品看作是由一系列本质上相互独立的小产品组成, 这就不仅降低了开发工作的技术难度, 这就不仅降低了开发工作的技术难度,而且也使得 对开发工作的管理变得比较容易了。 对开发工作的管理变得比较容易了。 使用面向对象范型能够开发出稳定性好、 使用面向对象范型能够开发出稳定性好、可重用性 好和可维护性好的软件。 好和可维护性好的软件。 UML是基于面向对象技术的标准建模语言 通常, 是基于面向对象技术的标准建模语言。 UML是基于面向对象技术的标准建模语言。通常, 使用UML的类图来建立对象模型,使用UML UML的类图来建立对象模型 UML的状态 使用UML的类图来建立对象模型,使用UML的状态 图来建立动态模型,使用数据流图或UML UML的用例图 图来建立动态模型,使用数据流图或UML的用例图 来建立功能模型。 来建立功能模型。
ATM系统原始的类图 系统原始的类图
3、划分主题 4、确定属性(分析、选择) 确定属性(分析、选择) 5、识别继承关系 6、反复修改
修 改 后 的 A T M 对 象 模 型
四、建立动态模型
在开发交互式系统时,动态模型却起着很重要的 作用。 第一步,是编写典型交互行为的脚本。虽然脚本 中不可能包括每个偶然事件,但是,至少必须保 证不遗漏常见的交互行为。 第二步,从脚本中提取出事件,确定触发每个事 件的动作对象以及接受事件的目标对象。 第三步,排列事件发生的次序,确定每个对象可 能有的状态及状态间的转换关系,并用状态图描 绘它们。 最后,比较各个对象的状态图,检查它们之间的 一致性,确保事件之间的匹配。
银行,ATM,系统,中央计算机,分行计算机,柜员终端,网络,总 行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户, 现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡 号,用户,副本,信息,密码,类型,取款额,账单,访问。
冗余:用户、磁卡、副本----储户、现金兑换卡 无关:成本、市、街道、营业厅、储蓄所 笼统:银行、网络、系统、软件、信息、访问 属性:有些名词实际上描述的是其他对象的属性,应该
1、编写脚本
脚本:系统在某一执行期间内出现的一系列事件。 脚本描述用户(或其他外部设备)与目标系统之间 的一个或多个典型的交互过程,以便对目标系统 的行为有更具体的认识。 编写脚本的目的:是保证不遗漏重要的交互步骤, 它有助于确保整个交互过程的正确性的和清晰性。 编写脚本:首先编写正常情况的脚本。然后,考 虑特殊情况,最后,考虑出错情况。
三种模型之间的关系
三种模型分别从3个不同侧面描述了所要开发的系 统。它们相互补充、相互配合,使得我们对系统 的认识更加全面:功能模型指明了系统应该“做 什么”;动态模型明确规定了什么时候(即在何种 状态下接受了什么事件的触发)做;对象模型则定 义了做事情的实体。 在面向对象方法学中,对象模型是最基本最重要 的,它为其他两种模型奠定了基础。
二、需求陈述
需求陈述的内容包括:问题范围,功能需求, 需求陈述的内容包括:问题范围,功能需求,性 能需求,应用环境及假设条件等。总之, 能需求,应用环境及假设条件等。总之,需求陈 述应该阐明“做什么”而不是“怎样做” 述应该阐明“做什么”而不是“怎样做”。 书写需求陈述时,要尽力做到语法正确, 书写需求陈述时,要尽力做到语法正确,而且应 该慎重选用名词、动词、形容词和同义词。 该慎重选用名词、动词、形容词和同义词。 需求陈述可简可繁。 需求陈述可简可繁。 反复迭代,逐步完整、准确、有效。 反复迭代,逐步完整、准确、有效。
生命周期方法学把设计进一步划分成总体设计和 详细设计两个阶段。 面向对象设计细分为系统设计和对象设计。 系统设计确定实现系统的策略和目标系统的高层 结构。 对象设计确定解空间中的类、关联、接口形式及 实现服务的算法。 系统设计与对象设计之间的界限,比分析与设计 之间的界限更模糊。