您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 软件设计与体系结构第6讲(面向对象的设计)
1面向对象的设计——中人机交互部分X-Window人机交互部分MS-Windows把人机交互部分作为系统中一个独立的组成部分,进行分析和设计,有利于隔离界面支持系统的变化对问题域部分的影响。什么是人机交互部分人机交互部分的设计构件部署如何分析人机交互部分——需求分析对使用系统的人进行分析——以便设计出适合其特点的交互方式和界面表现形式;对人和机器的交互过程进行分析——核心问题是人如何命令系统,以及系统如何向人提交信息。1、分析与系统交互的人——人员参与者人对界面的需求,不仅在于人机交互的内容,而且在于他们对界面表现形式、风格等方面的爱好。——前者是客观需求,对谁都一样;后者是主观需求,因人而异。(1)列举所有的人员参与者(2)调查研究(3)区分人员类型(4)统计(或估算)各类人员的比例(5)了解使用者的主观需求(6)按照一定的准则进行折中与均衡人机交互部分的设计、从usecase分析人机交互通常用况(usecase)的构成1)参与者的行为和系统行为按时序交替出现,左右分明。形成交叉排列的段落。2)每个段落至少含有一个输入语句或输出语句;3)有若干纯属参与者自身或系统自身的行为陈述;4)可能包含一些控制语句或括号。抽取方法:删除所有与输入、输出无关的语句和不再包含任何内容的控制语句与括号,剩下的就是对一个参与者(人)使用一项系统功能时的人机交互描述。人机交互部分的设计收款员收款(usecase)输入开始本次收款的命令;作好收款准备,应收款总数置为0,输出提示信息;for顾客选购的每种商品do输入商品编号;if此种商品多于一件then输入商品数量endif;检索商品名称及单价;货架商品数减去售出数;if货架商品数低于下限then通知供货员请求上货endif;计算本种商品总价并打印编号、名称、数量、单价、总价;总价累加到应收款总数;endfor;打印应收款总数;输入顾客交来的款数;计算应找回的款数,打印以上两个数目,收款数计入账册。(a)一个usecase的例子收款员收款(人机交互)输入开始本次收款的命令;输出提示信息;for顾客选购的每种商品输入商品编号;if此种商品多于一件then输入商品数量endif;打印商品编号、名称、数量、单价、总价;endfor;打印应收款总数输入顾客交来的款数打印交款数及找回款数;(b)人机交互描述从usecase提取人机交互描述人机交互部分的设计•易学、易用、操作方便•尽量保持一致性•及时提供有意义的反馈•使用户的注意力集中在当前的任务上而不是界面上•尽量减少用户的记忆•具有语境敏感的帮助功能•减少重复的输入和操作•对用户的操作具有容错性,如Undo•防止灾难性的错误•其它:如艺术性、趣味性、风格、视感等人机交互部分的设计如何设计人机交互部分——人机界面的设计准则一、输入与输出设计(1)输入的细化①确定输入设备②设计输入界面③输入步骤的细化(2)输出的细化①确定输出设备②确定输出的形式和内容③输出步骤的细化人机界面的OO设计人机交互部分的设计二、命令的组织不受欢迎的命令组织方式:(1)一条命令含有大量的参数和任选项(2)系统有大量命令,不加任何组织和引导命令的组织措施——分解与组合(1)分解:将一条含有许多参数和选项的命令分解为若干命令步(2)组合:将基本命令组织成高层命令,从高层命令引向基本命令基本命令:使用一项独立的系统功能的命令。(提取后的用况)命令步:在执行一条基本命令的交互过程中所包含的具体输入步骤。高层命令:如果一条命令是在另一条命令的引导下被选用的,则后者称作前者的高层命令。人机交互部分的设计(a)线性结构(b)树型结构(c)半序网状结构(d)一般网状结构基本命令及其命令步的结构人机交互部分的设计高层命令及其结构按功能组织:如文件下有:创建、打开、关闭、打印、删除等。按子系统组织:如文本编辑子系统、编译自系统。人机交互部分的设计反馈信息:需较长时间执行命令。处理结果,可能不需要。提示信息:对下一步可输入的命令的提示。人机交互部分的设计在建立命令树时,应遵循如下策略:把使用最频繁的命令放在前面,按照用户的工作步骤进行排列。在命令中发现整体-部分模式,以帮助对命令的组织与分块。每层命令的个数应遵循7+2原则,命令的层次深度尽量要控制在三层以内。人机交互部分的设计、选择界面支持系统(窗口系统、图形用户界面、可视化编程环境)2、设计报表及报告.对要生成的报表和报告格式等进行设计。每一种报表或报告应对应于一个类。3、设计诸如安全/登录、设置和业务功能之类的窗口。每一种窗口对应于一个类。4、在窗口中,按照命令的逻辑层次,部署所需要的元素,如菜单、工作区和对话框等。窗口中的部件元素对应窗口类的部分类,部分类与窗口类形成聚合关系。5.发现窗口类间的共性以及部件类间的共性,定义较一般的窗口类和部件类,分别形成窗口类间以及部件类间的泛化关系。6.用类的属性表示窗口或部件的静态特征,如尺寸、位置、颜色和选项等。7.用操作表示窗口或部件的动态特征,如选中、移动和滚屏等。有的操作要涉及到问题域中的类。8.发现界面类之间的联系,在其间建立关联。必要时,进一步地绘制用户与系统会话的顺序图。三、用OO概念表达所有的界面成分*人机交互部分的设计建立界面类与问题域类之间的联系。有些界面对象要与问题域中的对象进行通讯,故要对二者之间的通讯进行设计。在具体设计时,设计人员应该注意以下几点:(a)人机界面只负责输入与输出和窗口更新这样的工作,并把所有面向问题域部分的请求转发给问题域部分,即在界面对象中不应该对业务逻辑进行处理。(b)一种常见的作法是,问题域部分的对象不应该主动发起与界面部分对象之间的通讯,而只能对界面部分对象进行响应,也就是说,只有界面部分的对象才能访问问题域部分的对象。通常把界面对象向问题域部分对象传输的信息或发布命令看作是“请求”,而把从问题域部分对象向界面部分对象传输的信息看作是“回应”或“通知”。(c)尽量减少界面部分与问题域部分的耦合。由于界面是易变的,从易于维护和易于复用的角度出发,问题域部分和界面部分应该是低耦合的。也可以通过在人机交互部分和问题域部分之间增加控制器或协调类的方式解决这种问题,如可采用下面将要讲述的出版-订阅模式,还有一些相关的模式人机交互部分的设计问题域部分人机交互部分例题:出版-订阅模式(观察者模式)解决问题域中的对象对界面层对象的访问问题。出版者订阅者管理者1111..*有变化时,向管理者发布事件。维护出版者和订阅者间的映射,把出版者发布信息,利用参数通知给订阅者。向管理者订阅事件。人机交互部分的设计0102030405060708090第一季度第二季度第三季度第四季度东部西部北部a=50%b=30%c=20%(观察者)模式用于定义对象间的一对多的依赖关系,当一个对象发生变化并对外发布消息时,所有依赖它的对象都将得到通知并可进行更新。后一句话中的那组对象是观察者,它们要在发布消息的对象中进行登记(订阅),以便在发布消息时能找到它们。该模式也称为发布-订阅(Publish-Subscribe)模式。采用观察者模式,要在发布消息的对象中设立增减观察者对象的操作,对于观察者对象要建立一个统一的用于接收消息的接口。益处:观察者发生变化时,只须在发布消息的对象中增减对象标识即可,而不需进行其他改动人机交互部分的设计什么是控制驱动部分控制流——进程(process)或线程(thread)的别称有多个任务(控制流)并发执行的系统,称作多任务系统或并发系统。大量的系统都是并发系统(多任务系统),例如:·对若干台设备进行实时控制的系统·多用户系统·有多个子系统并发工作的系统·运行有多个进程或线程的单(多)处理机系统·网络环境下运行的含有多进程的软件系统……控制驱动部分的设计为了描述问题域固有的并发行为,表达实现所需的设计决策,需要在OOD部分对控制驱动部分进行建模。控制流驱动部分,用于定义和表示并发系统中的每个控制流。——用主动对象表示每个控制流(进程、线程)——所有的主动类构成控制流驱动部分控制驱动部分的设计、进程进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行的过程。在大多数操作系统中(如Windows和Unix),每个程序都在它自己的地址空间里作为一个进程运行。进程既是处理机的分配单位,也是其它计算机资源的分配单位。在一般情况下,一台计算机上的各进程竞争这台计算机上的资源。控制驱动部分的设计控制流2、线程在一个进程内部可定义一些能够分别占用处理机,而且要同时进行计算的执行单位,这样的每一个单位就是一个线程。线程驻留在进程内部,并在进程的地址空间内部运行,由进程进行管理。在一个进程中的所有线程,共享该进程所获得的资源;对于处理器资源,每个线程是一个独立的分配单位。、控制流在面向对象中,用一个主动对象表示一个独立的控制流,该对象驱动进程或线程,也即每个控制流都以一个表示独立的进程或线程的主动对象为根。(1)在顺序系统中,只有一个控制流。这意味着在一个时间点有且仅有一件事情在发生。当一个顺序程序开始时,控制处于程序的开头,操作一个接一个地被执行。(1)消息是向对象发出的操作请求。(2)消息都是同步的。——接收者执行消息所请求的操作。——发送者等待消息处理完毕再继续执行。(3)每个消息只有唯一的接收者。并发系统的示意图控制线程内部同顺序系统控制线程之间情况复杂得多(1)消息有多种用途(2)消息有同步与异步之分——接收者对消息有不同响应方式——发送者对消息处理结果有不同期待方式(3)消息的接收者可能不唯一主动对象A主动对象B被动对象C被动对象D被动对象E任务Task1线程Ta控制线程内部的消息控制线程之间的消息控制点返回任务Task2线程Tb(2)在并发系统中,存在多个控制流。既然每个控制流都以一个表示进程或线程的主动对象为根,这意味着:控制流的创建与撤消的时机分别为:•创建一个主动对象
本文标题:软件设计与体系结构第6讲(面向对象的设计)
链接地址:https://www.777doc.com/doc-3392663 .html