已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象的开发方法,传统开发方法存在问题,1.软件重用性差 重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。软件重用性是软件工程追求的目标之一。 2.软件可维护性差 软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。 3.开发出的软件不能满足用户需要 用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。,面向对象的定义,面向对象是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,面向对象软件开发技术 面向对象分析(OOA) 面向对象设计(OOD) 面向对象实现(OOP),OOA - 面向对象分析,不论采用哪种方法开发软件,分析的过程都是提取系统需求的过程。 分析工作主要包括3项内容,这就是理解、表达和验证。 分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型和功能模型组成)。,面向对象分析(OOA)的关键: 识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。 在用面向对象观点建立起的3种模型中,对象模型是最基本、最重要、最核心的。,一、 面向对象分析的基本过程,面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。,三个模型、五个层次,3个模型:对象模型 (静态结构)、动态模型(交互次序)和功能模型(数据变换)。 复杂问题(大型系统)的对象模型由5个层次组成,三种模型之间的关系,三种模型分别从3个不同侧面描述了所要开发的系统。它们相互补充、相互配合,使得我们对系统的认识更加全面:功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体。 在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础。,OOA 过程,概念上:OOA大体上按照下列顺序进行:寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。 但,正如前面已经多次强调指出过的,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。通常,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解了整个问题,才能最终把模型建立起来。,二、需求陈述 需求陈述的内容包括:问题范围,功能需求,性能需求,应用环境及假设条件等。总之,需求陈述应该阐明“做什么”而不是“怎样做”。 书写需求陈述时,要尽力做到语法正确,而且应该慎重选用名词、动词、形容词和同义词。 需求陈述可简可繁。 反复迭代,逐步完整、准确、有效。,三、建立对象模型,获取客户对OO系统的需求 使用基本的需求作为指引来选择类和对象 为每个系统对象标识属性和操作 定义组织类的结构和层次 建造对象关系模型,1、确定类和对象,找出候选的类与对象 筛选出正确的类与对象,ATM系统,ATM系统候选类和对象: 银行,ATM,系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问。 冗余:用户、磁卡、副本-储户、现金兑换卡 无关:成本、市、街道、营业厅、储蓄所 笼统:银行、网络、系统、软件、信息、访问 属性:有些名词实际上描述的是其他对象的属性,应该把这些名词从候选类与对象中去掉。当然,如果某个性质具有很强的独立性,则应把它作为类而不是作为属性。 在ATM系统的例子中,“现金”、“支票”、“取款额”、“账单”、“余额”、“分行代码”、“卡号”、“密码”、“类型”等,实际上都应该作为属性对待。 操作、实现,2、确定关联,初步确定关联 筛选 进一步完善,ATM系统原始的类图,3、划分主题 4、确定属性(分析、选择) 5、识别继承关系 6、反复修改,修改后的A T M 对 象 模 型,四、建立动态模型,在开发交互式系统时,动态模型却起着很重要的作用。 第一步,是编写典型交互行为的脚本。虽然脚本中不可能包括每个偶然事件,但是,至少必须保证不遗漏常见的交互行为。 第二步,从脚本中提取出事件,确定触发每个事件的动作对象以及接受事件的目标对象。 第三步,排列事件发生的次序,确定每个对象可能有的状态及状态间的转换关系,并用状态图描绘它们。 最后,比较各个对象的状态图,检查它们之间的一致性,确保事件之间的匹配。,1、编写脚本,脚本:系统在某一执行期间内出现的一系列事件。脚本描述用户(或其他外部设备)与目标系统之间的一个或多个典型的交互过程,以便对目标系统的行为有更具体的认识。 编写脚本的目的:是保证不遗漏重要的交互步骤,它有助于确保整个交互过程的正确性的和清晰性。 编写脚本:首先编写正常情况的脚本。然后,考虑特殊情况,最后,考虑出错情况。,2、设想用户界面,界面对用户是否喜欢、是否接受一个系统起着很重要的作用。 界面中的信息交换方式是非常重要的。 设想用户界面的目的就是确保能够完成全部必要的信息交换,而不会丢失重要的信息。,3、画事件跟踪图/状态图,确定事件与状态 UML顺序图、活动图表示事件活动的过程 UML状态图表示事件与对象状态的关系,ATM取款类的状态图,ATM正常情况的事件顺序图,五、建立功能模型/定义服务,功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能。 建立功能模型:数据流图、UML的用例图 定义服务,OOD OO系统的设计,子系统设计,类及对象设计,消息设计,责任设计,OOD设计金字塔,OOD OO系统的设计,尽管分析和设计的定义有明显区别,但是在实际的软件开发过程中二者的界限是模糊的。许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。因此,分析和设计活动是一个多次反复迭代的过程。 面向对象方法学在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡,领域专家和开发人员能够比较容易地跟踪整个系统开发过程,这是面向对象方法与传统方法比较起来所具有的一大优势。,生命周期方法学把设计进一步划分成总体设计和详细设计两个阶段。 面向对象设计细分为系统设计和对象设计。 系统设计确定实现系统的策略和目标系统的高层结构。 对象设计确定解空间中的类、关联、接口形式及实现服务的算法。 系统设计与对象设计之间的界限,比分析与设计之间的界限更模糊。,OOD设计一般过程 以可实现的方式描述每个子系统 对象设计 消息设计 复审设计模型并在需要时迭代,分析,系统设计,对象设计,OOD设计准则,模块化 抽象 信息隐藏 弱耦合(减少交互耦合、增加继承耦合) 强内聚(服务内聚、类内聚、一般-特殊内聚) 可重用,OOD 系统设计过程,划分分析模型 并发性和子系统分配 任务管理构件 数据管理构件 资源管理构件 人机界面构件 子系统间通信,OOD 对象设计过程,对象描述 涉及算法和数据结构 程序构件和接口,OOP - 面向对象实现,面向对象实现(OOP),实现语言 基本实现手段 实现环境(类库、开发工具) 编码调试 测试,基本实现手段,类定义 对象创建 结构定义 实例关联定义 操作调用和消息发送 内存管理 封装 多态,小 结,近年来,面向对象方法学日益受到人们的重视,特别是在用这种方法开发大型软件产品时,可以把该产品看作是由一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农产品加工合作合同协议协议
- 古诗词的解读与欣赏
- 法学研究的前沿探索
- 地理学与实地漫步
- 2025年人工智能试题及答案详解
- 2025年科技小知识竞赛题库及答案
- 中级审计师2024年考试真题与答案解析上午场下午场
- 2025年继续教育公需课必修题库及参考答案
- 风电考试试题及答案
- 企业内部培训课程设计与安排
- 人教版本五年级语文上册《课内阅读》专项练习题(附答案)
- 鱼腥草的药理机制与临床应用研究
- 《建筑施工模板安全技术规范》JGJ162-2024解析
- 品牌设计师发展职业规划
- 《电力机车制动机》 课件 项目一 制动系统认知
- 马术俱乐部计划书
- 《中国语言文字》课件
- 《供应商质量会议》课件
- 《细胞因子`》课件
- 0和它的数字兄弟
- 【岩土工程施工技术实践实验报告2800字】
评论
0/150
提交评论