软件结构与实现.ppt
《软件结构与实现.ppt》由会员分享,可在线阅读,更多相关《软件结构与实现.ppt(89页珍藏版)》请在三一办公上搜索。
1、人机交互技术编写组,1,第7章 软件结构与实现,人机交互技术编写组,2,内容提要,窗口系统对交互系统实现的支持窗口系统提供设备独立性和资源的共享,在窗口系统,程序员不用担心输入和输出设备的初始化,应用程序从窗口系统管理器接收事件请求流,完成相应的交互操作。用户界面管理系统UIMSUIMS是抽象层次更高的支持交互系统实现的开发环境,为交互系统实现提供更高层支持。支持复杂人机交互系统的实现的软件体系结构包括E-O模型Seeheim模型MVC模型智能体模型,人机交互技术编写组,3,7.1窗口系统,窗口系统强调为程序员提供硬件设备独立性,交互系统的实现建立在一个抽象的设备上,对抽象设备的操作通过设备驱
2、动程序转换成具体的设备上的操作,这可以使交互系统的开发变得简单,也使交互系统的移植非常方便。,人机交互技术编写组,4,7.1窗口系统,窗口系统为单一输入输出设备建立多个抽象设备来实现其资源的共享。每个抽象设备都可看作一个窗口的独立的输入输出设备,窗口系统为这些设备提供并发控制。从应用的角度看,每个应用程序独立地对设备进行操作,另一方面,窗口系统还为每个窗口提供一个抽象显示设备,这可以通过为每个活动的抽象显示设备建立一个窗口来实现。设备独立性和多任务管理是窗口系统的最重要的两个特性。,人机交互技术编写组,5,窗口系统结构,窗口系统一般有三种结构:在各个应用程序内部实现和管理多任务,由于每个应用程
3、序都需要处理复杂的多任务管理,并且移植起来不方便。在操作系统核心集中处理多任务管理,应用程序不再对多任务进行管理,由于过分的依赖操作系统,应用程序需要处理因操作系统的不同而引起的差异。多任务的管理可由独立的管理程序进行管理,应用程序通过调用该管理程序提供的接口来实现对多任务的管理和设备的独立性操作,该管理程序可以在不同的操作系统下运行,因而基于此管理程序开发的交互系统是最容易移植的。,人机交互技术编写组,6,一种客户/服务器结构,图7-1 客户/服务器结构,人机交互技术编写组,7,服务器端运行的三部分程序,资源管理器是整个窗口系统的核心,负责多任务的管理,并通过设备驱动程序来管理外部设备。设备
4、驱动程序负责外部设备的驱动,接受输入设备的输入,并将输入数据转换成统一的格式,通过设备驱动程序实现设备的独立性。抽象终端负责和客户应用程序的接口,对每个应用程序由窗口管理程序为其分配一个抽象终端。,人机交互技术编写组,8,工作方式,当外部设备产生一个输入请求,如鼠标单击某一个窗口内的一点,资源管理程序从设备驱动程序获得鼠标数据,产生鼠标驱动事件,并将该事件分发给与该窗口相对应的抽象终端,与抽象终端相对应的应用程序接受事件并进行相应的处理。实现时,客户程序和服务器程序可以在一台机器上,也可以分布在不同的机器上。,人机交互技术编写组,9,设计交互应用程序,在客户/服务器结构中,交互系统的应用程序通
5、过调用服务器端一个独立的管理程序来管理多任务和提供设备的独立性,相当于客户-服务器中结构中的客户。交互应用一般来讲是由用户驱动的,即用户从外部设备上输入数据,应用程序的动作由用户输入来决定,应用程序可以采用下面的两种控制流程实现用户的交互。,人机交互技术编写组,10,1.应用程序内部事件处理循环,人机交互技术编写组,11,事件处理循环的程序代码,while(1)read_event(myevent);switch(myevent.type)case type_1:do_type1_process();/*处理对应事件1的动作*/break;case type_2:do_type2_proces
6、s();break;case type_n:do_typen_process();break;,人机交互技术编写组,12,2.事件注册方式,窗口系统为每一个应用程序建立一个事件处理中心,事件处理中心负责事件的处理。应用程序将自己感兴趣的事件处理事先通过登记注册的方式通知事件处理中心,注册时同时告诉事件处理中心当事件产生时,应用程序需要进行的处理(回应过程)。当事件处理中心从窗口系统接收一个事件,分析这个事件属于哪个应用程序,然后把事件和控制转向该事件注册的回应过程,处理完后,回应过程把控制返还给事件处理中心,事件中心继续接收事件或者请求终止。,人机交互技术编写组,13,人机交互技术编写组,14
7、,2.事件注册方式,这种方式的好处是一般应用程序不需要设计事件处理循环,只关心应用程序需要处理哪些交互事件,当事件发生时应用程序如何处理。当应用程序不需要处理某个事件时,应用程序还可以随时取消注册。因为只处理注册的事件,事件处理中心处理事件的效率相对比较高。Java语言中图形界面的交互就是采用的这种事件注册方式,下面的程序清单7-2说明了应用程序如何通知注册事件,事件处理中心通过什么方式调用应用程序的回调函数。,人机交互技术编写组,15,程序清单7-2 quit.java import java.awt.*;import java.awt.event.*;class Quit extends
8、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)
9、;,人机交互技术编写组,16,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 windowClosin
10、g(WindowEvent event)System.exit(0);,人机交互技术编写组,17,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 windowOp
11、ened(WindowEvent event)public static void main(String args)Quit f=new Quit();f.setBounds(100,100,200,70);f.setVisible(true);,人机交互技术编写组,18,2.事件注册方式,在上面的程序中,当应用程序创建窗口对象时,通过addWindowListener方法通知事件处理中心该应用程序需要处理窗口关闭事件,并且当用户用鼠标器单击窗口右上角的小关闭按钮时,事件处理程序会自动调用ProgramTerminator的一个方法,结束当前的应用程序,在该程序中还用到了交互系统开发软件包中
12、的交互对象Button,在7.2节中将仔细讨论交互系统开发软件包,图7-4说明了程序初始的显示画面。,图7-4 Quit.java运行结果,人机交互技术编写组,19,7.2交互系统开发软件包,一般的窗口系统,输入和显示是分离的。交互系统开发软件包在支持窗口管理的基础上增加了另一种抽象,它把输入和输出的行为结合起来。从用户角度讲,图形用户界面WIMP非常重要的特征就是将输入和输出行为与屏幕上的一个独立的对象连接在一起。鼠标自硬件设备的输入(鼠标的移动)与显示屏上鼠标的输出(小的箭头光标或窗口内坐标的位置)是分离的。屏幕上光标的移动和鼠标的物理运动密切相关,即当鼠标在桌面上移动时,屏幕上的光标也跟
13、着移动。视觉上的光标与物理的设备都称为“鼠标”。,人机交互技术编写组,20,交互系统开发软件包,图7-5说明了如何将输入和输出通过一个按钮联系在一起。当用户移动鼠标到按钮时,屏幕的光标变换形状,提示用户可以单击鼠标,以选中按钮,如果此时用户按鼠标上的按键,屏幕上的按钮变亮,就像按下键盘上的某些键一样,让用户感到确实按下了屏幕上的按钮,释放鼠标键,屏幕上的按钮变暗,就像真正释放屏幕上的按钮。,人机交互技术编写组,21,人机交互技术编写组,22,输入和输出的融合,一般来说,窗口系统提供了上述简单的输入和输出的融合,复杂情况下输入输出的融合需要程序员来实现。为了帮助程序员实现输入和输出融合,需要在窗
14、口系统之上,提供更高层的对交互系统实现的支持交互系统开发软件包。交互系统开发软件包为程序员提供一组已经定义好的交互对象,也称为交互界面元素或窗口组件,程序员可以使用这些组件编写自己的应用程序。交互对象有预先定义好的行为,用户可以根据自己的需要选择使用。,人机交互技术编写组,23,对象之间的关系,为了提供交互对象灵活性,交互对象可以根据用户的需要进行定制,程序员可以根据自己特殊的要求调用交互对象。例如:当创建一个特别的按钮时,按钮上的标签可以是程序员设置的一个参数.较复杂的交互对象可以由较小的、简单的对象构建,整个应用可以看作是一组交互对象的集合,这些对象存在着一定的关系,交互对象的行为描述了整
15、个应用的语义。,人机交互技术编写组,24,交互对象和交互系统开发软件包的特性,这些组件可以被定义为一类交互对象,这类交互对象可以在一个应用中多次激活,不同的实例可以有微小的区别。复杂的交互对象可以由简单的交互对象构建。实例和继承是面向对象程序设计的基石,类可以看作交互对象的模板。,人机交互技术编写组,25,交互系统开发软件包的面向对象特性,交互系统开发软件包是面向对象的,但这并不意味着开发的应用程序所需要的语言必须支持面向对象的概念,也可以使用非面向对象的程序设计语言。程序员通过设置不同的实例属性的值来调整交互对象的行为和外观,这些属性可以在实例程序编译之前设置,如在程序Quit.java中两
16、个按钮交互对象cancelButton 和 okButton,这些按钮的显示文本在程序编译时已经设定。,人机交互技术编写组,26,Java语言中的交互系统开发软件包,抽象窗口工具包 AWT(Abstract Windowing Toolkit)它将交互对象,诸如:按钮、菜单、对话框等映射到相应的Java 的类Button、Menu、Dialog 程序员要么直接使用这些类,要么使用它们的子类。从某种意义上讲,这些类规范了交互对象的行为。利用子类可以很容易增设新的属性,人机交互技术编写组,27,JAVA软件包的事件处理机制,在AWT1.0,程序员需要通过继承按钮的子类来指定按钮的行为从AWT1.1
17、以后,程序员使用一种类似于传统的回调过程的方法来指定按钮的行为但这里注册的不再是一个回调函数,而是一个事件监听对象,如在Quit.Java中的用于处理窗口事件的ProgramTerminator的一个实例。,人机交互技术编写组,28,7.3 用户界面管理系统UIMS,比软件包更高层次的是用户界面管理系统UIMS(User Interface Management Systems)UIMS支持用户界面的表示、设计、实现、执行、评估和维护能够为用户提供一致的人机界面,以极其友好的方式与用户进行人机交互并能使开发者几乎随心所欲地使用此开发工具进行软件开发,人机交互技术编写组,29,UIMS,一个支持
18、交互系统开发的UIMS的概念结构,该结构把应用程序的语义与应用程序的表现部分分开;用来实现分离应用和表现,并保留应用程序和表示形式之间的内在关系的技术 支持一个运行的交互系统的管理、实现和评估的技术。,人机交互技术编写组,30,7.3.1 UIMS作为一个概念结构,对话的独立性是人机交互研究领域的主要问题,主要是强调业务(应用程序的语义)与提供给用户的界面的分离在第六章中从界面的表示模型的角度讨论了各种表示模型对对话独立性的支持情况本节将从系统结构的角度探讨如何实现对话的独立性。,人机交互技术编写组,31,对话的独立性的优点,(1)可移植性:因为应用程序的开发与依赖设备的界面的分离,使得应用程
19、序可以用于不同的系统。(2)可重用性:对话的独立性增加了元素可重用性,这样可以节省开发费用。,人机交互技术编写组,32,对话的独立性的优点,(3)界面的多样性:为了增强应用程序界面的灵活性,对应同一个应用可以开发不同形式、不同风格的界面,以适应不同用户和不同环境的需求。(4)定制界面:交互界面可以按设计员和用户的习惯方式和风格进行设计,以提高程序开发和使用的效率。,人机交互技术编写组,33,应用和界面的关系,对话的独立性要求应用和界面的分离,但是两者存在密切的联系界面表现是为应用服务的,应用所需要的外部数据就是用户通过界面输送的应用内部的数据和状态也是通过界面表现展现给用户的,人机交互技术编写
20、组,34,应用和界面的关系,在一个复杂的交互任务完成后,一般界面表现都要和应用进行通讯甚至在交互任务完成的过程中也需要和应用进行通讯界面需要从应用中获取要显示的物体的数据,人机交互技术编写组,35,交互系统中包含三个主要元素,应用层表现层对话控制(dialog control)其中对话控制负责应用程序和表现二者之间通信在事件注册方式,在应用程序外部实现对话控制 多数UIMS采用外部对话控制,因为这样能够更好支持应用程序和界面的分离。,人机交互技术编写组,36,7.3.2 UIMS的表示方法,UIMS的表示方法主要包含人机界面的规格说明和它与人的因素、应用程序及其数据结构的联系等。UIMS逻辑结
21、构模型中几个主要元素的表示方法,其中除了对话控制的表示方法比较成熟、研究成果丰富外,其它层次的表示方法尚有待发展。,人机交互技术编写组,37,表现层的表示方法,表现层的表示方法主要涉及用户输入输出信息的处理,需要解决的问题:处理和表示图形的输入输出;适应多媒体的需要,将输入输出信息扩充到视频、语音、动画、仿真等;适应智能人机界面规格说明的需要,即信息流的内外映射中如何包含简单的基于人机界面设计规格的决策,使一对一映射的关系扩充到多对一、多对多的映射关系。,人机交互技术编写组,38,对话控制的表示方法,基于语言的表示方法 界面设计者用一种专门的人机界面描述语言(user interface de
22、sign language,UIDL)来说明界面,语言的主要任务是说明界面对话控制的语法,即输入输出动作的合法顺序,人机交互技术编写组,39,人机界面描述语言的多种形式:菜单网络,是最简单的表示方法,可以支持菜单的层次或网络结构。菜单代表用户在某一时刻可能采取的所有输入。菜单项目和下一个显示的菜单之间的联系模拟应用程序对先前输入的响应。上下文无关文法,使用上下文无关文法来描述用户和程序之间的对话,且大多以编译器为基础,上下文无关文法如BNF,可以很好描述基于命令的界面,可是不太适合描述基于图形的交互。,对话控制的表示方法,人机交互技术编写组,40,对话控制的表示方法,人机界面描述语言的多种形式
23、(续):状态转换网络,在第六章已经详细介绍了该表示语言事件语言,在事件语言中,输入数据被认为是事件并立即送事件处理器这些处理器能产生输出事件,改变系统的内部状态,或调用应用子程序,类似事件对象模型。面向对象语言,提供一个面向对象的框架,设计者在该框架内编写界面程序,人机交互技术编写组,41,对话控制的表示方法,基于图形的表示方法 基于图形的UIMS让用户或至少部分地让用户使用鼠标器直接将对象放到屏幕上来定义界面,它把界面的图示表示作为最重要的一个方面,而图形工具是说明这种表示的最合适的方法。基于应用语义过程的表示方法 从应用语义过程规格说明自动生成界面,并且让设计者修改界面以改进它的性能。,人
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 结构 实现

链接地址:https://www.31ppt.com/p-6349172.html