问地训练题目域部分地设计

上传人:痛*** 文档编号:84035885 上传时间:2022-05-02 格式:DOC 页数:18 大小:235KB
收藏 版权申诉 举报 下载
问地训练题目域部分地设计_第1页
第1页 / 共18页
问地训练题目域部分地设计_第2页
第2页 / 共18页
问地训练题目域部分地设计_第3页
第3页 / 共18页
资源描述:

《问地训练题目域部分地设计》由会员分享,可在线阅读,更多相关《问地训练题目域部分地设计(18页珍藏版)》请在装配图网上搜索。

1、word第六章 问题域局部的设计一、 什么是面向对象设计1、 OOA与OOD的关系: 1 面向对象的设计就是在OOA的根底上运用面向对象方法,主要解决与现实有滚得问题,目标是产生一个符合现实条件的OOD模型。与现实条件有关的因素有:图形用户系统、硬件、操作系统、网络、数据管理系统和编辑语言等。 2 由于OOD以OOA模型为根底且OOA与OOD采用一致的表示方法,这使得从OOA到OOD不存在转换,只需做必要的修改和调整,或补充某些细节,并增加几个与现实关联的相独立局部即可。因此OOA与OOD之间不存在分析与设计的鸿沟,二者能严密衔接,大大降低了从OOA与OOD的难度、工作量和出错频率。 3 OO

2、A主要针对问题域,识别有关的对象以与它们之间的关系,产生一个映射问题域,满足用户需求,独立于实现的OOA模型。OOD主要解决与实现有关的问题,基于OOA模型,针对具体的软、硬件条件如机器、网络、OS、GUI、DBMS等产生一个可实现的OOD模型。2、OOD模型和过程 在OOA阶段只考虑问题域和系统操作责任,在OOD阶段要考虑与具体实现的问题。图6-1 OOD模型从一个侧面观察 OOD模型包括五个主要局部一个核心局部加四个外围局部 问题域局部、人机交换局部、控制驱动局部、数据管理局部、构建与部署局部从另一侧面观察 OOD模型每个局部仍采用OOA的概念和表示方法,只是在辅助模型中要增加分别于描述构

3、件模型和部署的构件图和部署图。OOD过程: 设计OOD模型的五个局部 问题域局部的设计、人机交互局部的设计、控制流管理局部的设计、数据管理局部的设计、构件部署设计。前4项不强调次序,每个局部均采用与OOA一致的概念、表示法与活动,但具有自己独特的策略。进展构件部署设计要在其前面四个局部完成后进展。二、 问题域局部的设计 对OOA结果按实现条件进展补充与调整就是问题域局部。进展问题域局部设计,要继续运用OOA的方法,包括概念、表示法与一局部策略。不但 要根据实现条件进展OOD设计,而且由于需求变化或新发现了错误,也要对OOA的结果进展修改。本章的重点是对OOA结果进展补充与调整,要强调的是这局部

4、工作主要不是细化,但OOA未完成的细节定义要在OOD完成。 1、为复用类而增加结构2、提高性能3、增加一般类以建立共同协议4、按编程语言调整继承5、转化复杂关联决定关系的实现方式6、调整与完善属性7、构造与优化算法8、决定对象间的可访问性9、定义对象实例10、其他如下针对一些主要的情况讲述如何进展问题域的设计 1、为复用类而增加结构如果在 OOA识别和定义的类是本次开发中新定义的,而且没有可复用的资源,如此需要进一步设计和编程。如果已存在一些可复用的类,而且这些类既有分析、设计时的定义,又有源程序,那么,复用这些类即可提高开发效率与质量。 可复用的类可能只是与OOA模型中的类相似,而不是完全一

5、样对二者进展修改。1) 如果完全一样,就把可复用的类直接加到问题域,并用复用标记所复用的类。2) 如果大于,就把可复用的类直接加到问题域,并用复用标记所复用的类,所需要的累再继承它。3) 如果大于,就把可复用的类直接加到问题域,删除可复用类中的多余信息,并用复用标记所复用的类。4) 如果相似,按如下方法处理;把要复用的类加到问题域,标以 “复用。划掉或标出不用的属性与服务。建立从复用类到问题域原有的类之间的泛化关系。由于问题域的类继承了“复用类的特征,所以有些属性和服务不需要了应 该把它们划掉。考虑修改问题域原有类的结构和连接,必要时移到“复用类。图6-2问题域中例题2、提高性能1) 调整对象

