软件结构与实现.ppt_第1页
软件结构与实现.ppt_第2页
软件结构与实现.ppt_第3页
软件结构与实现.ppt_第4页
软件结构与实现.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章 软件结构与实 现 1人机交互技术编写组 内容提要 w窗口系统对交互系统实现的支持 n窗口系统提供设备独立性和资源的共享,在窗口系统,程序 员不用担心输入和输出设备的初始化,应用程序从窗口系统 管理器接收事件请求流,完成相应的交互操作。 w 用户界面管理系统UIMS nUIMS是抽象层次更高的支持交互系统实现的开发环境,为交 互系统实现提供更高层支持。 w 支持复杂人机交互系统的实现的软件体系结构 n包括E-O模型 nSeeheim模型 nMVC模型 n智能体模型 2人机交互技术编写组 7.1窗口系统 w窗口系统强调为程序员提供硬件设备独立性, 交互系统的实现建立在一个抽象的设备上,对 抽象设备的操作通过设备驱动程序转换成具体 的设备上的操作,这可以使交互系统的开发变 得简单,也使交互系统的移植非常方便。 3人机交互技术编写组 7.1窗口系统 w窗口系统为单一输入输出设备建立多个抽象设 备来实现其资源的共享。每个抽象设备都可看 作一个窗口的独立的输入输出设备,窗口系统 为这些设备提供并发控制。从应用的角度看, 每个应用程序独立地对设备进行操作,另一方 面,窗口系统还为每个窗口提供一个抽象显示 设备,这可以通过为每个活动的抽象显示设备 建立一个窗口来实现。 w设备独立性和多任务管理是窗口系统的最重要 的两个特性。 4人机交互技术编写组 7.1.1窗口系统结构 w窗口系统一般有三种结构: n在各个应用程序内部实现和管理多任务,由于每个 应用程序都需要处理复杂的多任务管理,并且移植 起来不方便。 n在操作系统核心集中处理多任务管理,应用程序不 再对多任务进行管理,由于过分的依赖操作系统, 应用程序需要处理因操作系统的不同而引起的差异 。 n多任务的管理可由独立的管理程序进行管理,应用 程序通过调用该管理程序提供的接口来实现对多任 务的管理和设备的独立性操作,该管理程序可以在 不同的操作系统下运行,因而基于此管理程序开发 的交互系统是最容易移植的。 5人机交互技术编写组 一种客户/服务器结构 客户应用程序客户应用程序客户应用程序客户 抽象终端抽象终端 抽象终端 资源管理器 设备驱动程序 服务器 设备 鼠标窗口1 窗口2 窗口n 键盘 图7-1 客户/服务器结构 6人机交互技术编写组 服务器端运行的三部分程序 w资源管理器 n是整个窗口系统的核心,负责多任务的管理,并通 过设备驱动程序来管理外部设备 。 w设备驱动程序 n负责外部设备的驱动,接受输入设备的输入,并将 输入数据转换成统一的格式,通过设备驱动程序实 现设备的独立性 。 w抽象终端 n负责和客户应用程序的接口,对每个应用程序由窗 口管理程序为其分配一个抽象终端。 7人机交互技术编写组 工作方式 w当外部设备产生一个输入请求,如鼠标单击某 一个窗口内的一点,资源管理程序从设备驱动 程序获得鼠标数据,产生鼠标驱动事件,并将 该事件分发给与该窗口相对应的抽象终端,与 抽象终端相对应的应用程序接受事件并进行相 应的处理。 w实现时,客户程序和服务器程序可以在一台机 器上,也可以分布在不同的机器上。 8人机交互技术编写组 7.1.2设计交互应用程序 w在客户/服务器结构中,交互系统的应用程序 通过调用服务器端一个独立的管理程序来管理 多任务和提供设备的独立性,相当于客户-服务 器中结构中的客户。 w交互应用一般来讲是由用户驱动的,即用户从 外部设备上输入数据,应用程序的动作由用户 输入来决定,应用程序可以采用下面的两种控 制流程实现用户的交互。 9人机交互技术编写组 1.应用程序内部事件处理循 环 设备 客户应用程序 开始 读输入 过程输入 退出? 结束 服务器 图7-2事件处理循环 10人机交互技术编写组 事件处理循环的程序代码 wwhile(1) wread_event(myevent); wswitch(myevent.type) wcase type_1: wdo_type1_process(); /*处理对应事件1的 动作*/ wbreak; wcase type_2: wdo_type2_process(); wbreak; w wcase type_n: wdo_typen_process(); wbreak; w w 11人机交互技术编写组 2.事件注册方式 w窗口系统为每一个应用程序建立一个事件处 理中心,事件处理中心负责事件的处理。应 用程序将自己感兴趣的事件处理事先通过登 记注册的方式通知事件处理中心,注册时同 时告诉事件处理中心当事件产生时,应用程 序需要进行的处理(回应过程)。 w当事件处理中心从窗口系统接收一个事件, 分析这个事件属于哪个应用程序,然后把事 件和控制转向该事件注册的回应过程,处理 完后,回应过程把控制返还给事件处理中心 ,事件中心继续接收事件或者请求终止。 12人机交互技术编写组 应用程序 开始 启动通知者 处理事件 读输入 请求回应 退出? 是 否 通知者 图7-3 事件注册方式处理流程图 发送给正确的回调函数 向通知者注册回调函数 结束 13人机交互技术编写组 2.事件注册方式 w这种方式的好处是一般应用程序不需要设计 事件处理循环,只关心应用程序需要处理哪 些交互事件,当事件发生时应用程序如何处 理。当应用程序不需要处理某个事件时,应 用程序还可以随时取消注册。因为只处理注 册的事件,事件处理中心处理事件的效率相 对比较高。Java语言中图形界面的交互就是 采用的这种事件注册方式,下面的程序清单7- 2说明了应用程序如何通知注册事件,事件处 理中心通过什么方式调用应用程序的回调函 数。 14人机交互技术编写组 程序清单7-2 quit.java import java.awt.*; import java.awt.event.*; class Quit extends Frame implements ActionListener Button cancelButton, okButton; public Quit() cancelButton = new Button(“Cancel“); okButton = new Button(“OK“); setLayout(new FlowLayout(); add(cancelButton); add(okButton); addWindowListener(new ProgramTerminator(); cancelButton.addActionListener(this); okButton.addActionListener(this); 15人机交互技术编写组 public void actionPerformed(ActionEvent event) Button clickedButton = (Button) event.getSource(); if (clickedButton = cancelButton) setTitle(“You clicked CANCEL“); else /the event source is okButton setTitle(“You clicked OK“); class ProgramTerminator implements WindowListener public void windowClosing(WindowEvent event) System.exit(0); 16人机交互技术编写组 public void windowActivated(WindowEvent event) public void windowClosed(WindowEvent event) public void windowDeactivated(WindowEvent event) public void windowDeiconified(WindowEvent event) public void windowIconified(WindowEvent event) public void windowOpened(WindowEvent event) public static void main(String args) Quit f = new Quit(); f.setBounds(100,100,200,70); f.setVisible(true); 17人机交互技术编写组 2.事件注册方式 w在上面的程序中,当应用程序创建窗口对象时,通 过addWindowListener方法通知事件处理中心该应 用程序需要处理窗口关闭事件,并且当用户用鼠标 器单击窗口右上角的小关闭按钮时,事件处理程序 会自动调用ProgramTerminator的一个方法,结束 当前的应用程序,在该程序中还用到了交互系统开发 软件包中的交互对象Button,在7.2节中将仔细讨论 交互系统开发软件包, 图7-4说明了程序初始的显 示画面。 图7-4 Quit.java运行结果 18人机交互技术编写组 7.2交互系统开发软件包 w一般的窗口系统,输入和显示是分离的。 w 交互系统开发软件包在支持窗口管理的基础上增加 了另一种抽象,它把输入和输出的行为结合起来。 w从用户角度讲,图形用户界面WIMP非常重要的特征 就是将输入和输出行为与屏幕上的一个独立的对象连 接在一起。 w鼠标自硬件设备的输入(鼠标的移动)与显示屏上鼠 标的输出(小的箭头光标或窗口内坐标的位置)是分 离的。 w屏幕上光标的移动和鼠标的物理运动密切相关,即当 鼠标在桌面上移动时,屏幕上的光标也跟着移动。 w视觉上的光标与物理的设备都称为“鼠标” 。 19人机交互技术编写组 交互系统开发软件包 w图7-5说明了如何将输入和输出通过一个按钮 联系在一起。 w当用户移动鼠标到按钮时,屏幕的光标变换形 状,提示用户可以单击鼠标,以选中按钮,如 果此时用户按鼠标上的按键,屏幕上的按钮变 亮,就像按下键盘上的某些键一样,让用户感 到确实按下了屏幕上的按钮,释放鼠标键,屏 幕上的按钮变暗,就像真正释放屏幕上的按钮 。 20人机交互技术编写组 按钮按钮按钮按钮 单击 按钮 移动单击释放移动 图7-5 按钮交互对象行为 21人机交互技术编写组 输入和输出的融合 w一般来说,窗口系统提供了上述简单的输入和输出的 融合,复杂情况下输入输出的融合需要程序员来实现 。 w为了帮助程序员实现输入和输出融合,需要在窗口系 统之上,提供更高层的对交互系统实现的支持交 互系统开发软件包。 w交互系统开发软件包为程序员提供一组已经定义好的 交互对象,也称为交互界面元素或窗口组件,程序员 可以使用这些组件编写自己的应用程序。 w交互对象有预先定义好的行为,用户可以根据自己的 需要选择使用。 22人机交互技术编写组 对象之间的关系 w为了提供交互对象灵活性,交互对象可以 根据用户的需要进行定制,程序员可以根 据自己特殊的要求调用交互对象。 w例如:当创建一个特别的按钮时,按钮上 的标签可以是程序员设置的一个参数. w较复杂的交互对象可以由较小的、简单的 对象构建,整个应用可以看作是一组交互 对象的集合,这些对象存在着一定的关系 ,交互对象的行为描述了整个应用的语义 。 23人机交互技术编写组 交互对象和交互系统开发软件包的 特性 w这些组件可以被定义为一类交互对象, 这类交互对象可以在一个应用中多次激 活,不同的实例可以有微小的区别。 w复杂的交互对象可以由简单的交互对象 构建。 w实例和继承是面向对象程序设计的基石 ,类可以看作交互对象的模板。 24人机交互技术编写组 交互系统开发软件包的面向对象 特性 w交互系统开发软件包是面向对象的,但这并不 意味着开发的应用程序所需要的语言必须支持 面向对象的概念,也可以使用非面向对象的程 序设计语言。 w程序员通过设置不同的实例属性的值来调整交 互对象的行为和外观,这些属性可以在实例程 序编译之前设置,如在程序Quit.java中两个按 钮交互对象cancelButton 和 okButton,这些按 钮的显示文本在程序编译时已经设定。 25人机交互技术编写组 Java语言中的交互系统开发软件 包 w抽象窗口工具包 AWT(Abstract Windowing Toolkit) w它将交互对象,诸如:按钮、菜单、对话框等 映射到相应的Java 的类Button、 Menu、 Dialog w程序员要么直接使用这些类,要么使用它们的 子类。 w从某种意义上讲,这些类规范了交互对象的行 为。 w利用子类可以很容易增设新的属性 26人机交互技术编写组 JAVA软件包的事件处理机制 w在AWT1.0,程序员需要通过继承按钮的子类 来指定按钮的行为 w从AWT1.1以后,程序员使用一种类似于传统 的回调过程的方法来指定按钮的行为 w但这里注册的不再是一个回调函数,而是一个 事件监听对象,如在Quit.Java中的用于处理窗 口事件的ProgramTerminator的一个实例。 27人机交互技术编写组 7.3 用户界面管理系统UIMS w比软件包更高层次的是用户界面管理系统 UIMS(User Interface Management Systems) wUIMS支持用户界面的表示、设计、实现、执 行、评估和维护 w能够为用户提供一致的人机界面,以极其友好 的方式与用户进行人机交互 w并能使开发者几乎随心所欲地使用此开发工具 进行软件开发 28人机交互技术编写组 UIMS w一个支持交互系统开发的UIMS的概念结 构,该结构把应用程序的语义与应用程 序的表现部分分开; w用来实现分离应用和表现,并保留应用 程序和表示形式之间的内在关系的技术 w支持一个运行的交互系统的管理、实现 和评估的技术。 29人机交互技术编写组 7.3.1 UIMS作为一个概念结 构 w对话的独立性是人机交互研究领域的主 要问题,主要是强调业务(应用程序的 语义)与提供给用户的界面的分离 w在第六章中从界面的表示模型的角度讨 论了各种表示模型对对话独立性的支持 情况 w本节将从系统结构的角度探讨如何实现 对话的独立性。 30人机交互技术编写组 对话的独立性的优点 w(1) 可移植性: n因为应用程序的开发与依赖设备的界面的分 离,使得应用程序可以用于不同的系统。 w(2)可重用性: n对话的独立性增加了元素可重用性,这样可 以节省开发费用。 31人机交互技术编写组 对话的独立性的优点 w(3)界面的多样性: n为了增强应用程序界面的灵活性,对应同一个应用 可以开发不同形式、不同风格的界面,以适应不同 用户和不同环境的需求。 w(4)定制界面: n交互界面可以按设计员和用户的习惯方式和风格进 行设计,以提高程序开发和使用的效率。 32人机交互技术编写组 应用和界面的关系 w对话的独立性要求应用和界面的分离, 但是两者存在密切的联系 w界面表现是为应用服务的,应用所需要 的外部数据就是用户通过界面输送的 w应用内部的数据和状态也是通过界面表 现展现给用户的 33人机交互技术编写组 应用和界面的关系 w在一个复杂的交互任务完成后,一般界 面表现都要和应用进行通讯 w甚至在交互任务完成的过程中也需要和 应用进行通讯 w界面需要从应用中获取要显示的物体的 数据 34人机交互技术编写组 交互系统中包含三个主要元素 w应用层 w表现层 w对话控制(dialog control) n其中对话控制负责应用程序和表现二者之间通信 n在事件注册方式 ,在应用程序外部实现对话控制 n多数UIMS采用外部对话控制,因为这样能够更好支 持应用程序和界面的分离。 35人机交互技术编写组 7.3.2 UIMS的表示方法 wUIMS的表示方法主要包含人机界面的规 格说明和它与人的因素、应用程序及其 数据结构的联系等。 wUIMS逻辑结构模型中几个主要元素的表 示方法,其中除了对话控制的表示方法 比较成熟、研究成果丰富外,其它层次 的表示方法尚有待发展。 36人机交互技术编写组 表现层的表示方法 w表现层的表示方法主要涉及用户输入输 出信息的处理,需要解决的问题: n处理和表示图形的输入输出; n适应多媒体的需要,将输入输出信息扩充到 视频、语音、动画、仿真等; n适应智能人机界面规格说明的需要,即信息 流的内外映射中如何包含简单的基于人机界 面设计规格的决策,使一对一映射的关系扩 充到多对一、多对多的映射关系。 37人机交互技术编写组 对话控制的表示方法 w基于语言的表示方法 n界面设计者用一种专门的人机界面描述语言 (user interface design language , UIDL) 来说明界面,语言的主要任务是说明界面对 话控制的语法,即输入输出动作的合法顺序 38人机交互技术编写组 w人机界面描述语言的多种形式: n菜单网络,是最简单的表示方法,可以支持 菜单的层次或网络结构。菜单代表用户在某 一时刻可能采取的所有输入。菜单项目和下 一个显示的菜单之间的联系模拟应用程序对 先前输入的响应。 n上下文无关文法,使用上下文无关文法来描 述用户和程序之间的对话,且大多以编译器 为基础,上下文无关文法如BNF,可以很好 描述基于命令的界面,可是不太适合描述基 于图形的交互。 对话控制的表示方法 39人机交互技术编写组 对话控制的表示方法 w人机界面描述语言的多种形式(续): n状态转换网络,在第六章已经详细介绍了该 表示语言 n事件语言,在事件语言中,输入数据被认为 是事件并立即送事件处理器这些处理器能 产生输出事件,改变系统的内部状态,或调 用应用子程序,类似事件对象模型。 n面向对象语言,提供一个面向对象的框架, 设计者在该框架内编写界面程序 40人机交互技术编写组 对话控制的表示方法 w基于图形的表示方法 n基于图形的UIMS让用户或至少部分地让用 户使用鼠标器直接将对象放到屏幕上来定义 界面,它把界面的图示表示作为最重要的一 个方面,而图形工具是说明这种表示的最合 适的方法。 w基于应用语义过程的表示方法 n从应用语义过程规格说明自动生成界面,并 且让设计者修改界面以改进它的性能。 41人机交互技术编写组 应用层的表示方法 w目前应用界面模型和应用层的表示方法很不成 熟,仍旧处于发展初期。作为可供使用的实用 界面模型,至少必须包含如下三个内容: n与用户和人机界面有关的应用数据结构的说明; n人机界面调用的应用子程序的说明,例如子程序名 、运算对象等,这实际上是定义了人机界面和应用 程序之间的界面 ; n必须列举应用程序对用户的限制,从而使人机界面 排除许多可能引起语义错误的操作,避免对应用程 序的破坏。 42人机交互技术编写组 应用层的表示方法 w对象算子表示 n对象对应于应用程序的数据结构 n算子对应于人机界面调用的应用子程序。 w基于关系和一阶逻辑的表示 n关系用来表示应用程序中的数据结构, n而一阶逻辑模型用来表示应用子程序。 43人机交互技术编写组 UIMS总结 w交互系统的三个主要元素的每一种元素 说明方法都有几种不同的形式,分别有 自己的特性和不同的适用性 w在一个UIMS中可以使用不同的表示方法 ,从而为程序员设计交互系统提供更多 的方便和灵活性。 44人机交互技术编写组 7.4交互系统的软件结构 w为了支持复杂的人机交互系统的实现, 从应用和界面的耦合程度来讲,交互系 统常采用这样三种方式的结构: n界面和应用明确的分离,如Seeheim模型, MVC模式; n界面行为和应用语义处理不清晰的紧耦合, 许多直接基于交互系统开发软件包开发应用 系统都这种结构 n介于上述两种模式之间的折中模式,如PAC 模型。 45人机交互技术编写组 7.4.1 Seeheim模型 w该结构是1985年在德国的Seehei举行的 国际人机界面管理系统研讨论上首先提 出的 表现部件对话控制应用接口 应用程序 语法 最终用户 词法语义 图7-6 Seeheim 模型 46人机交互技术编写组 Seeheim模型 wSeeheim模型基于对话独立性的概念,即 界面表现与应用通过一个控制单元实现 松散耦合 w这一控制单元定义了界面表现与应用的 关系,传输运行时往来的数据和控制 wSeeheim模型表明了人机交互中应该出现 的逻辑部件,这些部件有不同的功能及 不同的描述方法 47人机交互技术编写组 表现部件 w一般来说,表现部件处理用户界面的词法级内 容,将输入输出数据的内部表示转送给对话控 制部件。 w表现部件负责人机交互的外部表现: n屏幕管理,如屏幕窗口大小布局等; n图形生成,如各种交互对象的绘制; n输入设备管理,如对键盘、鼠标等设备的管 理; 48人机交互技术编写组 表现部件 w表现部件负责人机交互的外部表现(续): n词法反馈,简单的与应用无关的信息反馈, 如简单的输入数据的错误检查; n交互技术,一些特殊的交互的技术,如橡皮 筋,网格,方向约束等; n将输入数据(或用户动作)转换成内部形式 。 49人机交互技术编写组 对话控制 w对话控制部件是用户和应用程序之间的协调器 ,控制两者对话的形式。 w用户通过表现部件提出请求,这些请求及数据 的词法元素,经过对话控制部件的检验,传输 给应用程序中对应的例程; w应用程序将对请求的回答及其它新的数据请求 传输给表现部件的对应部分。 w在对话控制中应维持一定的状态,以执行对输 入输出活动的控制或协调。 50人机交互技术编写组 应用接口 w应用接口部件是从界面的角度对应用程序的表 述,是为了实现界面和应用程序通讯而定义的 一组协议: n应用程序所维护的数据结构的描述(或数据 对象)。 n界面可使用的与应用程序相关的过程或方法 n应用程序的使用限制,它使界面可以检查输 入的语义合法性 51人机交互技术编写组 三个部件的关系 在界面设计时,这三部分可对应于词法、语法及 语义阶段。 w在表现部件和对话控制部件之间的信息流是输入 输出的词法元素,控制流则是对话控制部件在表现 部件上所施加的控制 表现部件对话控制应用接口应用程序 语法 最终用户 词法语义 图7-6 Seeheim 模型 52人机交互技术编写组 三个部件的关系 w对话控制部件与应用接口间的信息流是有关输 入给应用的数据或从应用输出的数据,其控制 流则是有关状态的控制和协调。 w对话控制部件主要在表示部件和应用接口之间 进行格式转换、控制状态的转换等。 53人机交互技术编写组 Seeheim模型的优缺点 w由于它基于对话独立性原则,因而能使界面设计的结 构比较清晰,适合界面与应用程序分别或并行执行。 w但这种模型只是人机对话系统的一个“执行”模型,并 不能反映软件的整个生存期。 w其次它对于直接操作的图形用户界面设计并不是很合 适,主要是因为直接操作需要一致的、连续的语义反 馈以及相应用户的动作。 wSeeheim 模型没有显式的说明怎样由小的交互元素生 成大的复杂的元素。 54人机交互技术编写组 Seeheim模型的改进 w为了改进Seeheim模型,可以将用户分成两部分 : n交互对象库:其中交互对象库是一组界面元素及其操作 n对话管理部件:话管理部件包括对话控制机制及数据类 型 最 终 用 户 交互对象库对话管理部件 应 用 程 序 图7-7 改进的Seeheim模型 55人机交互技术编写组 7.4.2 MVC模型及Struts结构 wMVC(model-view-controller)模型和实现 MVC模型的Struts结构可以改进Seeheim 模型 的缺点。 wMVC模型最初是在Smalltalk-80中被用来构建 用户界面的,是目前广泛流行的一种软件设计 模式。 w在J2EE应用体系结构中,MVC主要适用于交互 式的Web应用,尤其是存在大量页面及多次客 户访问及数据显示。 56人机交互技术编写组 1. MVC模型 wMVC把一个应用的输入、处理、输出流 程按照模型 (model)、视图(View)和 控制(Controller)的方式进行分离,形 成模型层、视图层、控制层三个层次。 57人机交互技术编写组 1. MVC模型 模型 视图 控制 用户 显示 键盘 鼠标 图7-8 MVC模型 58人机交互技术编写组 模型 (model) w模型负责业务流程/状态的处理以及业务规则 的制定 n业务流程的处理过程对其它层来说是透明的,模型 接受视图请求的数据,并返回最终的处理结果。 n业务模型的设计可以说是MVC最主要的核心,模型 包含完成任务所需要的所有的行为和数据。 nMVC并没有提供模型的设计方法,而只告诉你应该 组织管理这些模型,以便于模型的重构和提高重用 性。 59人机交互技术编写组 视图(View) w视图代表用户交互界面,对于Web应用来说, 可以概括为HTML界面,但有可能为XHTML、 XML和Applet。 n一个应用可能有很多不同的视图,MVC设计模式对 于视图的处理仅限于视图上数据的采集和处理,以 及用户的请求,而不包括在视图上的业务流程的处 理。 n业务流程的处理交给模型(Model)处理。 n如一个订单的视图只接受来自模型的数据并显示给 用户,以及将用户界面的输入数据和请求传递给控 制和模型。 60人机交互技术编写组 控制(Controller) w控制器将模型映射到界面中,处理用户 的输入,每个界面有一个控制器。 n是一个接收用户输入、创建或修改适当的模型对象 并且将修改在界面中体现出来的状态机。 n在需要时还负责创建其它的界面和控制器。 n决定哪些界面和模型组件在某个给定的时刻应该是 活动的,负责接收和处理用户的输入,来自用户输 入的任何变化都被从控制器送到模型 。 61人机交互技术编写组 MVC的目的 wMVC的目的是增加代码的重用率,减少 数据表达、数据描述和应用操作的耦合 度。 w使得软件可维护性,可修复性,可扩展 性,灵活性以及封装性大大提高。 w由于数据和应用的分开,在新的数据源 加入和数据显示变化的时候,数据处理 也会变得更简单。 62人机交互技术编写组 MVC的优点 w可以为一个模型在运行时同时建立和使用多个 视图 w视图与控制器的可接插性,允许更换视图和控 制器对象,而且可以根据需求动态地打开或关 闭、甚至在运行期间进行对象替换 w模型的可移植性,因为模型是独立于视图的, 所以可以把一个模型独立地移植到新的平台工 作 63人机交互技术编写组 MVC模型的不足 w增加了系统结构和实现的复杂性。 n对于简单的界面,严格遵循MVC,使模型、视图与 控制器分离,会增加结构的复杂性,并可能产生过 多的更新操作,降低运行效率 w视图与控制器间的过于紧密的连接。 n视图与控制器是相互分离、但又确实联系紧密的部 件,视图没有控制器的存在,其应用是很有限的 w视图对模型数据的低效率访问。 n依据模型操作接口的不同,视图可能需要多次调用 才能获得足够的显示数据 64人机交互技术编写组 2 .Struts结构 wStruts的体系结构实现了MVC模式的概念 ,它将这些概念映射到web应用程序的组 件和概念中。 65人机交互技术编写组 Struts结构 Sruts-config.xml 控制器 Servlet 视图 Jsp 客户浏览器 商业逻辑 行为 模型请求 状态 事件 HTTP 请求 HTTP 请求 前进 发送 收到 更新 66人机交互技术编写组 Struts结构对MVC模型的实 现 w视图(View)JSP页面和表示组件 n基于Struts的应用程序中的视图部分通常使 用JSP技术来构建。 n每一视图都是采用了定制标签库的JSP页面 ,这些定制标签库由Struts Framework提供 。 n全部表单元素都是用定制标签编码的,所以 这些页面能够很方便地同控制器进行交互 n每个表单都通过映射JSP到servlet的请求这 一方式指向控制器的特定入口点。 67人机交互技术编写组 Struts结构对MVC模型的实 现 w控制器(Controller)ActionServlet和 ActionMapping n应用程序的控制器从客户端接收请求,决定执行什 么业务逻辑,然后将产生下一步用户界面的责任委 派给一个适当的视图组件。 n在Struts中,控制器的基本组件是ActionServlet类的 servlet。这个servlet通过定义一组映射(由Java接 口ActionMapping描述)来配置。 n每个映射定义一个与所请求的URI相匹配的路径和 一个 Action类(一个实现Action接口的类)完整的 类名,这个类负责执行预期的逻辑,然后将控制分 派给适当的视图组件来创建响应。 68人机交互技术编写组 Struts结构对MVC模型的实 现 w模型(model)系统状态和商业逻辑 JavaBeans n在struts中,模型分为两个部分:系统的内 部状态、可以改变状态的操作(事务逻辑) 。内部状态通常由一组ActinForm JavaBean 表示。 n根据设计或应用程序复杂度的不同,这些 Bean可以是自包含的并具有持续的状态,或 只在需要时从某个数据库获得数据。 69人机交互技术编写组 Struts的特点 wStruts是开放源代码的软件,开发者能更深入 的了解其内部实现机制。 wStruts的优点主要集中体现在两个方面: nTaglib:Taglib是Struts的标记库,灵活使用,能大 大提高开发效率。 n页面导航:通过一个配置文件,可把握整个系统各 部分之间的联系描述出来,这对于后期的维护很有 好处。 wStruts已逐步越来越多运用于商业软件,是一 种非常优秀的J2EE MVC实现方式。 70人机交互技术编写组 Data Data Data Database Vi Read Dispatch Database Access Business LogicLoginBO.java LoginDAO.java LoginAction Struts-config HTTP Forword Login.jsp LoginAc Success.java struts演示的基本构架和数据流 程 71人机交互技术编写组 7.4.3 E-O模型 wE-O模型的事件、对象类型的类型和组织 方式 w介绍基于E-O模型的软件结构。 72人机交互技术编写组 E-O模型的逻辑结构 图7-10 E-O模型的逻辑结构 应用 应用接口API 事件 目标管理子系统 事件管理子系统(EMS)目标管理子系统(OMS) 设备管理(驱动)模块(DMM) 用户 73人机交互技术编写组 E-O模型组成 w设备管理模块(Device Management Module, DMM) n提供于各种交互设备的接口,并实现设备无关特性 w事件管理子程序(Event Management Subsystem, EMS) n读取输入设备的输入信息形成事件并进行统一的管 理, n将反馈信息的事件解释为适当的输出指令并传给输 出设备 w对象管理子系统(Object Management Subsystem, OMS) n创建、装载、保护用户界面中各类对象,并对对象 进行管理 74人机交互技术编写组 E-O模型组成 w事件对象管理子系统(Event-Object Management Subsystem, EOMS) n实现事件目标的整合,按适当的策略控制事 件在各目标节点的流动,以形成和维持人机 交互的过程,是整个用户界面系统的核心 75人机交互技术编写组 表单UIMS对鼠标事件的响应 用户点击了一下鼠标后,表单UIMS就获得了用户的鼠标动作和鼠标在屏幕上的一个坐标(x, y)。 对每个表单 if (坐标落在了某个表单区域内部) 显示该表单及表单内包含的所有界面元素,其余表单按照原来的先后顺序排列; 对表单内的每个的单位界面元素 if (坐标落在了某个单位界面元素的区域内部) then 聚焦单位界面元素; if (选中的单位界面元素添加了特定鼠标事件的响应) then 将控制权交给单位界面元素交互对象,执行该事件要执行的任务,返回; if (选中的表单添加了特定鼠标事件的响应) then 将控制权交给表单交互对象,执行该事件要执行的任务,返回; 所有表单失去焦点,聚焦到系统要显示的默认界面; A B By Bx Am An 76人机交互技术编写组 智能体(Agent) w智能体的组成 n事件接收单元:负责事件的接收; n事件发送单元:负责事件的发送; n记忆单元:维持智能体内部的状态; n处理单元:周而复始地处理输入事件、更新状态、 产生新的事件或改变它所感兴趣的输入事件类型 w智能体特征 n自发性(Autonomy):能控制其内部状态,产生 用来实现目标的行为 n通信性(Communicability):智能体之间可以进行 信息交换 n反应性(Reactivity):可感知并影响其周围环境 n协作性(Cooperation):可与其他智能体合作共同 完成一项任务 77人机交互技术编写组 智能体的分类 w认知型智能体(Cognitive Agent) n具有丰富的推断和决定能力及类人的思维能力 w反应型智能体(Reactive Agent) nUser Agents nAgent Guides nAutomous Agents nAnthropomorphic Agents nMulti-agent Systems 78人机交互技术编写组 用智能体方法解决任务的特 点 w适应性(Adapting),具有一定的适应性和灵活性, 可针对不同用户的特点动态改变其表现来“投其所好 ” w探究性(Researching),任务可以非精确的制定,可 以从模糊输入中寻求解决问题的答案 w演示性(Demonstrating),需要通过实际演示来传授 用户知识 w自发性(Autonomy),任务本身不必要频繁地与用户 交互,很适合于授权执行 w异步性(Asynchrony),由于处理时间和网络延迟等 因素,任务的发起到完成之间

温馨提示

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

评论

0/150

提交评论