面向对象的软件设计方法_第1页
面向对象的软件设计方法_第2页
面向对象的软件设计方法_第3页
面向对象的软件设计方法_第4页
面向对象的软件设计方法_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、第第6 章章 面向对象的软件设计面向对象的软件设计 本章学习内容:本章学习内容:1 1理解面向对象软件设计的基本原理理解面向对象软件设计的基本原理2 2掌握系统设计的过程与方法掌握系统设计的过程与方法3 3掌握详细设计的内容与过程掌握详细设计的内容与过程4 4了解面向对象的实现技术了解面向对象的实现技术5 5了解面向对象测试的概念与方法了解面向对象测试的概念与方法第第6 章章 面向对象的软件设计面向对象的软件设计6.1 6.1 面向对象软件设计概述面向对象软件设计概述 6.1.1 6.1.1 面向对象设计准则面向对象设计准则 1.1. 模块化模块化2.2. 抽象抽象 3.3. 信息隐蔽信息隐蔽

2、 4.4. 低耦合低耦合 5.5. 高内聚高内聚 6.6. 可重用可重用 第第6 章章 面向对象的软件设计面向对象的软件设计6.1.2 6.1.2 面向对象设计的过程面向对象设计的过程 1 1系统设计系统设计 (1 1)首先进行系统架构设计,使系统具有良好的稳定)首先进行系统架构设计,使系统具有良好的稳定性、开放性和可扩充性性、开放性和可扩充性(2 2)如果系统复杂,应将系统划分为若干个子系统)如果系统复杂,应将系统划分为若干个子系统(3 3)给系统分配处理机和任务)给系统分配处理机和任务(4 4)根据数据结构、文件和数据库选择实现数据存储)根据数据结构、文件和数据库选择实现数据存储的基本策略

3、的基本策略(5 5)标识全局资源和确定控制访问这些资源的机制)标识全局资源和确定控制访问这些资源的机制(6 6)选择实现软件控制方法)选择实现软件控制方法(7 7)考虑边界条件)考虑边界条件(8 8)建立折衷的优先权)建立折衷的优先权第第6 章章 面向对象的软件设计面向对象的软件设计2 2详细设计详细设计 (1 1)细化、补充类的属性和操作)细化、补充类的属性和操作(2 2)设计类操作的实现算法)设计类操作的实现算法(3 3)优化数据访问路径)优化数据访问路径(4 4)实现外部交互式的控制)实现外部交互式的控制(5 5)调整类结构,增加继承性)调整类结构,增加继承性(6 6)设计类之间的关联的

4、实现方式)设计类之间的关联的实现方式(7 7)确定对象属性的精确表示)确定对象属性的精确表示(8 8)把类和关联打包归纳到模块中)把类和关联打包归纳到模块中 第第6 章章 面向对象的软件设计面向对象的软件设计6.2 6.2 系统设计系统设计 6.2.16.2.1逻辑体系架构设计逻辑体系架构设计1 1层次模式分析层次模式分析 (1 1)分层模式)分层模式 表示层:图形用户界面、窗口等。表示层:图形用户界面、窗口等。 应用逻辑层:管理业务过程的任务和规则。应用逻辑层:管理业务过程的任务和规则。 对象存储层:持久化存储机制,例如,文对象存储层:持久化存储机制,例如,文件系统、数据库等。件系统、数据库

5、等。 第第6 章章 面向对象的软件设计面向对象的软件设计(2 2)设计要求)设计要求 层与层之间的耦合应尽可能地松散;层与层之间的耦合应尽可能地松散; 级别相同、职责类似的元素应该被组织到同级别相同、职责类似的元素应该被组织到同一层中;一层中;复杂的模块应被继续分解为粒度更细的层或复杂的模块应被继续分解为粒度更细的层或子系统;子系统; 应尽量将可能发生变化的元素封装到一层中;应尽量将可能发生变化的元素封装到一层中;每一层应当只调用下一层提供的功能服务,每一层应当只调用下一层提供的功能服务,而不能跨层调用;而不能跨层调用;一层绝不能使用上一层提供的功能服务,即一层绝不能使用上一层提供的功能服务,

6、即不能在层与层之间造成双向依赖。不能在层与层之间造成双向依赖。第第6 章章 面向对象的软件设计面向对象的软件设计(3 3)避免循环依赖)避免循环依赖 AA1B1CBAACB第第6 章章 面向对象的软件设计面向对象的软件设计2 2子系统划分子系统划分 设计准则:设计准则: 子系统应具有良好的接口,通过接口和系统子系统应具有良好的接口,通过接口和系统的其他部分通信;的其他部分通信;除了少数的除了少数的“通信类通信类”外,子系统中的类应外,子系统中的类应只和该子系统中的其他类协作;只和该子系统中的其他类协作;子系统的数量不宜太多;子系统的数量不宜太多;可以在子系统内部再次划分,以降低复杂度。可以在子