6、的分布 把需要频繁交换信息的对象,尽量地放在一台处理机上。 2增加保存中间结果的属性或类 防止以后重复计算。 3提高或降低系统的并发度,可能要人为地增加或减少主动对象。 4合并通讯频繁的类5用聚合关系描述复杂类 如果一个所描述事物过于复杂,其操作也可能比拟复杂,因为其中间可能要包多项工作内容。对这种情况的处理,可考虑用聚合关系描述复杂类。6) 细化对象的分类 如果一个类的概念X畴过于大,那么它所描述的对象的实际情况可能就有假如干差异。解决的一个方法就是把类划分的更细一些,在原先较为一般的类之下定义一些针对不同具体情况的类。在每个特殊类中分别定义适合各自对象的操作。3、增加一般类以建立共同协议

7、1增加一个类,将所有具有一样操作和属性的类组织在一起,提供通用的协议。 2)增加一般的类,提供局部通用的协议。 3)对相似操作的处理。 通过对特征标记做小的修改,以使他们一样,然后再把他们提升到一般类中。4 、按编程语言调整继承 由于在OOA强调如实地反映问题域,OOD考虑实现问题,所用语言不支持多继承,甚至不支持继承。 1对多继承的调整 方法一:采用聚合把多继承转换为单继承因为聚合和泛化是不同的概念,这种方法并不是通用的(按定义)。在大多数情况下,需要考虑形成多继承的原因,将本来在特殊类中显式定义的信息离出来,作为局部对象,以原来的一般类作为整体对象。 图6-3多继承中的一个继承换为聚合示例

8、 图6-4所示的模型中有一个多继承,现假设编程语言不支持多继承,仅支持单继承。图6-4多继承示例图6-5采用聚合的方式把多继承转换为单位继承示例由于在图6-4所示的模型是按人员身份对一本类“人员进展分类,并形成了其下的两个特殊类“研究生和“教职工,现在用身份作为一个类,依据它对原模型进展调整,如图6-5所示。图6-5用类“人员创建对象的用意不变。创建类“研究生的对象时,使用类“人员和类“身份以与自身的信息,类“教职工也与此类似。创建“在职研究生的对象时,使用类图中的四个类的信息。 方法二:采用压平的方式 采用这种方法,使得类“教职工和“研究生中的一些特征要在类的“在职研究生中重复出现,导致信息

9、冗余。图6-6采用压平的方式把多继承转换为单位继承图6-7采用压平和聚合的方式把继承转换为单位继承2) 取消继承方法一:把继承结构展平图6-8完全取消继承示例方法二:采用聚合的方法图6-9采用聚合的方式取消继承3) 对多态性的调整 在继承结构中,具有一样名字的属性和操作,在不同的类中可以具有不同的类型和行为。这种在继承结构中对同一命令具有不同的含义的机制,就是继承的多态。如果编程的语言不支持多态,就需要把多态有关的属性和操作的名字分别赋不同的含义,也即明确把他们是为不同的东西,不但如此,往往还要按实际要求,重新考虑对象的分类,并对属性和操作进展调整。 属性“边数、“顶点坐标和操作“绘图不能被所

10、有的特殊继承或不参加修改的继承,就说明它们只能适合多边形集合的一个子集,把这个子集定义为一个特殊的类“不规如此多边形,并把这些属性和操作下降到该特殊类中。这样类“正多边形和“矩形也不能继承那些不适合自己的属性和操作,而是要自己进展的定义。如图6-1所示。图6-10多态性的调整示例5、转化复杂关联决定关系的实现方式 1对复杂关联的转化 1把多元关联和N元关联转化为二元关联 2把多对多关联类转化为一对多关联图6-11把多对关联转化为一对关联 在图6-11中类“供需合同设立了两个属性“卖方和“买方在实例化后分别用于记录类“供货商和“客户的对象的标识。假如不仅仅需要从类“供需合同的对象访问其他对象,还

11、存在着其他对象的访问。2关联的实现方式 对关联进展调整后,要考虑关联的实现方式。 决定在整体类中指出局部类时,是用局部类直接作为整体类中的属性的数据类型,还是把局部类用作指针或对象标识的基类型,再用这样的指针或对象标示定义整体类的属性。如果是组合,最好用第1种方式,否如此就需要在程序中保证整体对象与局部对象的生命周期的一致性。 通常,通过在对象中设立指针或对象标识以指向或记录另一端的对象的方法,来实现关联。如果是单向关联,就在源端的类中设立属性,用来标记另一端的类将来创建的对象。如果是双向关联,就在两端类中各设立属性,用来标记对方将来创建的对象。如果关联中对方类的多重性是1,那么可在本方设立一

