《人机交互》课件第7章 软件结构与实现
第7章 软件结构与实现 章
内容提要窗口系统对交互系统实现的支持窗口系统提供设备独立性和资源的共享,在窗口系统,程序 员不用担心输入和输出设备的初始化,应用程序从窗口系统 管理器接收事件请求流,完成相应的交互操作。
用户界面管理系统UIMSUIMS是抽象层次更高的支持交互系统实现的开发环境,为交 互系统实现提供更高层支持。
支持复杂人机交互系统的实现的软件体系结构包括E-O模型 Seeheim模型 MVC模型 智能体模型
7.1窗口系统窗口系统强调为程序员提供硬件设备独立性, 交互系统的实现建立在一个抽象的设备上,对 抽象设备的操作通过设备驱动程序转换成具体 的设备上的操作,这可以使交互系统的开发变 得简单,也使交互系统的移植非常方便。
7.1窗口系统窗口系统为单一输入输出设备建立多个抽象设 备来实现其资源的共享。每个抽象设备都可看 作一个窗口的独立的输入输出设备,窗口系统 为这些设备提供并发控制。从应用的角度看, 每个应用程序独立地对设备进行操作,另一方 面,窗口系统还为每个窗口提供一个抽象显示 设备,这可以通过为每个活动的抽象显示设备 建立一个窗口来实现。 设备独立性和多任务管理是窗口系统的最重要 的两个特性。4
7.1.1窗口系统结构窗口系统一般有三种结构:在各个应用程序内部实现和管理多任务,由于每个 应用程序都需要处理复杂的多任务管理,并且移植 起来不方便。 在操作系统核心集中处理多任务管理,应用程序不 再对多任务进行管理,由于过分的依赖操作系统, 应用程序需要处理因操作系统的不同而引起的差异。 多任务的管理可由独立的管理程序进行管理,应用 程序通过调用该管理程序提供的接口来实现对多任 务的管理和设备的独立性操作,该管理程序可以在 不同的操作系统下运行,因而基于此管理程序开发 的交互系统是最容易移植的。5
一种客户/服务器结构客户 客户应用程序 抽象终端 服务器 客户应用程序 抽象终端 资源管理器 设备驱动程序 ﹒﹒﹒ ﹒﹒﹒ 窗口n 客户应用程序 抽象终端
设备
鼠标
窗口1
窗口2
键盘
图7-1 客户/服务器结构6
服务器端运行的三部分程序资源管理器是整个窗口系统的核心,负责多任务的管理,并通 过设备驱动程序来管理外部设备 。
设备驱动程序负责外部设备的驱动,接受输入设备的输入,并将 输入数据转换成统一的格式,通过设备驱动程序实 现设备的独立性 。
抽象终端负责和客户应用程序的接口,对每个应用程序由窗 口管理程序为其分配一个抽象终端。
工作方式当外部设备产生一个输
入请求,如鼠标单击某 一个窗口内的一点,资源管理程序从设备驱动 程序获得鼠标数据,产生鼠标驱动事件,并将 该事件分发给与该窗口相对应的抽象终端,与 抽象终端相对应的应用程序接受事件并进行相 应的处理。 实现时,客户程序和服务器程序可以在一台机 器上,也可以分布在不同的机器上。
7.1.2设计交互应用程序在客户/服务器结构中,交互系统的应用程序 通过调用服务器端一个独立的管理程序来管理 多任务和提供设备的独立性,相当于客户-服务 器中结构中的客户。 交互应用一般来讲是由用户驱动的,即用户从 外部设备上输入数据,应用程序的动作由用户 输入来决定,应用程序可以采用下面的两种控 制流程实现用户的交互。
1.应用程序内部事件处理循环 应用程序内部事件处理循环客户应用程序 开始 读输入 过程输入 退出? 服务器 设备
结束 图7-2事件处理循环10
事件处理循环的程序代码while(1){ read_event(myevent); switch(myevent.type){ case type_1: do_type1_process(); 动作*/ break; case type_2: do_type2_process(); break; … case type_n: do_typen_process(); break; } }
/*处理对应事件1的
2.事件注册方式 事件注册方式窗口系统为每一个应用程序建立一个事件处 理中心,事件处理中心负责事件的处理。应 用程序将自己感兴趣的事件处理事先通过登 记注册的方式通知事件处理中心,注册时同 时告诉事件处理中心当事件产生时,应用程 序需要进行的处理(回应过程)。 当事件处理中心从窗口系统接收一个事件, 分析这个事件属于哪个应用程序,然后把事 件和控制转向该事件注册的回应过程,处理 完后,回应过程把控制返还给事件处理中心, 事件中心继续接收事件或者请求终止。12
应用程序 开始 向通知者注册回调函数 启动通知者 结束 处理事件
通知者
读输入
发送给正确的回调函数
否 请求回应 退出? 是
图7-3 事件注册方式处理流程图13
2.事件注册方式 事件注册方式这种方式的好处是一般应用程序不需要设计 事件处理循环,只关心应用程序需要处理哪 些交互事件,当事件发生时应用程序如何处 理。当应用程序不需要处理某个事件时,应 用程序还可以随时取消注册。因为只处理注 册的事件,事件处理中心处理事件的效率相 对比较高。Java语言中图形界面的交互就是 采用的这种事件注册方式,下面的程序清单72说明了应用程序如何通知注册事件,事件处 理中心通过什么方式调用应用程序的回调函 数。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); }
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
…… 此处隐藏:1288字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




