日期:2014-03-19 浏览次数:20674 次
------------------------
那么如何进行简化呢?
刚才说了,交互设计根本的方法是简化。因为这个方法太过模糊,我们现在把简化作为我们的目标,而用面向对象的方法来对交互进行设计。
面对对象的方法在软件编制中应用已经很久了,对象-也就是所谓的物体(object),天然和我们周围的生存环境一致。同时由于我们的交互设计往往使用现有的控件或者是控件的变形体,因此,使用面向对象的方法进行交互设计是从感情和理智上都比较可行的方法。
但是,交互设计里面的对象和程序设计里面的不会完全相同。比如我们不会注重程序设计里面那么多的细节问题:比如它是从那个对象派生下来的。
下面就是我们设计对象的分类图:
首先,我们要声明的是:为了兼容多种交互元素,我们的基本对象、可视对象、交互对象、UI对象之间并不是包含的关系。也就是说,一个交互对象,不一定是一个可视对象。他们存在如下关系:
a、 可视对象、交互对象、UI对象都是基本对象
b、 UI对象都是可视对象
c、 UI对象都是交互对象
下面我们分别解说四种交互对象。
基本对象中的名称用于标示不同的交互对象。(实际上为了我们后面的交互衡量方便,我们还提供了ID作为数据库索引。但是这个ID其实是附加的,不适基本对象必须得属性)。类别用于标示该基本对象的类别。该类别是我们刚才说的交互对象中的某一种。
可视对象包含了更多的属性:位置信息包含了该交户对象的左右上下的值(比如在windows里面就是像素)。状态包括该对象是否可用(Enabled)是否可见(visible)等等。(比如按钮的三态、超连接的4态)
交互对象最重要的标志就是可以响应事件。比如鼠标事件、键盘事件等常见的。还有自定义事件(熟悉编程的人会联想到自定义消息)。交互对象可以通过交互事件的响应接受用户的命令和反馈命令。
我们把UI对象和交互对象分开的原因在于,交互对象不需要关心UI对象所关心的一些属性,比如颜色、字体、形状之类的(当然也不能说完全不关心,不过这里为了更加着重的表明交互设计中最重要的不是类似颜色、字体之类的元素,故意如此)。
扩展信息包括很多内容。比如多媒体按钮的图片、动画和声音;标签的文字等等。
在我们冲向简化这个目标之前,我们先来学习如何用对象方法来表示几个常见的交互元素。
我们先来看一个最普通的窗口。
接着我们表示在上个窗口内一个带有Hello World字样的文字标签。
从这里我们可以看出来,该标签是在上一个窗口(窗口1)内显示的。
下面,我们结合一个实际的例子,来说明如何利用面向对象方法来设计、测量交互的设计。
(一般设计方式都有自顶而下和自下而上两种。个人的意见是在整体设计尚未明朗的时候,从顶而下比较好。当某个细节部分不清晰的时候,自下而上更容易说明问题)
[用户需求描述]我们需要的是一个APP,可以按照日期记录每日的文字内容,每日纪录的文字内容不超过64K。可以查看以前每日纪录的内容。可以删除以前每日纪录的内容。
我们先来分析一下用户需要的重要程度。很明显这个APP最重要的东西就是用户记录的日记。当然有的人记了日记只为记(比如为了完成作业的学生)有的人记了日记只为删(比如专门给爱人写日记然后失恋的人),但是大部分用户最常用的功能还是看日记。(这是我个人的想法,大家乱看)
于是几种方案就形成了:
[1]用表格显示从新到旧的日记列表。设置三个功能区,分别实现写日记、查看日记详细、删除日记的功能。
[2]考虑到用户需要快速定位某天日记的需要,设定日期输入栏。这样看日记就是隐藏在日期输入的操作中了。
[3]如果考虑到用户经常在年月跨度间查看日记的需要,也就是说简化用户选择年月日的操作,那么方案如下:
这里我先来完成第三个方案的交互设计文档:
上面是我们的交互对象列表。他们之间的层次关系表达了他们之间的从属关系。
然后我们可以分别察看每个对象的属性设置,例如我们察看Table_DaysNote的属性(位置、状态、事件等。):
现在我们根据[用户需求描述]定义几个关键任务,用于测试该模型的效率(这里主要是计算机计算,而对用户主观描述没有进行测试)。
关键任务一:找到某几个确定日期的日记(10)
关键任务二:删除某几个确定日期的日记(10)
关键任务三:在相邻两个月内,连续增加几篇日记。(10)
经过测算,我们第三种方案的效率如下:
我们通过上表的对比可以看到当关键任务一的数据量达到500(1-3年的日记量),相关数据成标准散布的时候,方案2是用户点击鼠标和切换次数最多的。方案3最好。相同的关键任务二也有相同结果。大概是由于我们举例的设计问题,关键任务三中方案3也是优胜者。由此看来,不考虑用户主观因素,那么方案三是效率最高的。
(为什么选用这些数据进行测算,以及选用多少数据都会影响最终的结果。)