第10章面向对象设计

上传人:我*** 文档编号:137618041 上传时间:2020-07-10 格式:PPT 页数:88 大小:347KB
返回 下载 相关 举报
第10章面向对象设计_第1页
第1页 / 共88页
第10章面向对象设计_第2页
第2页 / 共88页
第10章面向对象设计_第3页
第3页 / 共88页
第10章面向对象设计_第4页
第4页 / 共88页
第10章面向对象设计_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《第10章面向对象设计》由会员分享,可在线阅读,更多相关《第10章面向对象设计(88页珍藏版)》请在金锄头文库上搜索。

1、1,第10章 面向对象设计,10.1 面向对象的设计准则 10.2 问题域子系统设计 10.3 人机交互子系统设计 10.4 任务管理子系统设计 10.5 数据管理子系统设计 10.6 服务与关联的设计 10.7 面向对象设计的优化,2,面向对象设计(OOD),OOD是建立求解域模型的过程。 OOD继续做OOA分析后的工作,是OOA的延伸和扩展。 OOA是搞清系统“做什么”,OOD是搞清系统“如何做”。 OOD分为系统设计和类设计。,3,系统设计,系统设计阶段开发系统的结构,即构造应用软件的总体模型。 系统设计阶段标识在计算机环境中进行问题解决工作所需要的概念,并增加了一批需要的类。 这些类包

2、括那些可使应用软件与系统的外部世界交互的类。 此阶段的输出是适合应用软件要求的类、类间的关系、应用的子系统视图规格说明。,4,系统设计模型,5,类设计,类与具有概念封装的子系统十分类似。 每个子系统都可以被当做一个类来实现,这个类聚集它的部件,提供了一组操作。 类和子系统的结构是正交的,一个单个类的实例可能是不止一个子系统的一部分。,6,系统设计和类设计这两个阶段是相对封闭的。 应用软件中的每一个事物都是一个对象,包括应用软件自身在内。 两个阶段是连接的。 应用软件的设计是大类的设计,这种类设计考察应用软件所期望的每一个行为,并利用这些行为形成应用类的界面。,7,10.1 面向对象的设计准则,

3、设计准则 1. 模块化 对象把数据结构和作用在数据上的操作封装起来构成模块。对象是组成系统的基本模块。 2. 抽象 类是一种抽象数据类型,在该数据类型之上,可以创建对象(类的成员)。 3. 信息隐藏 对象是属性和服务的封装体,这就实现了信息隐藏。,8,4. 弱耦合 耦合指OOD成分之间的关系。 5. 强内聚 服务内聚、类内聚和一般特殊内聚 6. 可重用 类的设计应具有通用性,容易实现重用,对面向对象而言,要充分利用已有的类库。,9,设计策略 1. 设计结果应该清晰易懂 命名一致,使用一致的词汇表。 重用协议(公共接口) 减少消息连接 避免模糊的定义,10,2. 一般 - 特殊结构的深度应适当

4、3. 设计简单的类 属性和服务不要太多 定义要明确精炼 简化对象间的通信 4. 设计简单的协议 5. 设计简单的服务 6. 减少设计变动,11,Coad 与 Yourdon 面向对象设计方法,Coad 与 Yourdon 在设计阶段中继续采用分析阶段中提到的五个层次。 在设计阶段中,这五个层次用于建立系统的四个组成成分。 问题域部分(PDC) 人机交互部分(HIC) 任务管理部分(TMC) 数据管理部分(DMC),12,典型的面向对象设计模型,13,子系统间的交互方式,客户/服务器交互方式 作为“客户”的子系统调用作为“服务器”的子系统,执行某些服务后并返回结果。 作为客户的子系统必须了解作为

5、服务器的子系统的接口。 同等伙伴交互方式 每个子系统都可能调用其他子系统。 子系统间必须相互了解接口。,14,系统组织,组织子系统有两种方式:水平层次组织和垂直块组织。 层次组织是将子系统按层组织成为一个层次软件系统,每层是一个子系统。 层次组织中,下层为上层提供必要的服务。 层次结构又可分为封闭式和开放式两种。 块组织将系统垂直地分解成若干个相对独立的、弱耦合的子系统。 块组织中,一个子系统相当于一块,每块提供一种类型的服务。,15,典型应用系统的组织结构,16,10.2 问题域子系统设计,问题域部分包括与应用问题直接有关的所有类和对象。 识别和定义这些类和对象的工作在OOA中已经开始,在O