7、系统内部再次划分,以降低复杂度。 第第6 章章 面向对象的软件设计面向对象的软件设计6.2.2 6.2.2 物理体系结构建模物理体系结构建模用构件图和部署图来描述系统的物理体系结构用构件图和部署图来描述系统的物理体系结构 1 1构件图构件图构件图就是描述构件类及其它们之间的关系。构件图就是描述构件类及其它们之间的关系。 (1 1)构件间的依赖关系:主要是依赖关系,用)构件间的依赖关系:主要是依赖关系,用来表示一个构件需要另一些构件才能有完整来表示一个构件需要另一些构件才能有完整的定义。的定义。(2 2)接口:是一个构件提供给其他构件的一组)接口:是一个构件提供给其他构件的一组操作操作 第第6

8、章章 面向对象的软件设计面向对象的软件设计例:例:第第6 章章 面向对象的软件设计面向对象的软件设计2 2部署图部署图 部署图描述了处理器、设备和软件构件运行时部署图描述了处理器、设备和软件构件运行时的体系结构。的体系结构。(1 1)结点:是某种计算资源的物理对象,包括计)结点:是某种计算资源的物理对象,包括计算机、设备(如打印机、通信设备)等算机、设备(如打印机、通信设备)等(2) (2) 连接:连接用一条直线表示,它指出结点之间连接:连接用一条直线表示,它指出结点之间存在着某种通信路径,并指出通过哪条通信路存在着某种通信路径,并指出通过哪条通信路径可使这些结点间交换对象或发送消息径可使这些

9、结点间交换对象或发送消息 第第6 章章 面向对象的软件设计面向对象的软件设计举例:举例:第第6 章章 面向对象的软件设计面向对象的软件设计6.3 6.3 详细设计详细设计 6.3.1 6.3.1 系统详细设计系统详细设计1 1细化和重组类细化和重组类2 2增加遗漏的属性,指定属性的类型和可见性增加遗漏的属性,指定属性的类型和可见性 3 3分配职责,定义执行每个职责的方法分配职责,定义执行每个职责的方法 通用职责分配软件模式通用职责分配软件模式 :(1)1)专家模式:应该将职责分配给信息专家专家模式:应该将职责分配给信息专家(2)创建者模式:如果类)创建者模式:如果类A A和类和类B B满足下列

10、条件中的一个,满足下列条件中的一个,就可以把创建就可以把创建B对象的职责分配给对象的职责分配给A对象对象 。A A聚合了聚合了B B对象;对象;A A包含了包含了B B对象;对象;第第6 章章 面向对象的软件设计面向对象的软件设计 A A的一个属性记录了的一个属性记录了B B对象;对象; A A要经常使用要经常使用B B对象对象 B B对象被创建时,对象被创建时,A A要传递初始化数据给要传递初始化数据给B B对象对象(3 3)低耦合)低耦合 (4 4)高内聚)高内聚 (5 5)控制者模式:要求把协调处理系统消息的)控制者模式:要求把协调处理系统消息的职责分配给不同的控制类职责分配给不同的控制

11、类(6 6)多态:当某一个职责在不同的派生类中表)多态:当某一个职责在不同的派生类中表现为不同的行为时,我们就可以使用多态模现为不同的行为时,我们就可以使用多态模式,即利用一个同名的多态方法把该职责分式,即利用一个同名的多态方法把该职责分配给不同的派生类,让他们履行不同的行为配给不同的派生类,让他们履行不同的行为 第第6 章章 面向对象的软件设计面向对象的软件设计(7 7)纯虚构模式:有时我们可以虚构一个人造类,)纯虚构模式:有时我们可以虚构一个人造类,把一组高度内聚的职责分配给它,该人造类只把一组高度内聚的职责分配给它,该人造类只是虚构出来的,不代表现实世界中的任何实体,是虚构出来的,不代表

12、现实世界中的任何实体,这就是纯虚构模式。这就是纯虚构模式。(8 8)中介者模式:把一些职责分配给一个虚构的)中介者模式:把一些职责分配给一个虚构的中介类,让该中介类来协调多个类的协作关系中介类,让该中介类来协调多个类的协作关系(9 9)不要和陌生人说话:这个模式要求一个类尽)不要和陌生人说话:这个模式要求一个类尽量只和它的直接对象交互,避免和间接对象进量只和它的直接对象交互,避免和间接对象进行交互,这样,它就可以和最少的类产生耦合,行交互,这样,它就可以和最少的类产生耦合,使整个系统的耦合度保持最低。使整个系统的耦合度保持最低。第第6 章章 面向对象的软件设计面向对象的软件设计6.4 6.4