12、个指向对方对象的指针,或设立一个记录对方对象引用的属性。 如果对方类的多重性大于1,那么可在本方设立一个指向对方对象的指针集合或引用集合。 假如关联的某端有角色名,最好把其作为另一端类的属性名,以访问与角色名相邻的类。 6、调整完备与属性 按照语法: 可见性 属性名:类型= 初始值 对属性的定义进展完善。每一个属性或者包含单个值,或者包含作为一个整体的密切相关的一组值。图6-12对编辑语言不支持的属性类型进展调整的示例 假如要给出对属性的性质的约束,如“工龄60或“0英语成绩100等,也要看语言是否对其直接支持,否如此要在算法上考虑如何实现。 为了维护数据的完整性,必须要考虑需要一起更新的多个

13、相关联的数据值。特别是,当根本的数据发生变化时,必须更新导出的属性。通过如下方法可以做到这一点: 1)显式的代码 因为每一个导出属性是根据一个或多个根本对象属性定义的,更新导出属性的一种方法是,在更新根本对象属性的操作中插入更新导出属性的代码。这种附加的代码将明确地更新依赖根本对象属性的导出属性,使得根本属性与导出属性的值同步。 2)批处理性的重计算 当根本数据以批处理的方式改变时,可能在所有的根本数值改变之后,再重新计算所有的导出属性的值。 3)触发器 但凡依赖根本属性的属性,都必须将它自己向根本属性注册。当根本属性的值被更新时,由专门设置的触发器更新导出属性的值。7、构造和优化算法 对于需

14、要设计的操作,要从如下几方面进展详细地定义: 1按照定义操作的格式: 可见性 操作名(参数列表):返回类型 完善操作的定义。 2从问题域的角度,根据其责任,考虑实现操作的算法,即对象是怎样提供操作的。 3假如操作有前后置条件或不变式,考虑编程语言是否予以支持。假如不支持,在操作的方法中要予以实现。 4建议进一步地分析特定类的对象相关的所有交互图,找出其所有与之相关的消息。一个对象所要响应的每个消息都要由该对象的操作处理,其中的一个操作也可能要使用其他操作。如果类拥有状态图,还可根据内部转换以与外部转换上的动作,设计算法的详细逻辑。 可用自然语言或进展了一定结构化的自然语言描述算法,也可以使用程

15、序框图或活动图描述算法。 在算法中还要考虑对例外和特殊情况的处理。如考虑对输入错误、来自中间件或其它软硬件的错误的消息以与其它例外情况的处理。 在系统较为复杂或需要处理大批量的数据的情况下,假如系统在性能上有要求,就要对系统的体系结构和算法进展优化。8、决定对象间的可访问性 从类A的对象到类B的对象有4种访问性(1)属性可见性:B是A的一个属性关联、聚合 class A ;B b;(2)参数可见性:B的对象是A的一个方法的参数依赖 A.amethod(B b) /间接地找到一个对象,并赋给b(3)局部声明可见性:B的对象是在A的一个方法中声明的一个局部变量依赖 class A:amethod

16、; B b;(4) 全局可见性:B的对象在某种程度上全局可见依赖声明B的全局实例变 量。 对于后三种情况而言,从类A到类B间存在着依赖关系,在程序运行期间A的对象与B的对象存在着临时性的连接临时链,而第一种情况中的链是由从类A到类B间的关联实例化而来的。 9、定义对象实例 在逻辑上,一个类是对一组对象的抽象描述。在物理上,一个类所创建的各对象,要么在内存中,要么在外存中。在内存中创建的一个对象,用一个变量记录它的标识。在外存中的对象,可能保存在一个文件中,也可能保存在一个数据库表中。 在OOD中,根据不同的实现条件和实现策略,可以按如下的方式定义对象: 1 用相应的类定义内存中的全局性对象,包

17、括静态声明和动态创建两种方式。可以一次针对一个对象定义一个变量,也可以成批地定义对象。例如,可以定义一个数组,它的每个元素是一个对象变量,以此来成批地定义对象。 2当系统需要通过从外存读取数据来创建一个对象时 ,先创建该对象,再从外存中读取这个对象数据,把数据赋值给对象的相应属性。按照一定的策略,内存中的永久对象要保存到外存中,请参看数据管理局部。 无论那种方式,都需要在在OOD文档中加以说明。按如下格式在类描述模板的定义对象局部进展描述:处理机:,;内存对象:n元数组;外存对象:;10 、其他 在OOD的问题域局部应该根据具体问题考虑使用设计模式。 在OOD的问题域局部,根据情况,还有一些其