6、OA阶段得到的有关应用的概念模型描述了我们要解决的问题。 在OOD阶段,应当继续OOA阶段的工作,对在OOA中得到的结果进行改进和增补。,17,对OOA模型中的某些类与对象、结构、属性、操作进行组合与分解。 要考虑对时间与空间的折衷、内存管理、开发人员的变更、以及类的调整等。,18,1. 调整需求,面向对象分析模型不能完整、准确地反映用户真实需求时,需要调整需求。 对面向对象分析模型作简单的修改,然后再将修改后的模型引用到问题域子系统中。,19,2. 重用现有的类,根据问题解决的需要,把从类库或其它来源得到的既存类增加到问题解决方案中去。 标明既存类中不需要的属性和操作, 把应用类中因继承既存

7、类而成为多余的属性和操作标出。 增加从既存类到应用类之间的一般化-特殊化的关系。 修改应用类的结构和连接。,20,例如,问题域中有一个类“车辆”,属性有“序号”、“颜色”、“样式”和“出厂年月”,还有一个操作“序号认证”。找到一个可复用类“车辆”,属性有“序号”、“厂商”和“样式”,操作有“序号认证”。 步骤:把可复用类“车辆”标记为复用,划掉不用的属性“厂商”,把类“车辆复用”作为类“车辆”的一般类,再把“车辆”中的属性“序号”和“样式”及操作“序号认证去掉。,21,3. 组合问题域类,在设计时,从类库中引进一个根类,做为包容类,把所有与问题论域有关的类关联到一起,建立类的层次。 把同一问题

8、域的一些类集合起来,存于类库中。,22,4. 加入一般化类以建立类间协议,有时,某些特殊类要求一组类似的服务。 此时,应加入一个一般化的类,定义为所有这些特殊类共用的一组服务名,这些服务都是虚函数。 在特殊类中定义其实现。,23,5. 按编程语言调整继承,在OOA阶段建立的对象模型中可能包括有多继承关系,但实现时使用的程序设计语言可能只有单继承,甚至没有继承机制,这样就需对分析的结果进行修改。 将多继承化为单继承,单继承化为无继承。,24,针对单继承语言的调整,把特殊类的对象看做是一个一般类对象所扮演的角色,通过实例连接把多继承的层次结构转换为单继承的层次结构。 把多继承的层次结构平铺,成为单

9、继承的层次结构。在这种情况下,有些属性或操作在同层的特殊类中会重复出现。,25,针对无继承语言的调整,当使用无继承的程序设计语言时,必须把具有继承关系的类层次结构平铺开来,成为一组类和对象。 一般可利用命名惯例,把这些类或对象关联起来。,26,6. 改进性能,提高执行效率和速度是系统设计的主要指标之一。有时,必须改变问题域的结构以提高效率。 如果类之间经常需要传送大量消息,可合并相关的类以减少消息传递引起的速度损失。 增加某些属性到原来的类中,或增加低层的类,以保存暂时结果,避免每次都要重复计算造成速度损失。,27,实例设计,图10.3 ATM系统问题域子系统的结构,28,10.3 人机交互子

10、系统设计,人机交互子系统也称为人机交互部分(HIC,Human Interaction Component) 设计人机交互就是要设计输入与输出,其中所包含的对象(称做界面对象)及其间的关系构成了系统人机交互部分的模型。 设计人机交互子系统的关键是使用原型技术。,29,设计人机交互界面的准则,1.尽量保持一致性 术语、步骤和动作的使用要一致。 2.减少重复的输入和操作 3.及时反馈信息 4.提供撤销命令 5.减少记忆,30,6.易学易用 7.富有吸引力 8.防止灾难性的错误,31,设计人机交互子系统的策略,分类用户 按技能分类 初级中级高级 按职务分类 总经理部门经理职员 按工作性质分类 行政人

11、员技术人员 按专业知识分类 外专业/专业/系统员/程序员,32,描述用户及其任务脚本,描述用户及其任务的脚本内容,33,用户及其任务的脚本描述例子,什么人分析员 目的要求一个工具来辅助分析工作 (摆脱繁重的画图和检查图的工作)。 特点年龄:42岁;教育水平:大学;限制:不要微型打印,小于9个点的打印太小。 成功的关键因素工具应当使分析工作顺利进行;工具不应与分析工作冲突;工具应能捕获假设和思想,能适时做出折衷;应能及时给出模型各个部分的文档,这与给出需求同等重要。 熟练程度专家。,34,任务脚本 主脚本: 识别“核心的”类和对象; 识别“核心”结构; 在发现了新的属性或操作时随时都可以加进模型

