第六章 窗口系统和用户界面管理系统 山东大学计算机学院
主要内容 对交互应用系统实现三个层次上的支持 窗口系统对交互应用系统实现的支持; 软件开发环境对交互应用系统实现的支持; Fall'04 主要内容 对交互应用系统实现三个层次上的支持 窗口系统对交互应用系统实现的支持; 软件开发环境对交互应用系统实现的支持; 用户界面管理系统UIMS
6.3 窗口系统 窗口系统强调为程序员提供硬件设备独立性 窗口系统为单一输入输出设备建立多个抽象设备来实现其资源的共享 Fall'04 6.3 窗口系统 窗口系统强调为程序员提供硬件设备独立性 可以使交互系统的开发变得简单 使交互系统的移植非常方便 窗口系统为单一输入输出设备建立多个抽象设备来实现其资源的共享
6.3.1窗口系统结构 三种不同结构 在各个应用程序内部实现和管理多任务 在操作系统核心集中处理多任务管理 Fall'04 6.3.1窗口系统结构 三种不同结构 在各个应用程序内部实现和管理多任务 移植起来不方便 应用程序处理复杂 在操作系统核心集中处理多任务管理 过分的依赖操作系统 多任务的管理可由独立的管理程序进行管理 应用程序通过调用该管理程序提供的接口来实现对多任务的管理和设备的独立性操作 最容易移植的
客户应用程序 ﹒﹒﹒ 客户 抽象终端 资源管理器 设备驱动程序 服务器 设备 鼠标 窗口1 窗口2 窗口n 键盘 Fall'04 客户应用程序 ﹒﹒﹒ 客户 抽象终端 资源管理器 设备驱动程序 服务器 设备 鼠标 窗口1 窗口2 窗口n 键盘 独立的管理程序的客户/服务器结构
窗口系统由在服务器端运行的三部分程序组成 资源管理器,是整个窗口系统的核心,负责多任务的管理,并通过设备驱动程序来管理外部设备。 设备驱动程序,负责外部设备的驱动,接受输入设备的输入,并将输入数据转换成统一的格式,通过设备驱动程序实现设备的独立性。 抽象终端,负责和客户应用程序的接口,对每个应用程序由窗口管理程序为其分配一个抽象终端。
6.3.2交互事件处理 1)应用程序内部事件处理循环 服务器把用户的输入作为事件送给客户应用程序 Fall'04 6.3.2交互事件处理 1)应用程序内部事件处理循环 服务器把用户的输入作为事件送给客户应用程序 客户应用程序对传给它的所有的事件都做出响应,不同的事件采取不同的处理 早期的基于窗口系统的开发往往采用这种方式
Fall'04 客户应用程序 开始 读输入 设备 服务器 处理输入 退出? 应用程序事件处理循环 结束
交互事件处理 2)事件注册方式 事件处理过程 优点: 事件处理中心负责事件的处理 应用程序登记处理的事件 Fall'04 交互事件处理 2)事件注册方式 事件处理过程 事件处理中心负责事件的处理 应用程序登记处理的事件 事件处理中心接收事件,把事件和控制转向该事件注册的回应过程 处理完后,回应过程把控制返还给事件处理中心 优点: 应用程序不需要设计事件处理循环 事件处理中心处理事件的效率相对比较高 Java事件处理机制示例程序
应用程序 开始 启动通知者 处理事件 读输入 请求回应 退出? 是 否 通知者 事件注册方式处理流程图 发送给正确的回调函数 Fall'04 应用程序 开始 启动通知者 处理事件 读输入 请求回应 退出? 是 否 通知者 事件注册方式处理流程图 发送给正确的回调函数 向通知者注册回调函数 结束
6.3.3交互系统开发软件包 从用户角度讲,图形用户界面WIMP非常重要的特征就是将输入和输出行为与屏幕上的一个独立的对象连接在一起。 Fall'04 6.3.3交互系统开发软件包 从用户角度讲,图形用户界面WIMP非常重要的特征就是将输入和输出行为与屏幕上的一个独立的对象连接在一起。 从程序员的角度讲,即使是窗口系统,输入和输出也是分离的。 为了帮助程序员实现输入和输出融合,需要在窗口系统之上,提供更高层的对交互系统实现的支持——交互系统开发软件包。
交互系统开发软件包 在窗口系统之上,提供更高层的对交互系统实现的支持 提供一组已经定义好的交互对象 使用这些组件编写应用程序 根据需要定制交互对象 使用交互系统开发软件包编程,可以增强界面的一致性
交互系统开发软件包特性 这些组件可以被定义为一类交互对象 这类交互对象可以在一个应用中多次激活 不同的实例可以有微小的区别; Fall'04 交互系统开发软件包特性 这些组件可以被定义为一类交互对象 这类交互对象可以在一个应用中多次激活 不同的实例可以有微小的区别; 复杂的交互对象可以由简单的交互对象构建
Java交互软件开发包 抽象窗口工具包AWT (abstract window toolkits) Fall'04 Java交互软件开发包 抽象窗口工具包AWT (abstract window toolkits) 将交互对象,如按钮、菜单、对话框等映射到Java类Button,Menu,Dialog
Java交互软件开发包-Swing组件 JComponent Fall'04 Java交互软件开发包-Swing组件 JComponent |——AbstractButton——|——JToggleButton——|——JCheckBox |——JColorChooser |——JButton |——JRadioButton |——JFileChooser |——JMenuItem |——JLabel |——JMenu |——JMenuBar |——JRadioButtonMenuItem |——JPanel |——JCheckButtonMenuItem |——JToolBar |——JScrollPane |——JTextCompoment——|——JTextArea |——JOptionPane |——JTextField——JPasswordField |——JScrollPane |——JEditorPane——JTextPane ......... .........
6.3.4交互框架 桌面方式
下拉式菜单主要为用户提供相应的交互命令,一般在下拉式菜单下面还有一行图标表示的命令选择项,这些命令选择项是为了使用户快速选择命令而从下拉式菜单命令集合中选择的常用的命令,交互过程中经常用到的一些状态修改也会出现在菜单和工具栏中。
工具栏有固定方式,也有浮动方式 固定方式一般在框架的顶部位置,这种情况适应于工具栏中的命令较少,而且对屏幕空间不渴求的应用,像一般的信息管理信息系统的应用,浮动框可以贴合在框架的任何一边,即可以是一行,也可以是一列,或者是一个小的矩形网格面板,这种工具栏可以根据应用的要求设置多个,也可以根据实际情况由用户根据实际的需要打开和关闭 浮动的工具栏大部分应用在命令状态很多交互设计相对复杂的系统中,如图形图象像编辑设计软件和字处理软件,还有软件开发设计工具等。
菜单按着模块组织成一个树性结构,树形菜单节点可以根据需要进行部分展开,这可以使得菜单区域即不受菜单空间的限制,又可以当菜单的层次比较深时不用每次像下拉式菜单那样逐层的从最高层到页节点,提高了交互命令选择的效率。
状态栏,一般用于显示一些常用的静态信息和动态信息,状态栏一般分成几个部分,用于不同信息的显示,这种信息主要给用户一些对当前所处的环境的提示,如当前用户,时间、在线人数等等,当前正在进行的交互任务等等,当然系统开发者的某些信息一般也显示在这里,包括开发单位、联系电话和版本号等,这个区域还有一个重要的应用就是用于显示需要较长时间才能完成的进度提示。
工作空间 多个窗口可以并列排列在框架中 标签(table)页
交互框架 浏览器方式
Fall'04 6.3.5MVC模型及Structs结构 MVC模型 模型 视图 控制 用户 显示 键盘 鼠标 MVC模型
MVC模型 视图 (View) 模型 (Model) View代表用户交互界面 一个应用可能有很多不同的视图 Fall'04 MVC模型 视图 (View) View代表用户交互界面 一个应用可能有很多不同的视图 对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求 模型 (Model) Model负责业务流程/状态的处理以及业务规则的制定 是MVC最主要的核心,模型包含完成任务所需要的所有的行为和数据
MVC模型 控制 (Controller) 控制器处理用户的输入 控制器在需要时还负责创建其它的界面和控制器 Fall'04 MVC模型 控制 (Controller) 控制器处理用户的输入 控制器在需要时还负责创建其它的界面和控制器 控制器决定哪些界面和模型组件在某个给定的时刻应该是活动的
MVC模型 优点 不足 可以为一个模型在运行时建立和使用多个视图 视图与控制器的可接插性 模型的可移植性 系统结构和实现的复杂性 Fall'04 MVC模型 优点 可以为一个模型在运行时建立和使用多个视图 视图与控制器的可接插性 模型的可移植性 不足 系统结构和实现的复杂性 视图与控制器间的连接过于紧密 视图对模型数据的低效率访问
Struts,MVC 的一种实现 Struts 是一组相互协作的类、servlet 和 JSP 标记,它们组成一个可重用的 MVC设计。 Fall'04 Struts,MVC 的一种实现 Struts 是一组相互协作的类、servlet 和 JSP 标记,它们组成一个可重用的 MVC设计。
视图(View)――JSP页面和表示组件 基于Struts的应用程序中的视图部分通常使用JSP技术来构建。 每一视图都是采用了定制标签库的JSP页面,这些定制标签库由Struts Framework提供。 全部面板元素都是用定制标签编码的,所以这些页面能够很方便地同控制器进行交互,每个面板都通过映射JSP到servlet的请求这一方式指向控制器的特定入口点。
控制器(Controller)――ActionServlet和ActionMapping 应用程序的控制器从客户端接收请求,决定执行什么业务逻辑,然后将产生下一步用户界面的责任委派给一个适当的视图组件。 在Struts中,控制器的基本组件是ActionServlet类的servlet。这个servlet通过定义一组映射(由Java接口ActionMapping描述)来配置。 每个映射定义一个与所请求的URI相匹配的路径和一个 Action类(一个实现Action接口的类)完整的类名,这个类负责执行预期的逻辑,然后将控制分派给适当的视图组件来创建响应。
模型(model)――系统状态和商业逻辑JavaBeans 在struts中,模型分为两个部分:系统的内部状态、可以改变状态的操作(事务逻辑)。 内部状态通常由一组ActinForm JavaBean表示。 根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时从某个数据库获得数据。
Struts的基本架构和实现实例 用户通过一个登录页面输入用户名和密码,系统对所输入的信息进行有效性验证后,从数据库读出其原始密码并与用户输入的密码进行比对。如果两者相符则转入成功页面;否则提示用户出错,并要求其重新输入。 实例主要有以下几个文件:Login.jsp,LoginAction.java,struts-config.xml 以及LoginActionForm.java。 Login.jsp----View部分; LoginAction.java 与 struts-config.xml------Controller的角色; LoginActionForm.java ------是Model一个组成部分,其作用是保存用户输入的信息;访问数据库并取得数据也是Model必须完成的任务,它由LoginBO.java和LoginDAO.java完成。
6.4UIMS(用户界面管理系统) 一个支持交互系统开发的UIMS的概念结构 该结构把应用程序的语义与表现分开 Fall'04 6.4UIMS(用户界面管理系统) 一个支持交互系统开发的UIMS的概念结构 该结构把应用程序的语义与表现分开 保留应用程序和表示形式之间的内在关系 支持运行的交互系统的管理、实现和评估的技术
Fall'04 UIMS的表示方法 表现层表示方法 对话控制的表示方法 应用层的表示方法 应用程序 应用层 对话控制 表现层 最终用户
表现层表示方法 主要涉及用户输入输出信息的处理 如何处理和表示图形的输入输出 如何适应多媒体的需要 如何适应智能人机界面规格说明的需要 Fall'04 表现层表示方法 主要涉及用户输入输出信息的处理 如何处理和表示图形的输入输出 如何适应多媒体的需要 如何适应智能人机界面规格说明的需要
对话控制的表示方法 基于语言的表示方法 基于图形的表示方法 基于应用语义过程的表示方法 菜单网络,可以支持菜单的层次或网络结构 状态转换网络 Fall'04 对话控制的表示方法 基于语言的表示方法 菜单网络,可以支持菜单的层次或网络结构 状态转换网络 上下文无关文法 事件语言 面向对象语言 基于图形的表示方法 用户使用鼠标器直接将对象放到屏幕上来定义界面 基于应用语义过程的表示方法
应用层的表示方法 包含的内容 与用户和人机界面有关的应用数据结构的说明 与用户和人机界面有关的子程序的说明 列举应用程序对用户的限制 Fall'04 应用层的表示方法 包含的内容 与用户和人机界面有关的应用数据结构的说明 与用户和人机界面有关的子程序的说明 列举应用程序对用户的限制 使人机界面排除许多可能引起语义错误的操作,避免对应用程序的破坏
应用层的表示方法 分类方法 对象-算子表示 基于关系和一阶逻辑的表示 对象对应于应用程序的数据结构 算子对应于人机界面调用的应用子程序 Fall'04 应用层的表示方法 分类方法 对象-算子表示 对象对应于应用程序的数据结构 算子对应于人机界面调用的应用子程序 基于关系和一阶逻辑的表示 关系用来表示应用程序中的数据结构 而一阶逻辑模型用来表示应用子程序
UIMS实现 系统主要由模型、界面管理器和业务处理接口三部分组成 UIMS系统的组成
模型用于定义各种界面显示元素以及各元素的关系; 界面管理器由解析器、布局管理器和事件处理器组成 其中解析器由模型解析器和平台解析器组成,模型解析器负责将基于XML的界面描述解析成一个个的运行时模型对象, 平台解析器将运行时模块解析成具体的界面组件,解析器和布局管理器共同确定了界面上组件的具体表现; 事件处理器负责处理用户事件调用业务处理接口处理相关的业务。
UIMS模型的结构图 整个模型由model、environment、mainFrame三部分构成。Model是整个模型的核心,用于描述系统的资源以及界面元素;environment描述了系统运行时所依赖的环境;main frame 为用户的操作区。
本章习题 用 Java语言实现事件处理中心管理程序。 用 Java语言实现面板输入界面的UIMS系统管理程序。 请用GOMS模型给出一个拼图游戏的任务描述,要求用户能从给定的几种图形随机产生的需要拼接的图案 请用状态转换图描述一个绘制折线的对话过程,并按照状态设计模式给出具体实现过程。