18、它需要考虑的问题。例如,考虑参加进展输入数据验证这样的类;考虑对来自中间件或其它软硬件的错误进展处理的类,以与对其它例外情况进展处理的类。 有些作法是在OOD阶段不把这样的读写属性的操作放在类中,而认为这是一种约定,编程人员能理解。 有些作法也不把诸如创建和复制对象这样的操作放在OOD模型中。 第七章 人机交互局部的设计一、 什么是人机交互局部人机交互局部是OOD模型的组成局部之一,突出人如何任命系统以与系统如何向用户提交信息。设计人机交互就是要设计输入与输出,其中包含的对象以与其间的关系构成了人机交互的模型。图7-1设计员与用户协作设计人机界面的工作过程把人机交互局部作为系统中一个独立的组成

19、局部,进展分析和设计,有利于隔离界面支持系统的变化对问题域局部的影响。二、人机交互局部的需求分析对使用系统的人进展分析以便设计出适合其特点的交互方式和界面表现形式;对人和机器的交互过程进展分析核心问题是人如何命令系统,以与系统如何向人提交信息。1、分析与系统交互的人人员参与者 人对界面的需求,不仅在于人机交互的内容,而且在于他们对界面表现形式、风格等方面的爱好。前者是客观需求,对谁都一样;后者是主观需求,因人而异。(1)列举所有的人员参与者(2)对人员参与者进展调查研究(3)区分人员类型,并了解人员的主主观需求(4)统计或估算各类人员的比例(5) 按照一定的准如此进展折中与均衡2、从用况use

20、 case分析人机交互 use case的构成 1参与者的行为和系统行为按时序交替出现,左右清楚。形成交叉排列的段落。 2每个段落至少含有一个输入语句或输出语句; 3有假如干纯属参与者自身或系统自身的行为陈述; 4 可能包含一些控制语句或括号。 抽取方法:删除所有与输入、输出无关的语句和不再包含任何内容的控制语句与括号,剩下的就是对一个参与者人使用一项系统功能时的人机交互描述。收款员收款use case输入开始本次收款的命令; 作好收款准备,应收款总数 置为0,输出提示信息;for 顾客选购的每种商品 do 输入商品编号; if 此种商品多于一件 then 输入商品数量 end if; 检索商

21、品名称与单价; 货架商品数减去售出数; if 货架商品数低于下限 then 通知供货员请求上货 end if; 计算本种商品总价并打印编号、 名称、数量、单价、总价; 总价累加到应收款总数;end for; 打印应收款总数;输入顾客交来的款数; 计算应找回的款数, 打印以上两个数目, 收款数计入账册。 a一个use case的例子收款员收款人机交互输入开始本次收款的命令; 输出提示信息;for 顾客选购的每种商品 输入商品编号; if 此种商品多于一件 then 输入商品数量 end if; 打印商品编号、名称、 数量、单价、总价;end for; 打印应收款总数 输入顾客交来的款数 打印交款

22、数与找回款数;b人机交互描述 从use case提取人机交互描述图7-2从用况提取人机交互描述的示例三、如何设计人交互局部1、设计输入与输出1设计输入1确定输入设备2设计输入界面3输入步骤的细化输入步骤的细化输入设备的选择输入信息表现形式的选择(命令,数据)(2设计输出1)确定输出设备2)确定输出的内容和形式3)输出步骤的细化输出设备的选择输出信息表现形式的选择2、命令的组织 不受欢迎的命令组织方式:1一条命令含有大量的参数和任选项2系统有大量命令,不加任何组织和引导命令的组织措施分解与组合1分解:将一条含有许多参数和选项的命令分解为假如干命令步2组合:将根本命令组织成高层命令,从高层命令引向

23、根本命令根本命令:使用一项独立的系统功能的命令。提取后的用况命令步:在执行一条根本命令的交互过程中所包含的具体输入步骤。高层命令:如果一条命令是在另一条命令的引导下被选用的,如此后者称作前者的高层命令。a)线性结构 b 树型结构d 一般网状结构c 半序网状结构图7-3根本命令与其命令的结构图7-4高层命令与其结构 高层命令按功能组织:如文件下有:创建、打开、关闭、打印、删除等。 按子系统组织:如文本编辑子系统、编译自系统。 在两个命令之间通常要输出信息,如图7-5所示。图7-5a表示两个命令步之间不存在这输出信息结构。图7-4b表示连个命令步之间可能存在三种输出信息结构。第一种为反应信息,在一

