1、1 第11章 面向对象设计 分析是提取和整理用户需求,并建立问分析是提取和整理用户需求,并建立问题域精确模型的过程。设计则是把分析阶段题域精确模型的过程。设计则是把分析阶段得到的需求转变成符合成本和质量要求的、得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。抽象的系统实现方案的过程。从面向对象分析(从面向对象分析(OOA)到面向对象)到面向对象设计(设计(OOD)是一个逐渐扩充模型的过程。)是一个逐渐扩充模型的过程。211.1 面向对象设计的准则面向对象设计的准则 1 模块化模块化 对象就是模块,它是把数据结构和操作这些数据的方法紧密结合在一起对象就是模块,它是把数据结构和操作
2、这些数据的方法紧密结合在一起所构成的模块。所构成的模块。2 抽象抽象 不仅支持过程抽象,还支持数据抽象。不仅支持过程抽象,还支持数据抽象。3 信息隐藏信息隐藏通过对对象的封装性实现通过对对象的封装性实现 4 弱耦合弱耦合不同对象间相互关联的紧密程度。不同对象间相互关联的紧密程度。交互耦合(对象间通过消息连接实现耦合)交互耦合(对象间通过消息连接实现耦合)继承耦合(一般化类与特殊类之间耦合的一种形式)继承耦合(一般化类与特殊类之间耦合的一种形式)5 强内聚强内聚(服务内聚、类内聚、一般(服务内聚、类内聚、一般-特殊内聚)特殊内聚)6 可重用可重用 3 11.2 启发规则启发规则1 设计结果应该清
3、晰易懂设计结果应该清晰易懂 使设计结果清晰、易读、易懂,是使设计结果清晰、易读、易懂,是提高软件可维护性和可重用性的重要措提高软件可维护性和可重用性的重要措施。施。用词一致用词一致使用已有的协议使用已有的协议减少消息模式的数目减少消息模式的数目避免模糊的定义避免模糊的定义42 一般一般-特殊结构的深度应适当特殊结构的深度应适当 应该使类等级中包含的层次数适当。应该使类等级中包含的层次数适当。一般说来,在一个中等规模一般说来,在一个中等规模(大约包含大约包含100个类个类)的系统中,类等级层次数应保持为的系统中,类等级层次数应保持为5-9。应该使一般一特殊结构与领域知识或常识应该使一般一特殊结构
4、与领域知识或常识保持一致。保持一致。53 设计简单的类设计简单的类 (1)避免包含过多的属性避免包含过多的属性 (2)有明确的定义有明确的定义 (3)尽量简化对象之间的合作关系尽量简化对象之间的合作关系 (4)不要提供太多服务(不超过不要提供太多服务(不超过7个)个)4 使用简单的协议使用简单的协议 消息中的参数不要超过消息中的参数不要超过3个个 通过复杂消息相互关联的对象是紧耦合的,通过复杂消息相互关联的对象是紧耦合的,对一个对象的修改往往导致其他对象的修改对一个对象的修改往往导致其他对象的修改65 使用简单的服务使用简单的服务 6 把设计变动减至最小把设计变动减至最小 服务通常一般只有服务
5、通常一般只有35行源程序语句行源程序语句 一般说来,应该尽量避免使用复杂的服务。一般说来,应该尽量避免使用复杂的服务。如果需要如果需要 在服务中使用在服务中使用CASE语句,通常应该考语句,通常应该考虑用一般一特殊结构代替这个类的可能性。虑用一般一特殊结构代替这个类的可能性。设计的质量越高,设计结果保持不变的时间设计的质量越高,设计结果保持不变的时间也越长。即使出现必须修改设计的情况,也应该也越长。即使出现必须修改设计的情况,也应该使修改的范围尽可能小。使修改的范围尽可能小。711.3.1 概述概述 1 重用重用:也叫再用或复用,是指同一事物不作修也叫再用或复用,是指同一事物不作修改或稍加改动
6、就多次重复使用。改或稍加改动就多次重复使用。(1)知识重用知识重用(例如,软件工程知识的重用例如,软件工程知识的重用)。(2)方法和标准的重用方法和标准的重用(例如,面向对象方法或国例如,面向对象方法或国家制定的软件开发规范的重用家制定的软件开发规范的重用)。(3)软件成分的重用。软件成分的重用。82软件成分的重用级别软件成分的重用级别(1)代码重用代码重用(2)设计结果重用设计结果重用(3)分析结果重用分析结果重用3 典型的可重用软件成分典型的可重用软件成分(1)项目计划项目计划(2)成本估计)成本估计(3)体系结构)体系结构 (4)需求模型和规格说明)需求模型和规格说明(5)设计设计 (6
7、)源代码源代码(7)用户文档和技术文档)用户文档和技术文档(8)用户界面)用户界面(9)数据)数据(10)测试用例)测试用例911.3.2 类构件类构件 面向对象中的类是比较理想的可重用的构件,称类面向对象中的类是比较理想的可重用的构件,称类构件。构件。1可重用软构件应具备的特点可重用软构件应具备的特点(1)模块独立性强模块独立性强 具有单一、完整的功能,且经过反复测试被确认是具有单一、完整的功能,且经过反复测试被确认是正确的,内部实现在外面是不可见的。正确的,内部实现在外面是不可见的。(2)具有高度可塑性具有高度可塑性 必须提供为适应特定需求而扩充或修改已有构件的必须提供为适应特定需求而扩充
8、或修改已有构件的机制,而且所提供的机制必须使用起来非常简单方便。机制,而且所提供的机制必须使用起来非常简单方便。(3)接口清晰、简明、可靠接口清晰、简明、可靠 应该有详尽的文档说明应该有详尽的文档说明10 系统的主要组成部分称为系统的主要组成部分称为子系统子系统。通常根据所提供。通常根据所提供的功能来划分子系统。的功能来划分子系统。例如,编译系统可划分成词法分析、语法分析、中例如,编译系统可划分成词法分析、语法分析、中间代码生成、优化、目标代码生成和出错处理等子系统。间代码生成、优化、目标代码生成和出错处理等子系统。子系统的数目应该与系统规模基本匹配。子系统的数目应该与系统规模基本匹配。在划分
9、和设计子系统时,应该尽量减少子系统彼此在划分和设计子系统时,应该尽量减少子系统彼此间的依赖性。间的依赖性。面向对象设计模型面向对象设计模型(即求解域的对象模型即求解域的对象模型),也由主,也由主题、类与对象、结构、属性、服务等五个层次组成。这题、类与对象、结构、属性、服务等五个层次组成。这五个层次一层比一层表示的细节更多,可以把这五个层五个层次一层比一层表示的细节更多,可以把这五个层次想象为整个模型的水平切片。次想象为整个模型的水平切片。11 面向对象设计模型,在逻辑上都由四大部分组成。面向对象设计模型,在逻辑上都由四大部分组成。这四大部分对应于组成目标系统的四个子系统,它们这四大部分对应于组
10、成目标系统的四个子系统,它们分别是分别是问题域子系统问题域子系统、人人机交互子系统机交互子系统、任务管理任务管理子系统子系统和和数据管理子系统数据管理子系统。可以把四大部分想象为模型的垂直切片。可以把四大部分想象为模型的垂直切片。12 1141 子系统之间的两种交互方式子系统之间的两种交互方式1 客户客户-供应商关系供应商关系 在这种关系中,作为在这种关系中,作为“客户客户”的子系统调用作为的子系统调用作为“供应商供应商”的子系统,后者完成某些服务工作并返回结果。的子系统,后者完成某些服务工作并返回结果。使用这种交互方案,作为客户的子系统必须了解作为供应使用这种交互方案,作为客户的子系统必须了
11、解作为供应商的子系统的接口,然而后者却无须了解前者的接口,因商的子系统的接口,然而后者却无须了解前者的接口,因为任何交互行为都是由前者驱动的。为任何交互行为都是由前者驱动的。2平等伙伴关系平等伙伴关系 在这种关系中,每个子系统都可能调用其他子系统,在这种关系中,每个子系统都可能调用其他子系统,因此,每个子系统部必须了解其他子系统的接口。因此,每个子系统部必须了解其他子系统的接口。总的说来,单向交互比双向交互更容易理解,也更总的说来,单向交互比双向交互更容易理解,也更容易设计和修改,因此应该尽量使用客户一供应商关系。容易设计和修改,因此应该尽量使用客户一供应商关系。131142 组织系统的两种方
12、案组织系统的两种方案1层次组织层次组织 这种组织方案把软件系统组织成一个层次系统,每层这种组织方案把软件系统组织成一个层次系统,每层是一个子系统。是一个子系统。在上、下层之间存在客户在上、下层之间存在客户-供应商关系。低层子系统供应商关系。低层子系统提供服务,相当于供应商,上层子系统使用下层提供的服提供服务,相当于供应商,上层子系统使用下层提供的服务,相当于客户。务,相当于客户。2块状组织块状组织 这种组织方案把软件系统垂直地分解成若干个相对独这种组织方案把软件系统垂直地分解成若干个相对独立、弱耦合的子系统,一个子系统相当于一块,每块提供立、弱耦合的子系统,一个子系统相当于一块,每块提供一种类
13、型的服务。一种类型的服务。利用层次和块的各种可能的组合,可以成功地由多个利用层次和块的各种可能的组合,可以成功地由多个子系统组成一个完整的软件系统。子系统组成一个完整的软件系统。14 典型应用系统的组织结构典型应用系统的组织结构1511.5 设计问题域子系统设计问题域子系统 OOA的模型直接放到的模型直接放到OOD的问题的问题域部域部分分,OOD阶段对阶段对OOA结果进行结果进行改动和增补。改动和增补。根据根据实现条件实现条件,对,对OOA产生模型产生模型的类与对象、结构、属性、操作进行的类与对象、结构、属性、操作进行 组合与分解,增加必要的类、属性和组合与分解,增加必要的类、属性和关系。关系
14、。16问题域的设计过程问题域的设计过程输入输入OOA模型,进行必要的修改模型,进行必要的修改逐一考察影响问题域部分设计的实现条逐一考察影响问题域部分设计的实现条件,对模型进行调整、补充件,对模型进行调整、补充建立分析文档和设计文档之间的映射关建立分析文档和设计文档之间的映射关系系17可能对可能对OOAOOA所得出的问题域模型做的补充或修改所得出的问题域模型做的补充或修改调整需求调整需求重用已有的类重用已有的类把问题域类结合在一起把问题域类结合在一起增添一般化类以建立协议增添一般化类以建立协议调整继承层次调整继承层次18 如果面向对象分析模型中包含了多重继承关系,如果面向对象分析模型中包含了多重
15、继承关系,然而所使用的程序设计语言却并不提供多重继承机制,然而所使用的程序设计语言却并不提供多重继承机制,则必须修改面向对象分析的结果。即使使用支持多重则必须修改面向对象分析的结果。即使使用支持多重继承的语言,有时也会出于实现考虑而对面向对象分继承的语言,有时也会出于实现考虑而对面向对象分析结果作一些调整。析结果作一些调整。调整继承层次调整继承层次(1)使用多重继承机制使用多重继承机制 使用多重继承机制时,应该避免出现属性及服使用多重继承机制时,应该避免出现属性及服务的命名冲突。务的命名冲突。19窄菱形模式窄菱形模式阔菱形模式阔菱形模式20(2)使用单继承机制使用单继承机制 如果打算使用仅提供
16、单继承机制的语言实现系统,如果打算使用仅提供单继承机制的语言实现系统,则必须把面向对象分析模型中的多重继承结构转换成单则必须把面向对象分析模型中的多重继承结构转换成单继承结构。继承结构。把多重继承简化为单一层次的单继承把多重继承简化为单一层次的单继承21ATM系统实例系统实例 由于在面向对象分析过程中已经对由于在面向对象分析过程中已经对ATM系统系统做了相当仔细的分析,而且假设所使用的实现环境做了相当仔细的分析,而且假设所使用的实现环境能完全支持面向对象分析模型的实现,因此,在面能完全支持面向对象分析模型的实现,因此,在面向对象设计阶段无须对已有的问题域模型作实质性向对象设计阶段无须对已有的问
17、题域模型作实质性的修改或扩充。的修改或扩充。22ATM系统问题域子系统的结构系统问题域子系统的结构2311.6 11.6 面向对象的面向对象的人机人机交互部分交互部分的的设计设计1 1、分析活动者、分析活动者与系统交互的人与系统交互的人按技能水平分类(新手、初级、中级、按技能水平分类(新手、初级、中级、高级)高级)按职务分类(总经理、经理、职员)按职务分类(总经理、经理、职员)按所属集团分类(职员、顾客)按所属集团分类(职员、顾客)242 2、描述用户、描述用户用户类型用户类型使用系统欲达到的目的使用系统欲达到的目的特征(年龄、性别、受教育程度、限特征(年龄、性别、受教育程度、限制因素等)制因
18、素等)关键的成功因素(需求、爱好、习惯关键的成功因素(需求、爱好、习惯等)等)技能水平技能水平完成本职工作的脚本完成本职工作的脚本253 3、设计命令层次、设计命令层次研究现有的人机交互含义和准则研究现有的人机交互含义和准则确定初始的命令层次确定初始的命令层次精化命令层次精化命令层次26人机界面的人机界面的OO设计设计 界面支持系统界面支持系统窗口系统窗口系统图形用户界面(图形用户界面(GUIGUI)可视化编程环境可视化编程环境界面元素界面元素窗口窗口菜单菜单对话框对话框图符图符滚动条滚动条其他其他27人机界面的人机界面的OO设计设计 设计过程与策略设计过程与策略选择和掌握界面支持系统选择和掌
19、握界面支持系统 硬件、操作系统及编程语言硬件、操作系统及编程语言 界面实现的支持级别界面实现的支持级别 界面风格与视感界面风格与视感 其他其他根据人机交互需求选择界面元素根据人机交互需求选择界面元素 系统的启动系统的启动 高层命令组织结构的实现高层命令组织结构的实现 基本命令的执行基本命令的执行 详细交互过程的输入与输出详细交互过程的输入与输出 异常命令的输入异常命令的输入2811.7 11.7 设计任务管理子系统设计任务管理子系统1.1.为什么要有任务管理部分为什么要有任务管理部分 任务管理部分的任务:任务管理部分的任务:系统如何系统如何并发并发执行执行要设计哪些要设计哪些控制控制流流 根据
20、根据什么决定上述问题:什么决定上述问题:问题域和系统责任问题域和系统责任所选择的实现条件所选择的实现条件 把把任务管理部分任务管理部分作为作为OOD模型的一个独立组成模型的一个独立组成部分来设计,可使实现条件的变化主要影响这一部分,部分来设计,可使实现条件的变化主要影响这一部分,从而隔离对其他部分的影响从而隔离对其他部分的影响。29 虽然从概念上说,不同对象可以并发地工作,但是,虽然从概念上说,不同对象可以并发地工作,但是,在实际系统中,许多对象之间往往存在相互依赖关系。在实际系统中,许多对象之间往往存在相互依赖关系。此外,在实际使用的硬件中,可能仅由一个处理器支持此外,在实际使用的硬件中,可
21、能仅由一个处理器支持多个对象。因此,设计工作的一项重要内容就是,确定多个对象。因此,设计工作的一项重要内容就是,确定哪些是必须同时动作的对象,哪些是相互排斥的对象。哪些是必须同时动作的对象,哪些是相互排斥的对象。然后进一步设计任务管理子系统。然后进一步设计任务管理子系统。1.分析并发性分析并发性2.设计任务管理子系统设计任务管理子系统 常见的任务有事件驱动型任务、时钟驱动型任务、常见的任务有事件驱动型任务、时钟驱动型任务、优先任务、关键任务和协调任务等。设计任务管理子优先任务、关键任务和协调任务等。设计任务管理子系统,包括系统,包括确定各类任务并把任务分配给适当的硬件确定各类任务并把任务分配给适当的硬件或软件去执行或软件去执行。3011.811.8设计数据管理子系统设计数据管理子系统 数据管理部分提供了数据在数据管数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它系统中存储和检索对象的基本结构,它分离了数据管理方案的影响分离了数据管理方案的影响(不管该方不管该方案是普通文件、关系型数据库、面向对案是普通文件、关系型数据库、面向对象数据库或其它方式象数据库或其它方式.).)
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。