12、中去。 检验模型: 打印模型及其全部文档。,35,设计命令层,研究现行的人机交互活动的内容和准则:这些准则可以是非形式的,如“输入时眼睛不易疲劳”,也可以是正式规定的; 建立一个初始的命令层:可以有多种形式,如一系列 Menu Screens、或一个Menu Bar、或一系列Icons. 优化命令层:考虑以下几个问题。,36,排列命令层次。把使用最频繁的操作放在前面。按照用户工作步骤排列。 通过逐步分解,找到整体局部模式,以帮助在命令层中对操作分块。 根据人们短期记忆的“72”或“每次记忆3块每块3项”的特点,把深度尽量限制在三层之内。 减少操作步骤:把点取、拖动和键盘操作减到最少。,37,设

13、计人机交互类,窗口需要进一步细化,通常包括:类窗口、条件窗口、检查窗口、文档窗口、画图窗口、过滤器窗口、模型控制窗口、运行策略窗口、模板窗口等。 设计HIC类,首先从组织窗口和部件的用户界面的设计开始。,38,每个类包括窗口的菜单条、下拉菜单、弹出菜单的定义。还要定义用于创建菜单、加亮选择项、引用相应的响应的操作。 每个类负责窗口的实际显示。所有有关物理对话的处理都封装在类的内部。必要时,还要增加在窗口中画图形图符的类、在窗口中选择项目的类、字体控制类、支持剪切和粘贴的类等。与机器有关的操作实现应隐蔽在这些类中。,39,10.4 任务管理子系统设计,任务管理子系统也称为任务管理部分(TMC,T

14、ask Management Compoent)。 它是设计来处理多重任务的。 任务,是进程的别称,是执行一系列活动的一段程序。 当系统中有许多并发行为时,需要依照各个行为的协调和通信关系,划分各种任务,以简化并发行为的设计和编码。 任务管理主要包括任务的选择和调整,它的工作有以下几种。,40,识别事件驱动任务: 一些负责与硬件设备通信的任务是事件驱动的,也就是说,这种任务可由事件来激发。 识别时钟驱动任务:以固定的时间间隔激发这种事件,以执行某些处理。某些人机界面、子系统、任务、处理机或与其它系统需要周期性的通信,因此时钟驱动任务应运而生。,41,识别优先任务:根据处理的优先级别来安排各个任

15、务。 确定关键任务:分离关键任务,保证它的处理。 识别协调者:当有三个或更多的任务时,应当增加一个追加任务,起协调者的作用。它的行为可以用状态转换矩阵来描述。 评审各个任务:对各任务进行评审,去掉不必要的任务。,42,定义每个任务: 定义任务的工作主要包括:它是什么任务、如何协调工作及如何通信。 (1) 它是什么任务为任务命名,并简要说明这个任务。 (2) 如何协调工作定义各个任务如何协调工作。指出它是事件驱动还是时钟驱动,43,(3) 如何通信定义各个任务之间如何通信。任务从哪里取值,结果送往何方。 任务定义的一个模版如下: Name (任务名) Description (描述) Prior

16、ity (优先级) Services included (包含的操作) Communication By (经由谁通信),44,10.5 数据管理子系统设计,数据管理子系统也称数据管理部分(DMC,Data Management Component)。 数据管理部分提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。 它分离了数据管理机构所关心的事项,包括文件、关系型DBMS或面向对象DBMS等。,45,数据存储管理模式,数据存储管理模式主要有3种:文件管理、关系数据库管理和面向对象库数据管理。 文件管理提供基本的文件处理能力。 关系数据库管理系统关系数据库管理系统使用若干表格来管理数据。,46,面向对象数据库管理系统通常,面向对象的数据库管理系统以两种方法实现:一是扩充的RDBMS,二是扩充的面向对象程序设计语言。 扩充的RDBMS主要对RDBMS扩充了抽象数据类型和继承性,再加一些一般用途的操作创建和操纵类与对象。 扩充的OOPL在面向对象程序设计语言中嵌入了在数据库中长期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号