24、个命令需要较长的时间执行时,应该向用户显示当前命令的情况,给出一个进度;第二中处理结果,当前命令执行的结果可能要向用户显示;第三种提示信息,即对下一步可输入的命令的提示。图7-5c表示两层命令之间的更为复杂的输出信息结构。图7-5命令之间的输出信息结构在建立命令树时,应遵循如下策略:a.把使用最频繁的命令放在前面,按照用户的工作步骤进展排列。b.在命令中发现整体-局部模式,以帮助对命令的组织与分块。c.每层命令的个数应遵循7+2原如此,命令的层次深度尽量要控制在三层以内。3、 用OO概念表达所有的界面成分1每一种窗口对应于一个类。2)在窗口中,按照命令的逻辑层次,部署所需要的元素,如菜单、工作

25、区和对话 框等。窗口中的部件元素对应窗口类的局部类,局部类与窗口类形成聚合关系。 3)发现窗口类间的共性以与部件类间的共性,定义较一般的窗口类和部件类,分别形成窗口类间以与部件 类间的泛化关系。 4)用类的属性表示窗口或部件的静态特征,如尺寸、位置、颜色和选项等。 5)用操作表示窗口或部件的动态特征,如选中、移动和滚屏等。有的操作要涉与到问题域中的类。6)发现界面类之间的联系,在其间建立关联。必要时,进一步地绘制用户与系统会话的顺序图。7)建立界面类与问题域类之间的联系。有些界面对象要与问题域中的对象进展通讯,故要对二者之间的通讯进展设计。 在具体设计时,设计人员应该注意以下几点: (a)人机

26、界面只负责输入与输出和窗口更新这样的工作,并把所有面向问题域局部的请求转发给问题域局部,即在界面对象中不应该对业务逻辑进展处理。 (b)一种常见的作法是,问题域局部的对象不应该主动发起与界面局部对象之间的通讯,而只能对界面局部对象进展响应,也就是说,只有界面局部的对象才能访问问题域局部的对象。通常把界面对象向问题域局部对象传输的信息或发布命令看作是“请求,而把从问题域局部对象向界面局部对象传输的信息看作是“回应或“通知。 (c)尽量减少界面局部与问题域局部的耦合。由于界面是易变的,从易于维护和易于复用的角度出发,问题域局部和界面局部应该是低耦合的。问题域局部人机交互局部图7-6问题域局部与人机

27、交互局部通过接口进展联系 也可以通过在人机交互局部和问题域局部之间增加控制器或协调类的方式解决这种问题,如可采用下面将要讲述的出版-订阅模式,还有一些相关的模式 。例题1:出版-订阅模式观察者模式a=50%b=30%c=20%图7-7用三种方式对一组不断变化的数据进展实时地显示出版者订阅者管理者1111.*有变化时,向管理者发布事件。维护出版者和订阅者间的映射,把出版者发布信息,利用参数通知给订阅者。向管理者订阅事件。图7-8采用发布订阅模式衔接问题域局部和人机交互局部 该模型中,订阅者向发布者订阅所感兴趣的事件,出版者向发布者发布事件,发布者维护出版者和订阅者的映射。当数据变化时,发布者把出

28、版者发布的数据情况利用消息通知给订阅者。订阅者是人机界面模型中的一局部,出版者是问题域中模型中的一局部,发布者是人机交互局部和问题局部之间的协调器。 例题2 用OO概念表达界面成分图7-9两种方式示例图7-10两种复用方式示例在可视化的编程环境下设计工作大为简化,往往不需要建立上面那样的模型。假如有必要建立这样的模型,可以直接使用可视化编程环境或类库所提供的可复用类。在复用时一种方式是直接使用,即把所复用的类标上复用,在类图中直接使用。另一种方式是对复用类进展继承,已进展扩大。如图7-10所示。由于复用类的子类可能要使用祖先类的操作和属性,这样就出现了在图上看不到祖先类的操作和属性。解决问题的方法是,把所需要的祖先类的操作和属性,在标有复用的类中重新列出来,并加上标记,如“,明确这些属性和操作是继承而来的,不需要在本系统中实现,这样做仅仅是为了使用方便。4. 人机界面的设计准如此1易学、易用、操作方便 2尽量保持一致性 3与时提供有意义的反应 4使用户的注意力集中在当前的任务上而不是界面上 5尽量减少用户的记忆 6具有语境敏感的帮助功能 7)减少重复的输入和操作 8)对用户的操作具有容错性 ,如UNDO9)防止灾难性的错误 其它:如艺术性、趣味性、风格、视感等18 / 18

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!