第章面向对象的设计方法PPT课件.ppt_第1页
第章面向对象的设计方法PPT课件.ppt_第2页
第章面向对象的设计方法PPT课件.ppt_第3页
第章面向对象的设计方法PPT课件.ppt_第4页
第章面向对象的设计方法PPT课件.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

第五章 面向对象的设计方法 面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的Simula67语言中 随着的Smalltalk 76和80语言推出 面向对象的的程序设计方法得到了比较完善的实现 此后 面向对象的概念和应用已超越了程序设计和软件开发 扩展到如数据库系统 交互式界面 分布式系统 网络管理结构和人工智能等领域 面向对象的技术已成为软件开发的一种新方法 新技术 5 1面向对象的基本概念 5 1 1什么是面向对象的开发方法OOSD Object OrientedSoftwareDevelopment 法是一种把面向对象的思想应用于软件开发过程 指导开发活动的系统方法 问题空间 软件系统所涉及到的应用领域和业务范围 现实世界 解空间 用于解决某些问题的软件系统 一 软件开发过程 问题空间 现实世界 解空间 软件系统 映射 二 传统软件开发方法存在的问题 1 传统软件开发方法无法实现从问题空间到解空间的直接映射 问题空间 现实世界 解空间 软件系统 复杂映射 2 传统软件开发方法无法实现高效的软件复用 原因是 传统软件开发方法数据与代码 操作 分离 3 传统软件开发方法难以实现从分析到设计的直接过渡 复杂转换 分析文档 DFD 设计文档 SC 三 面向对象技术的特点1 对软件开发过程所有阶段进行综合考虑 使问题空间与解空间具有一致性 降低复杂性 2 软件生存期各阶段所使用的方法 技术具有高度的连续性 用符合人类认识世界的思维方式来分析 解决问题 3 将OOA OOD OOP有机地集成在一起 有利于系统的稳定性 OOA Object OrientedAnalysis OOD Object OrientedDesign OOP Object OrientedProgram 以对象为中心各种构造系统 而不是以功能为中心 能很好地适应需求变化 4 具有良好的可重用性由于对象所具有的封装性和信息隐蔽 具有很强的独立性 理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的 5 1 2面向对象的基本概念 1 对象 Object 对象 Object 是客观事物或概念的抽象表述 即对客观存在的事物的描述统称为对象 对象可以是事 物 或抽象概念 是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体 属性 attribute 对象本身的性质 操作 operation 给对象定义一组运算 对象将它自身的属性及运算 包装起来 称为 封装 encapsulation 对象的最基本的特征是封装性和继承性 2 类 Class 类又称对象类 ObjectClass 是一组具有相同属性和相同操作的对象的集合 在一个类中 每个对象都是类的实例 instance 它们都可以使用类中提供的函数 类具有属性 用数据结构来描述类的属性 类具有操作 它是对象的行为的抽象 操作实现的过程称为方法 method 方法有方法名 方法体和参数 由于对象是类的实例 在进行分析和设计时 通常把注意力集中在类上 而不是具体的对象上 图5 1对象类的描述 对象和类的描述类和对象一般采用 名字 属性 和 运算 来描述 对象 类 3 继承 Inheritance 继承是使用现存的定义作为基础 建立新定义的技术 是父类和子类之间共享数据结构和方法的机制 这是类之间的一种关系 继承性分 单重继承 一个子类只有一个父类 即子类只继承一个父类的数据结构和方法 多重继承 一个子类可有多个父类 继承多个父类的数据结构和方法 现存类定义父类 基类 新类定义子类 派生类 继承 图5 3继承性 4 消息 Message 消息就是向对象发出的服务请求 互相联系 协同工作等 对象之间的联系可表示为对象间的消息传递 即对象间的通讯机制 一个消息应该包含以下信息 消息名 接收消息对象的标识 服务标识 消息和方法 输入信息 回答信息 在对象的操作中当一个消息发送给某个对象时 消息包含接收对象去执行某种操作的消息 5 多态性和动态绑定多态性 Polymorphism 是指相同的操作或函数 过程作用于不同的对象上并获得不同的结果 即相同的操作的消息发送给不同的对象时 每个对象将根据自己所属类中定义的操作去执行 产生不同的结果 例如 绘图 操作 作用在 椭圆 和 矩形 上 画出不同的图形 动态绑定 dynamicbinding 是在运行时根据对象接收的消息动态地确定要连接的服务代码 使用虚函数可实现动态联编 不同联编可以选择不同的实现 这便是多态性 继承是动态联编的基础 虚函数是动态联编的关键 多态性的实现举例 实现多态性的基本步骤 以VC为例 1 在基类中 定义成员函数为虚函数 virtual 2 定义基类的公有 public 派生类 3 在基类的公有派生类中 重载 该虚函数 4 定义指向基类的指针变量 它指向基类的公有派生类的对象 注意 重载虚函数不是一般的重载函数 它要求函数名 返回类型 参数个数 参数类型和顺序完全相同 例如 下面是实现 多态性 的一个例子 includeclassfigure 定义基类 protected doublex y public voidset dim doublei doublej 0 x i y j virtualvoidshow area 定义虚函数 cout Noareacomputationdefine cout forthisclass n 1 在基类中 将成员函数说明为虚函数 virtual classtriangle publicfigure 2 定义基类的公有派生类 public virtualvoidshow area 3 重载 该虚函数 求三角形面积 classsquare publicfigure 2 定义基类的公有派生类 public virtualvoidshow area 3 重载 该虚函数 求矩形面积 classcircle publicfigure 2 定义基类的公有派生类 public virtualvoidshow area 3 重载 该虚函数 求园面积 p 4 运行过程中实现 动态绑定 6 永久对象 Persistentobject 所谓永久对象是指生存期可以超越程序的执行时间而长期存在的对象 目前 大多数OOPL不支持永久对象 如果一个对象要长期保存 必须依靠于文件系统或数据库管理系统实现 程序员需要作对象与文件系统或数据库之间数据格式的转换 以及保存和恢复所需的操作等烦琐的工作 为了实现永久对象 使上述烦琐工作由系统自动完成 需要较强的技术支持 需要一个基于永久对象管理系统OMS objectmanagementsystem 能够描述和处理永久对象的编程语言 5 3面向对象的分析 面向对象分析OOA Object OrientedAnalysis 的目标是完成对所求解问题的分析 确定系统 作什么 并建立系统的模型 基本概念 问题域 problemdomain 被开发系统的应用领域 系统责任 systemresponsibilities 所开发的系统应具备的职能 5 3 1面向对象分析的特点 一 需求中存在的问题1 确定问题域和系统责任困难2 充分交流的问题解决得不好3 很难适应需求的不断变化4 难以满足复用要求 二 OOA的特点1 有利于对问题及系统责任的理解 2 有利于人员之间的交流 3 对需求变化有较强的适应性 4 支持软件复用 运用面向对象的方法 对问题域和系统责任进行分析和理解 建立分析模型 1 分析问题域 确定类和对象 2 定义类或对象属性和操作 确定其结构 3 建立系统中类或对象之间的静态联系和动态联系 5 3 2OOA的基本任务 5 3 3OOA的分析过程 图5 7OOA分析过程 5 3 4OOA模型 图5 8OOA模型与详细说明 基本模型是一个类图 classdiagram 是以直观的方式表达系统最重要的信息 OOA基本模型的三个层次分别描述了 系统中应设哪几类对象 每类对象的内部构成 对象与外部的关系 5 3 4OOA模型 主题 subject 又称为子系统 subsystem 是将一些联系密切的类组织在一起的类的集合 按照粒度控制原则 将系统组成几个主题 便于理解 5 3 4OOA模型 交互图 interactiondiagram 是Usecase与系统成分之间的对照图 主题图和交互图又称为补充模型 5 3 4OOA模型 详细说明按照分析方法所要求的格式 对分析模型进行说明和解释 主要以文字为主 面向对象的设计OOD Object OrientedDesign 是面向对象方法在软件设计阶段应用与扩展的结果 是将OOA所创建的分析模型转换为设计模型 解决如何作的问题 OOD与OOA没有明显的分界 采用相同的符号 5 4面向对象的设计 5 4 1OOD基本任务1 系统设计将分析模型划分为若干子系统 子系统应该具有良好的接口 子系统内的类相互协作 标识问题本身的并发性 为子系统分配处理器 子系统的分解是关键 可以有分层和分块 分层 将软件系统组织为层次结构 每层是一个子系统 分层结构又分为封闭式和开放式 分块 垂直分块是将系统分解为若干个相对独立的 弱耦合的子系统 每个子系统相当于一个块 每块实现一类服务 常常使用分层和分块的混合结构 如图所示 5 4 1OOD基本任务2 对象设计在面向对象的系统中 模块 数据结构及接口等都集中体现在对象和对象层次结构中 对象设计是为每个类的属性和操作进行详细设计 包括属性和操作 它们的数据结构和实现算法 3 消息设计设计连接类与它的协作者之间的消息规约 specificationofthemessages 4 优化及复审主要考虑提高效率和建立良好的继承结构 5 4 2OOD模型 面向对象设计准则 1 模块化2 抽象3 信息隐藏4 弱耦合5 强内聚6 可重用 介绍几种典型的面向对象的开发方法 Coda方法 Booch方法和OMT方法 随着面向对象开发方法的发展 逐渐形成了几种主要的流派 Coda方法Booch方法OMT方法OOSE方法 5 5几种典型的面向对象的方法 一 Coda Yourdon方法 由OOA OOD构成建立问题域的分析模型 该模型由5个层次组成 即主题层 对象层 结构层 属性层和服务层 要建立4个组元的设计模型 问题域组元 人机交互组元 任务管理组元和数据管理组元 该方法的特点是 简单 易学 对于对象 结构 服务的认定较系统 完整 可操作性强 5 5几种典型的面向对象的方法 1 Coda方法的OOA 在Coda方法中 构造和评审OOA概念模型的顺序由五个层次组成 类与对象 属性 服务 结构和主题这五个层次表示分析的不同侧面 2 Coda方法的OOD Coad方法的OOD模型是在OOA模型5个层次基础上 建立系统的4类组元 PDC问题域组元 HIC人机界面组元 TMC任务管理组元 DMC数据管理组元 图5 12CodaOOD模型 1 设计问题域组元 problemdomaincomponent 2 设计人机界面组元 humaninteractioncomponent 3 设计任务管理组元 taskmanagementcomponent 4 设计数据管理组元 datamanagementcomponent Booch方法的开发模型包括静态模型和动态模型 静态模型分为逻辑模型和物理模型 描述了系统的构成和结构 动态模型分为状态图和时序图 该方法对每一步都作了详细的描述 描述手段丰富 灵活 不仅建立了开发方法 还提出了设计人员的技术要求 不同开发阶段的资源人力配制 二 Booch方法 1 Booch方法的基本模型 类图 对象图由对象和消息组成 对象图 图5 16温室管理系统的对象图 图5 15对象图的表示 状态图 图5 18环境控制器类的状态图 图5 17状态图的表示 时序图 模块图 进程图 图5 20温室管理系统的模块图 图5 21温室管理系统的进程图 面向对象的方法学又称为对象模型技术 OMT ObjectModelTechnology 是一种软件工程方法学 支持整个软件生存周期 它覆盖了问题构成 分析 设计和实现等阶段 OMT方法使用了建模的思想 讨论如何建立一个实际的应用模型 从3个不同而又相关的角度建立了三类模型 对象模型 动态模型和函数模型 OMT为每一个模型提供了图形表示 三 面向对象的建模技术 OMT 1 对象模型技术的基本概念 OMT方法讨论的核心就是建立三类模型 对象模型描述了由对象和相应实体构成的系统静态结构 描述了系统中对象的标识 属性 操作及对象的相互关系 动态模型根据事件和状态描述了系统的控制结构 系统中与时间和操作顺序有关的内容 函数模型着重描述系统中与值的转换有关的问题 如函数 映射 约束和函数作用等 三类模型描述的角度不同 却又相互联系 2 建立对象模型 对象模型描述了系统的静态结构 构成对象模型的基本元素有 对象 类 它们之间的关系 对象名 类名 类之间 对象之间的关系 关联与链 二元关联 三元关联 受限关联 用重数 链属性和角色进一步描述 继承性 Inheritance 继承性通常又称为概括 表示基类与子类的关系 聚集表整体与部分的关系 银行网络系统ATM AutoTradeMachine 银行网络系统包括人工出纳和分行共享的自动出纳机 问题的陈述 采用OMT方法对银行网络系统ATM AutoTradeMachine 进行分析和设计 银行网络系统包括人工出纳和分行共享的自动出纳机 各分理处用自己的计算机处理业务 保存帐户 处理事务等 各分理处与出纳站通过网络通信 出纳站录入帐户和事务数据 自动出纳机与分行计算机通信 自动出纳机与用户接口 接受现金卡 发放现金 打印收据 分行计算机与拨款分理处结帐 要求系统正确处理同一帐户的并发访问 网络费用平均摊派给各分理处 图 给出了银行网络系统的示意图 对象模型 3 建立动态模型 动态模型着重于系统的逻辑结构 描述某时刻对象及其联系的改变 包括状态图和事件追综图 一 事件和状态状态 对象所具有的属性值 具有时间性和持续性 事件 对于对象的触发行为 指从一个对象到另一个对象的信息的单向传递 脚本 在系统的某一执行期间内的一系列事件 在系统中具有属性值 链路的对象 可能相互激发 引起状态的一系列变化 有的事件传递的是简单信号 有的事件则传递的是数据值 由事件传送的数据值称为 属性 状态图 状态图是一个状态和事件的网络 侧重于描述每一类对象的动态行为 状态的迁移 状态A活动 状态B 状态A 操作 事件B 条件 起始状态 终结状态 状态图 动态模型由多个状态图组成 每个有重要行为的类都有一个状态图 各状态图可并发地执行及独立改变状态 图例状态状态迁移 状态 打电话状态图 图5 39打电话状态图 事件追踪图 事件追踪图侧重描述系统执行过程中的一个特定的 场景 Scenarios 场景有时也叫 脚本 是完成系统某个功能的一个事件序列 即是描述多个对象的集体行为 脚本 系统某一次特定运行时期内发生的事件序列 例如 打电话的场景 1 拿起电话受话器12 打电话者听见振铃声2 电话忙音开始13 对方接电话3 拨电话号码数512 接话方停止振铃4 电话忙音结束14 打电话方停止振铃声5 拨电话号码数515 通电话6 拨电话号码数516 对方挂电话7 拨电话号码数117 电话切断8 拨电话号码数218 打电话者挂电话 11 对方电话开始振铃 打电话的事件追踪图 打电话者电话线接电话者 拿起接收器拨号

温馨提示

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

评论

0/150

提交评论