13、面向对象软件实现面向对象软件实现 面向对象实现阶段的主要任务:面向对象实现阶段的主要任务:选择合适的面向对象的编程语言与开发环境;选择合适的面向对象的编程语言与开发环境;基于选定的语言和开发环境编码实现详细设基于选定的语言和开发环境编码实现详细设计中所得到的对象、算法、公式和规则等;计中所得到的对象、算法、公式和规则等;将编写好的各个类代码模块根据类的相互关将编写好的各个类代码模块根据类的相互关系集成;系集成;对软件进行测试和调试,完成各个部分和整对软件进行测试和调试,完成各个部分和整个系统。个系统。第第6 章章 面向对象的软件设计面向对象的软件设计6.4.16.4.1程序设计语言程序设计语言

14、 1 1面向对象语言的技术特点面向对象语言的技术特点(1 1)支持类与对象概念的机制)支持类与对象概念的机制 (2 2)实现整体部分结构的机制)实现整体部分结构的机制 (3 3)实现一般特殊结构的机制)实现一般特殊结构的机制 (4 4)对于实现属性和服务的机制)对于实现属性和服务的机制 (5 5)类型检查)类型检查 (6 6)类库)类库 第第6 章章 面向对象的软件设计面向对象的软件设计(7 7)效率)效率(8 8)持久保存对象)持久保存对象(9 9)参数化类)参数化类 (1010)开发环境)开发环境2 2面向对象语言的选择面向对象语言的选择 (1 1)可复用性)可复用性 (2 2)类库和开发

15、环境)类库和开发环境 (3 3)其他因素)其他因素 第第6 章章 面向对象的软件设计面向对象的软件设计6.4.2 6.4.2 程序设计风格程序设计风格 1 1提高可重用性提高可重用性 (1 1)提高方法的内聚)提高方法的内聚 (2 2)减小方法的规模)减小方法的规模 (3 3)保持方法的一致性)保持方法的一致性 (4 4)把策略与实现分开)把策略与实现分开 (5 5)全面覆盖)全面覆盖 (6) (6) 尽量不使用全局信息尽量不使用全局信息 (7 7)利用继承机制)利用继承机制 第第6 章章 面向对象的软件设计面向对象的软件设计2 2提高可扩充性提高可扩充性 (1 1)封装实现策略)封装实现策略

16、 (2 2)不要用一个方法遍历多条关联链)不要用一个方法遍历多条关联链 (3 3)避免使用多分支语句)避免使用多分支语句 (4 4)精心确定公有方法)精心确定公有方法 3 3提高健壮性提高健壮性 (1 1)预防用户的操作错误)预防用户的操作错误 (2 2)检查参数的合法性)检查参数的合法性 (3 3)不要预先确定限制条件)不要预先确定限制条件 (4 4)先测试后优化)先测试后优化 第第6 章章 面向对象的软件设计面向对象的软件设计6.4.3 6.4.3 面向对象软件测试面向对象软件测试 1 1面向对象的单元测试面向对象的单元测试 (1 1)类层测试)类层测试 (2 2)对象集群层测试)对象集群

17、层测试 2 2面向对象的集成测试面向对象的集成测试 (1 1)基于线程的测试)基于线程的测试 (2 2)基于使用的测试)基于使用的测试 3 3面向对象软件的高级测试面向对象软件的高级测试 第第6 章章 面向对象的软件设计面向对象的软件设计4 4面向对象软件测试用例面向对象软件测试用例 (1)基于故障的测试用例设计是通过对面向对)基于故障的测试用例设计是通过对面向对象分析与设计模型的分析,找出可能存在的象分析与设计模型的分析,找出可能存在的故障,以此假设故障来设计测试用例,并通故障,以此假设故障来设计测试用例,并通过这些测试用例确定这些可能的故障是否存过这些测试用例确定这些可能的故障是否存在。基于故障的测试用例不能发现有错误的在。基于故障的测试用例不能发现有错误的功能描述,或者子系统间交互引起的问题。功能描述,或者子系统间交互引起的问题。(2 2)基于用例的测试用例设计关注用户)基于用例的测试用例设计关注用户“做什做什么么”而不是软件而不是软件“做什么做什么”。通过测试用例。通过测试用例获得用户必须完成的任务,并以此为依据设获得用户必须完成的任务,并以此为依据设计所涉及的各个类的测试用例。计所涉及的各个类的测试用例。 第第6 章章 面向对象的软件设计面向对象的软件设计设计面向对象软件测试用例的步骤是:设计面向对象

温馨提示

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

评论

0/150

提交评论