面向对象软件设计Java项目开发文档之一.ppt_第1页
面向对象软件设计Java项目开发文档之一.ppt_第2页
面向对象软件设计Java项目开发文档之一.ppt_第3页
面向对象软件设计Java项目开发文档之一.ppt_第4页
面向对象软件设计Java项目开发文档之一.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

面向对象软件设计思想 院校合作事业部培训部 前言 OO是 面向对象 的英文ObjectOriented的缩写 这个词在整个软件领域制造了一场深刻的变革 大大改变了传统的面向过程的软件分析和开发模式 面向对象是一种与语言无关的设计思想 符合人类自然的思考习惯来看待现实系统 面向对象的语言提供强大的面象对象的机制 支持对问题更高层次的抽象描述 使软件的设计和开发者可以更好的把握问题的本质 从而提高程序的开发质量和效率 目录 系统分析设计思想概述面向过程的结构化分析设计思想面向对象思想概述OO思想的本质是什么面向对象程序设计的方法优秀的系统设计追求的原则多层结构软件设计 系统分析设计思想概述 软件危机 让人们开始追求 高质量 高速度 的生产软件技术和管理手段是实现 两高 开发的必要手段一个完善的 成功的软件系统分析设计对于软件的质量 开发过程是至关重要的现代的软件分析设计方法 是与软件开发过程管理的思想相结合的 系统分析设计思想概述 回顾计算机工作原理 计算机的基本原理是存贮程序和程序控制 预先要把指挥计算机如何进行操作的指令序列 称为程序 和原始数据通过输入设备输送到计算机内存贮器中 每一条指令中明确规定了计算机从哪个地址取数 进行什么操作 然后送到什么地址去等步骤 系统分析设计思想概述 计算机在运行时 先从内存中取出第一条指令 通过控制器的译码 按指令的要求 从存贮器中取出数据进行指定的运算和逻辑操作等加工 然后再按地址把结果送到内存中去 接下来 再取出第二条指令 在控制器的指挥下完成规定操作 依此进行下去 直至遇到停止指令 程序与数据一样存贮 按程序编排的顺序 一步一步地取出指令 自动地完成指令规定的操作是计算机最基本的工作原理 系统分析设计思想概述 由计算机物理运行角度分析程序 程序 计算机硬件上运算的指令流和数据流CPU能够处理的只是数据CPU处理的方式都是在CPU指令集里定义好的物理计算机的工作就是处理数据 运算软件的本质分为两个独立部分 数据和指令数据在机器中是按一定规则排放的 数据结构指令是按照一定的顺序调用的 算法 系统分析设计思想概述 程序定义等式 程序 数据结构 算法理解算法 软件算法的含义是为解决一个问题而采取的有限的 可行的操作步骤 在计算机程序中 算法就是指令的有限集合广义上讲 一切的数据操作代码都是某种算法的实现 系统分析设计思想概述 理解数据结构 定义一 数据元素集合 也可称数据对象 中各元素的关系 定义二 相互之间存在特定关系的数据元素集合 数据结构是计算机存储 组织数据的方式 实际上是信息的一种表示协议 在信息和数据之间搭起了一座桥梁 用来在计算机中描述现实世界中的信息 系统分析设计思想概述 计算机解决一个具体问题步骤 首先要从具体问题中抽象出一个适当的数学模型然后设计一个解此数学模型的算法 Algorithm 最后编出程序 进行测试 调整直至得到最终答案寻求数学模型的实质是分析问题 从中提取操作的对象 并找出这些操作对象之间含有的关系 然后用数学的语言加以描述最终实现通过指令流 数据流实现现实系统的目的 系统分析设计思想概述 系统分析思想的发展 系统分析设计思想概述 对于计算机处理系统 数据结构和算法用来描述现实世界的过程 由此产生两类方法 侧重于算法实现的结构化设计和侧重于数据处理的面向数据的设计 两者在一开始建模的时候就出现了分离的数据和算法两者都是先有了数学变换的思想 再来映射现实世界的过程这两类方法都更加贴近计算机系统的执行方式 贴近数学世界的方式面向对象的思想则是一开始把大的系统分解为小的系统 而数据和指令在开始没有分离 结构化分析设计思想 结构化程序设计方法 是面向过程实现的 是计算机软件的传统分析设计方法 同时也是计算机硬件流程化信息处理模式的真实反映 特点 首先把系统的分析设计看做是一个自顶向下 逐步求精的过程其次是采用模块化的设计方式 把大的问题 分解为一个一个的功能单元 单元尽可能是单入口 单出口 同时尽可能地保证功能单元成为功能独立的软件模块 尽量减少副作用整个软件就是功能单元的顺次调用过程 结构化分析设计思想 优点 结构化设计方法的优点是高效率 直接面对问题 结构清晰 适宜构建已经分析的很清楚的 变动不多的或者变动已被很好预期的信息系统思想 结构化分析方法是真实反应计算机硬件流程化信息的 背后的思想是放大了物理的计算机 建立一台更贴近现实世界的 强大的 抽象的计算机 相当于为每一种实际系统制造了不同的计算机 结构化分析设计思想 示例 需求 实现一个邮件发送程序 邮件列表存在数据库里面 过程式的设计思路实现 先把邮件内容读入 然后连接数据库 读取显示邮件列表地址 选择邮件地址 最后调用本机的相应API函数命令发送邮件设计思路是一直基于计算机如何具体实现的思想上的 整体体现的就是站在计算机的角度处理问题的解决方法 结构化分析设计思想 主要缺点 过程式设计对于比较复杂的问题 或是在开发中需求变化比较多的时候 往往显得力不从心 这是因为过程式的设计是自上而下的 这要求设计者在一开始就要对需要解决的问题有清楚的了解和把握 在问题比较复杂的时候 要做到这一点会比较困难 而当开发中需求变化的时候 以前对问题的理解也许会变得不再适用 事实上 开发一个系统的过程往往也是一个对系统不断了解和学习的过程 而过程式的设计方法忽略了这一点 面向对象思想概述 面向对象的机制和思想是在结构化设计的基础上发展而来的 继承了面向结构开发的优点 支持新的编程机制 又在一定的方面扩展了自己的强大优势面向对象是基于分解而不是变换的方法 它的分析过程是把一个大系统分解为小系统的过程 将现实系统的过程抽象为计算机世界能处理的过程 数据结构和算法 的变换向后推迟 最终转换为对一系列相对简单的小的现实系统的变换 这就使系统分析设计的风险降低 并且风险也得到分散 面向对象思想概述 面向对象的系统分析设计方法简单来说就是 两高 即高效率和高质量的程序开发高效率和高质量的软件开发的直接矛盾 在软件重用上得到了统一的解决对于 高效率 的开发 面向对象的分析设计协助建立软件的重用机制 包括继承和对象重用 通过对需求的直接描述 提高开发效率 对于 高质量 的开发 面向对象的系统分析和设计可以改进需求分析 软件更接近实际需求 根本上 面向对象的方法支持在问题域直接建模和解决问题 使模型更接近问题 接近现实 OO思想的本质是什么 面向对象的思想核心两个字就可以概括 模拟面象对象提供的机制 本意就是支持我们更好地 更方便地模拟现实世界对现实系统越是完善的模拟 越是可以容易的 正确地反映现实系统 也就是说 我们的模型越接近现实系统 就越有可能正确 因此模拟的核心就是对这个系统结构的模拟对一个系统建模 如果模型越接近现实系统的结构 就越容易反映现实的系统 并且适应现实系统的变化 这种适应是至关重要的 因为系统总是不断变化的 进行系统建模 反映这种变化的能力是必需的 OO思想的本质是什么 任何一种软件设计方法 都是建立一种系统模型 通过这个模型来反映系统的有关信息的过程 其结果都是要完成一个映射 就是把系统的数据和操作分开的映射 这个映射是系统建模时最为核心的内容 所以进行这个分解是建模的最大挑战结构化设计在开始就要从纷繁复杂的现实系统里 提取数据和对数据的操作 也就是说 一开始就要进行关键的切分 对整个系统必须有完整的准确理解面向对象的方法 一再推迟这种关键切分 只是进行问题分解 直到问题很小了 才进行这步切分 这使得分析员不会过早的纠缠于细节 而是时时刻刻关注体系和结构 有利于作出良好的设计 面向对象程序设计的思维方法 如果说传统的面向过程的编程是符合机器运行指令的流程的话 那么面向对象的思维方法就是符合现实生活中人类解决问题的思维过程在面向对象的软件分析和设计的时候 要提醒自己 不要一上来就去想程序代码的实现 应该抛开具体编程语言的束缚 集中精力分析我们要实现的软件的业务逻辑 分析软件的业务流程 思考应该如何去描述和实现软件的业务 毕竟软件只是一个载体 业务才是我们真正要实现的目标 面向对象程序设计的思维方法 回过头看面向结构那个发邮件的例子 应该如何应用面向对象的思维方法呢 面象对象的设计思路实现 程序的功能应该有 读取邮件 发送邮件 读取邮件地址列表 操作的数据实体是 邮件 整体程序模型可以看做 一个邮件容器 可以发送不同的邮件 基于以上的模型 可以初步设计两个类 邮件容器类 EmailContainer 邮件类 EmailModel 面向对象程序设计的思维方法 EmailContainer类里包含的三个功能可以定义为三个方法 读邮件ReadEmail EmailModelmodel 发邮件SendEmail EmailModelmodel 读取邮件列表GetEmailList EmailModel类里包含三个属性 邮件头EmailHeader 邮件体EmailBody及邮件地址EmailAdress三个方法 检验邮件头CheckHeader 检验邮件体CheckBody 检验邮件地址EmailAdress 至此基本的业务模型出现了 初步模拟了邮件程序的现实结构 到此我们还未考虑应该如何具体的调用计算机指令处理数据如何具体实现 面向对象程序设计的思维方法 下面我们进一步精化软件的功能实现EmailContainer类里ReadEmail EmailModelmodel SendEmail EmailModelmodel 可以直接在方法体内实现代码了 而GetEmailList 方法要和数据库通信 因此对于此功能我们还要进一步的分解 再定义一个数据库处理类 DBControl 里面包含连接 处理数据的一系列方法 用来返回数据处理的相应数据至此我们的模型完全完成了 一共是三个类 每个类在语义上和功能上都是完全独立的最后我们就可以运用面向过程的思想 在每一个类里调用指令处理具体数据了 优秀的系统设计追求的原则 一个设计良好的系统应该是 稳定的 安全的 灵活的 可复用的基本原则一 类间的结构追求 高内聚 低耦合基本原则二 类的功能应该是单一的基本原则三 针对接口的编程而不是针对接口的实现 多层结构软件设计 分层的概念分层是一个在系统分析设计中经常被使用的思想 分层的核心还是模块化层次模型是系统设计架构级别的概念是和具体分析方法 实现语言无关的概念分层的思想由来已久 其核心是把系统进行分层 从而限制系统变化带来的影响 每一层可以单独的设计 单独的演变和升级 大大提高了系统的灵活和稳定性 可以应付更为广泛的需求变化 多层结构软件设计 分层的原则典型的层次模型是下层为上层提供全部服务调用关系是单向的 只有上层调用下层 不存在反向调用 同层之间的调用一般是允许的保证层间的完整性 层次模型间没有跨层的调用 就是完整的 存在跨层的调用 就是不完整的 多层结构软件设计 信息管理系统基本的层次模型 最基本的层次模型是3层模型 包含展示层 逻辑层和数据层 多层结构软件设计 常用多层结构的层次模型 多层结构软件设计 面向对象的设计层与层之间的常用连接方式层与层的模块之间的连接应遵循 高内聚 低耦合 的原则 保证层次间的独立性 采用 基于接口的编程 常用的方法是采用 工厂 设计模式实例理解 基于接口的编程 Application代表应用层的逻辑 DB代表了数据库访问的逻辑 在这个设计中 Application直接调用了DB的服务来将数据存储到数据库中 多层结构软件设计 这样做的缺点是Application对DB有了依赖关系 一旦DB有了任何变化 Application都有可能会受其影响需要改动 当然 如果只是两个类的话 这种依赖关系根本算不上什么问题 然而 我们有理由相信 应用层和存储层都会由不只一个类组成 并都有一定的复杂度 这时它们之间的这种依赖关系就会让人头痛了 当程序的模块越来越多 如果不限制它们之间的联系 那模块间的依赖 程序的复杂度和开发维护的难度都会成指数上升 多层结构软件设计 解决方法引入接口PersistenceDB实现了这个接口 DB实现了这个接口Application则调用Persistence中的服务来存储数据 两者都只依赖于PersistenceApplication到DB的依赖关系被Persistence这个接口切断 接口中只包含成员函数的声明在Persis

温馨提示

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

评论

0/150

提交评论