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