好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件工程课件 第11章 面向对象设计.ppt

30页
  • 卖家[上传人]:清晨86****784
  • 文档编号:208796797
  • 上传时间:2021-11-08
  • 文档格式:PPT
  • 文档大小:701KB
  • / 30 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第 1 页 软件工程*第第1111章章 面向对象设计面向对象设计第 2 页 软件工程*教学目标教学目标 面向对象设计的准则面向对象设计的准则 启发准则启发准则 软件重用软件重用 系统分解系统分解 设计问题域子系统设计问题域子系统 设计人机交互子系统设计人机交互子系统 设计任务管理子系统设计任务管理子系统 设计数据管理子系统设计数据管理子系统 设计类中的服务设计类中的服务 设计关联及优化设计关联及优化第 3 页 软件工程*面向对象开发方法的组成 OOSD由三部分组成: OOA(Object-Oriented Analysis)面向对象的分析 OOD(Object-Oriented Design)面向对象的设计 OOP (Object-Oriented Program)面向对象程序设计OOAOOA强调的是对一个系统中的对象特征和行为的定义建立系统的三类模型OODOODOOD与OOA密切配合顺序实现对现实世界的进一步建模OOPOOPOOP是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码第 4 页 软件工程* 在需求分析的基础上,进一步解决“如何做做”的问题,OOD 法也分为概要设计和详细设计(但界限不是很清楚)。

      概要设计概要设计:细化对象行为,添加新对象,认定类,组类库,确定外部接口及主要数据结构详细设计:加细对象描述一、 面向对象设计的准则面向对象的设计面向对象的设计OOD(Object-Oriented Design)是是面向对象方法在软件设计阶段应用与扩展的结果面向对象方法在软件设计阶段应用与扩展的结果 是将是将OOAOOA所创建的分析模型转换为设计模型,解所创建的分析模型转换为设计模型,解决如何做的问题决如何做的问题OODOOD与与OOAOOA没有明显的分界,采用没有明显的分界,采用相同的符号相同的符号第 5 页 软件工程*1. OOD1. OOD步骤步骤 系统设计系统设计 将分析模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作 对象设计对象设计 为每个类的属性和操作进行详细设计,包括它们的数据结构和实现算法 消息设计消息设计 设计连接类与它的协作者之间的消息规约(specification of the messages) 复审复审第 6 页 软件工程*2.2.面向对象设计准则面向对象设计准则 模块化模块化 抽象抽象 规格说明抽象;参数化抽象 信息隐藏信息隐藏 弱耦合弱耦合 交互耦合;继承耦合 强内聚强内聚 服务内聚;类内聚;一般-特殊内聚 可重用可重用 类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(即协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类实例中包含的数据进行操作。

      使用者无须知道这些操作符的实现算法和类中数据元素的具体表示方法,就可以通过这些操作符使用类中定义的数据通常把这类抽象称为规格说明抽象 所谓参数化抽象,是指当描述类的规格说明时并不具体指定所要操作的数据类型,而是把数据类型作为参数这使得类的抽象程度更高,应用范围更广,可重用性更高例如,C+语言提供的“模板”机制就是一种参数化抽象机制第 7 页 软件工程 (1) 交互耦合 如果对象之间的耦合通过消息连接来实现,则这种耦合就是交互耦合为使交互耦合尽可能松散,应该遵守下述准则: 尽量降低消息连接的复杂程度应该尽量减少消息中包含的参数个数,降低参数的复杂程度 减少对象发送(或接收)的消息数 (2) 继承耦合 与交互耦合相反,应该提高继承耦合程度从本质上看,通过继承关系结合起来的基类和派生类,构成了系统中粒度更大的模块因此,它们彼此之间应该结合得越紧密越好为获得紧密的继承耦合,特殊类应该确实是对它的一般化类的一种具体化因此,如果一个派生类摒弃了它基类的许多属性,则它们之间是松耦合的在设计时应该使特殊类尽量多继承并使用其一般化类的属性和服务,从而更紧密地耦合到其一般化类第 8 页 软件工程内聚性分类:(1) 服务内聚。

      一个服务应该完成一个且仅完成一个功能2) 类内聚设计类的原则是,一个类应该只有一个用途,它的属性和服务应该是高内聚的类的属性和服务应该全都是完成该类对象的任务所必需的,其中不包含无用的属性或服务如果某个类有多个用途,通常应该把它分解成多个专用的类3) 一般-特殊内聚设计出的一般-特殊结构,应该符合多数人的概念,更准确地说,这种结构应该是对相应的领域知识的正确抽取第 9 页 软件工程*1.设计结果应该清晰易懂 (1)用词一致; (2)使用已有的协议; (3)避免模糊的定义2 2. .一般一般- -特殊结构的深度应适当特殊结构的深度应适当 类等级中包含的层次数适当,类等级中包含的层次数适当,7 7223 3. .设计简单的类设计简单的类4 4. .使用简单的协议使用简单的协议 消息中的参数一般最多不超过消息中的参数一般最多不超过3 3个个5 5. .使用简单的服务使用简单的服务6 6. .把设计变动减至最小把设计变动减至最小二、启发规则第 10 页 软件工程*三、软件重用软件重用就是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的 可复用的软件成分可复用构件(Reusable Component)可从旧软件中提取,也可以专门为复用而开发。

      软件复用不仅是对程序的复用,它包括对软件生产过程中任何活动所产生的制成品的复用如:项目计划、可行性报告、需求定义、分析模型、详细说明、源程序和测试用例等等1. 1. 软件重用的基本概念软件重用的基本概念第 11 页 软件工程*2、软件复用的级别代码的复用设计结果复用分析结果复用测试信息复用高高抽象程度低低包括目标代码,也包括文本形式的源代码受实际环境影响小,可复用机会多,所需修改少可被复用的分析结果是针对问题域的某些事物或某些问题的抽象程度更高的解法主要包括测试用例(test case)的复用和测试过程信息的复用第 12 页 软件工程*3. 类构件 一个软件只有在多个系统中被使用才可称为“可复用构件”,面向对象技术中的“类”,称为“类构件”,必须具备的条件: 1.独立性 解决一个相对独立的问题,或大问题中某个相对独立的部分;2.高度可塑性 必须提供为适应特定需求而扩充或修改已有构件的机制,而且所提供的机制使用起来要简单方便3. 通用性构件解决的问题,应在同类应用中具有一般性;4.适应性应用场合有某些变化时,构件仍是可用的,使构件的某些数据参数化和数据类型参数化;5.可靠性要求构件对预计将要使用它的系统是可靠的。

      第 13 页 软件工程* (1 1)实例重用实例重用类构件的重用方式 (2 2)继承重用)继承重用(3 3)多态重用)多态重用第 14 页 软件工程*复用级别越高,可得到的回报也越大,因此分析软件(Analysis Ware)和设计软件(Design Ware)的复用备受重视 4. 软件重用的效益软件复用的优点:软件复用的优点: (1)提高软件生产率,降低软件生产成本; (2)提高软件质量; (3)互操作性好; (4)推动标准化; (5)支持原型开发第 15 页 软件工程* 先把系统分解成若干个比较小的部分,然后再分别设计每个部分这样有利于降低设计难度、分工协作和理解维护四、系统分解 在划分和设计子系统时,应尽量减少子系统间的在划分和设计子系统时,应尽量减少子系统间的依赖性图图11.4 11.4 典型的面向对象设计模型典型的面向对象设计模型 把面向对象设计模型的把面向对象设计模型的4 4个组成部分看成整个模个组成部分看成整个模型的型的4 4个垂直切片:个垂直切片:第 16 页 软件工程* 1.子系统之间的2种交互方式(1 1)客户)客户- -供应商关系供应商关系客户子系统客户子系统1 1供应商子系统供应商子系统1 1供应商子系统供应商子系统N N(2 2)平等伙伴关系)平等伙伴关系供应商子系统无供应商子系统无须了解客户子系须了解客户子系统的接口。

      统的接口子系统子系统1 1子系统子系统n n子系统子系统N N子系统子系统mm每个子系统须每个子系统须了解其他子系了解其他子系统的接口统的接口第 17 页 软件工程*分层:将软件系统组织为层次结构,每层是一个子系统分层结构又分为封闭式和开放式分块:垂直分块是将系统分解为若干个相对独立的、弱耦合的子系统每个子系统相当于一个块,每块实现一类服务常常使用分层和分块的混合结构,如图所示:2.2.组织组织子系统的子系统的2 2种方案种方案 应应用程序包人机对话对话 控制窗口图图形仿真程序包屏幕图图形点阵图阵图 形操作系统统计计算机硬件第 18 页 软件工程*五、设计问题域子系统 所做的补充、修改有:所做的补充、修改有: 通过面向对象分析所得出的问题域精确模型,为设计通过面向对象分析所得出的问题域精确模型,为设计问题域子系统奠定了良好的基础,应该尽量保持面向对面向对象分析所建立的问题域结构象分析所建立的问题域结构 设计阶段只从实现角度对问题域模型进行补充或修改设计阶段只从实现角度对问题域模型进行补充或修改,从,从5 5个层次上着手当问题域过分庞大时,可进一步个层次上着手当问题域过分庞大时,可进一步分解。

      分解1. 1.调整需求调整需求2. 2.重用已有的类重用已有的类3. 3.把问题域类组合在一起:引入根类来把问题域把问题域类组合在一起:引入根类来把问题域类组合在一起类组合在一起4. 4.增添一般化类以建立协议:增加公共服务的类增添一般化类以建立协议:增加公共服务的类5. 5.调整继承层次调整继承层次第 19 页 软件工程*六、设计人机交互子系统 在面向对象分析过程中,已经对用户界面需求在面向对象分析过程中,已经对用户界面需求做了初步分析,在设计过程中是对系统的人机交互做了初步分析,在设计过程中是对系统的人机交互子系统进行详细设计,确定交互细节,其中包括子系统进行详细设计,确定交互细节,其中包括指指定窗口和报表的形式、设计命令层次等内容定窗口和报表的形式、设计命令层次等内容 第第6 6章曾介绍过人机界面设计所涉及的问题,章曾介绍过人机界面设计所涉及的问题,这里仅从面向对象设计的角度补充一些内容这里仅从面向对象设计的角度补充一些内容1. 1.用户分类:用户分类:(1 1)按技能水平)按技能水平 (2 2)按职务)按职务 (3 3)按所属集团(顾客、职员等)按所属集团(顾客、职员等)第 20 页 软件工程*2.2.描述用户描述用户 包括:用户类型;使用系统欲达到的目的;其特征包括:用户类型;使用系统欲达到的目的;其特征;爱好、习惯;技能水平;完成本职工作的脚本。

      爱好、习惯;技能水平;完成本职工作的脚本3.3.设计命令层设计命令层 (1 1)研究现有的人机交互含义和准则)研究现有的人机交互含义和准则 尽量遵从用户习惯的约定尽量遵从用户习惯的约定 (2 2)确定初始的命令层次)确定初始的命令层次 命令层次是用过程抽象机制组织起来的、可供选命令层次是用过程抽象机制组织起来的、可供选用的服务的表现形式用的服务的表现形式 (3 3)精化命令层次)精化命令层次 应考虑:次序、整体应考虑:次序、整体- -部分关系、宽度与深度、部分关系、宽度与深度、操作步骤操作步骤4.4.设计人机交互类设计人机交互类 第 21 页 软件工程*七、设计任务管理子系统1. 1.分析并发性分析并发性 从面向对象分析建立的动态模型出发,分析并从面向对象分析建立的动态模型出发,分析并发性通过检查各个对象的状态图及它们之间交换发性通过检查各个对象的状态图及它们之间交换的事件,把若干个非并发的对象归并到一条控制线的事件,把若干个非并发的对象归并到一条控制线中如果两个对象间不存在交互,或者它们同时接中如果两个对象间不存在交互,或者它们同时接受实践,则这两个对象是并发的受实践,则这两个对象是并发的。

      2. 2. 设计任务管理子系统。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.