人機(jī)交互基礎(chǔ)教程第6章人機(jī)交互界面表示模型與實(shí)現(xiàn)_第1頁
人機(jī)交互基礎(chǔ)教程第6章人機(jī)交互界面表示模型與實(shí)現(xiàn)_第2頁
人機(jī)交互基礎(chǔ)教程第6章人機(jī)交互界面表示模型與實(shí)現(xiàn)_第3頁
人機(jī)交互基礎(chǔ)教程第6章人機(jī)交互界面表示模型與實(shí)現(xiàn)_第4頁
人機(jī)交互基礎(chǔ)教程第6章人機(jī)交互界面表示模型與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第6章 人機(jī)交互界面表示模型與實(shí)現(xiàn) 6.1 6.1 人機(jī)交互界面表示模型人機(jī)交互界面表示模型在人機(jī)交互界面設(shè)計的早期階段,設(shè)計者需要有一種用戶界面表示模型和形式化的設(shè)計語言來分析和表達(dá)用戶任務(wù)以及用戶和系統(tǒng)之間的交互情況,并且這個界面表示模型能方便地映射到實(shí)際的設(shè)計實(shí)現(xiàn)。 三種模型:行為模型,主要從用戶和任務(wù)的角度考慮如何來描述人機(jī)交互界面,將詳細(xì)介紹GOMS, LOTOS、UAN及任務(wù)模型。結(jié)構(gòu)模型,主要從系統(tǒng)的角度來表示人機(jī)交互界面。重點(diǎn)介紹狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)(STN-State Transition Network)和產(chǎn)生式規(guī)則 (Production Rule)。表現(xiàn)模型,主要介紹人機(jī)界面表

2、現(xiàn)的具體描述方法。介紹如何由界面的行為表示模型轉(zhuǎn)換到系統(tǒng)的結(jié)構(gòu)模型。6.1 6.1 人機(jī)交互界面表示模型人機(jī)交互界面表示模型6.1.1 6.1.1 行為模型行為模型 首先,分析人員獲取用戶需求,結(jié)合領(lǐng)域?qū)<业囊庖姾椭笇?dǎo),獲取系統(tǒng)中需要完成的任務(wù),對任務(wù)的主要因素進(jìn)行詳細(xì)地分析,如任務(wù)的層次、發(fā)生條件、完成的方法以及它們之間的關(guān)系等等。這就是行為模型要研究的。 下面就從模型的基本原理、實(shí)例、局限性等幾個方面詳細(xì)介紹四種常見的行為模型。6.1 人機(jī)交互界面表示模型1 GOMS( Goal, Operator, Method, Selection )在Moran & Newall的人機(jī)交互心

3、理學(xué)中首次提出的一種用于評估人機(jī)交互界面的模型: a set ofGoalsGoals, a set ofOperatorsOperators, a set ofMethodsMethodsfor achieving the goals, and a set ofSelections rulesSelections rulesfor choosing among competing methods for goals. GOMS模型能幫助設(shè)計師與工程師精確分析、描述用戶使用系統(tǒng)的過程,從而評估不同解決方案在時效上的相對有效性。 它采用“分而治之”的思想,將一個任務(wù)進(jìn)行多層次的細(xì)化,通過目標(biāo) (

4、Goal)、操作(Operator)、方法 (Method) 以及選擇規(guī)則 (Selection rule) 四個元素來描述用戶行為。6.1 人機(jī)交互界面表示模型l目標(biāo)目標(biāo) 目標(biāo)就是用戶執(zhí)行任務(wù)最終想要得到的結(jié)果。它可以在不同的層次中進(jìn)行定義。 eg:“編輯一篇文章”-“編輯文章”(高層); “刪除字符”(低層)l操作操作 操作是任務(wù)分析到最底層時的行為,是用戶為了完成任務(wù)所必須執(zhí)行的基本動作。l方法方法 方法是描述如何完成目標(biāo)的過程。一個方法本質(zhì)上來說是一個內(nèi)部算法,用來確定子目標(biāo)序列及完成目標(biāo)所需要的操作。6.1 人機(jī)交互界面表示模型6.1 人機(jī)交互界面表示模型在Macintosh下,關(guān)閉

5、一個窗口有兩種方法:1)從菜單中選擇CLOSE菜單項(xiàng),也可以按L7鍵GOAL: ICONSIZE-WINDOW. select GOAL: USE-CLOSE-METHOD. . MOVE-MOUSE-TO-WINDOW-HEADER. . POP-UP-MENU. . CLICK-OVER-CLOSE-OPTION. GOAL: USE-L7-METHOD. . PRESS-L7-KEYl選擇規(guī)則選擇規(guī)則 選擇規(guī)則是用戶要遵守的判定規(guī)則,以確定在特定環(huán)境下所使用的方法。當(dāng)有多個方法可供選擇時,GOMS中并不認(rèn)為這是一個隨機(jī)的選擇,而是盡量預(yù)測可能會使用哪個方法。 用戶Sam如果在玩游戲,使用

6、L7關(guān)閉窗口,否則使用CLOSE菜單項(xiàng): Rule 1: Use the CLOSE-METHOD unless another rule applies Rule 2: If the application is GAME, use L7-METHOD6.1 人機(jī)交互界面表示模型GOAL:EDIT-MANUSCRIPT GOAL:EDIT-UNIT-Task repeat until no more unit tasks GOAL:ACQUIRE-UNIT-TASK GET-NEXT-PAGE if at end of manuscript GET-NEXT-TASK GOAL:EXECUT

7、E-UNIT-TASK GOAL:LOCATE-LINE select:USE-QS-METHOD USE-LF-METHOD GOAL:MODIFY-TEXT select:USE-S-METHOD USE-M-METHOD VERIFY-EDIT Task:Editing子目標(biāo)間關(guān)系:順序關(guān)系,選擇關(guān)系任務(wù)任務(wù)EditingEditing的的GOMSGOMS描述實(shí)例描述實(shí)例一個例子:目標(biāo)A:在windows explorer里刪除文件目標(biāo)A-1:選擇文件選擇:目標(biāo)A-1-1:鍵盤-tab-方法 目標(biāo)A-1-2:鼠標(biāo)-方法確認(rèn)-選擇目標(biāo)A-2:刪除操作選擇*: 目標(biāo)A-2-1:鍵盤-刪除-方

8、法 敲擊-刪除 目標(biāo)A-3:確認(rèn)刪除 目標(biāo)A-2-2:右鍵-彈出菜單-方法 移動鼠標(biāo)-到文件圖標(biāo)上 點(diǎn)擊-鼠標(biāo)右鍵 定位-刪除命令 移動鼠標(biāo)到刪除命令 點(diǎn)擊-鼠標(biāo)左鍵 目標(biāo)A-3:確認(rèn)刪除 目標(biāo)A-2-3:拖拽方法 移動鼠標(biāo)到文件圖標(biāo)上 左鍵點(diǎn)擊文件圖標(biāo) 定位-回收站 移動鼠標(biāo)到回收站 松開鼠標(biāo)左鍵因?yàn)橛?種刪除方法,選擇規(guī)則:如果手當(dāng)前在鍵盤上,選擇A-2-1鍵盤刪除方法;如果手不在鍵盤上,并且回收站可見,選擇A-2-3拖拽方法否則選擇A-2-2右鍵-彈出菜單-方法GOMSGOMS應(yīng)用應(yīng)用作為一種人機(jī)交互界面表示的理論模型,GOMS是人機(jī)交互研究領(lǐng)域內(nèi)少有的幾個廣為人知的模型之一,并被稱為最

9、成熟的工程典范,該模型在計算機(jī)系統(tǒng)的評估方面也有廣泛的應(yīng)用。GOMS can save money!美國電話公司NYNEX利用GOMS分析一套即將被采用的新的計算機(jī)系統(tǒng)的應(yīng)用效果,結(jié)果發(fā)現(xiàn)效果不理想,放棄了使用新系統(tǒng),為公司節(jié)約了數(shù)百萬的資金。GOMSGOMS的局限性的局限性GOMS模型將用戶與計算機(jī)的交互(可以是物理的、認(rèn)知上的或感性上的)減到最初等級別。 GOMS模型能幫助設(shè)計師與工程師精確分析、描述用戶使用系統(tǒng)的過程,從而評估不同解決方案在時效上的相對有效性。不同的GOMS的變形方法可以讓人們精確的研究以及預(yù)測不同類型的用戶界面。GOMS提供一個可以計算并測量的時間開銷評估方法,具有實(shí)驗(yàn)

10、可操作性以及高度精確性。評估者需要仔細(xì)調(diào)研所有的用戶完成任務(wù)所需的操作步驟,這樣一來用戶完成任務(wù)所需要的時間可以通過每個步驟的單位時間疊加得到。GOMS模型的不足用戶的行為會受到外界環(huán)境影響等因素而變得不可預(yù)測性。該模型理論是建立在每個原子操作的時間是一定的,并且在沒有出錯的情況下完成任務(wù)的一系列操作的時間和,并且,模型是建立在用戶知道任務(wù)該如何完成的情況下,GOMS沒有清楚的描述錯誤處理的過程,它假設(shè)用戶完全按一種正確的方式進(jìn)行人機(jī)交互,因此針對的是專家用戶而不是新手用戶。 因此只針對那些不犯任何錯誤的專家用戶。該模型考慮的是界面可用性而不是功能性,如果考慮功能性,那么評估的就是系統(tǒng)應(yīng)該執(zhí)行

11、哪個功能。另外用戶的偏好、習(xí)慣以及身體上的限制(殘疾)是未知的,所有用戶都被視為同一個,這也是GOMS模型的限制。GOMS對于任務(wù)之間的關(guān)系描述過于簡單,只有順序和選擇。事實(shí)上任務(wù)之間的關(guān)系還有很多種.GOMS把所有的任務(wù)都看作是面向操作目標(biāo)的,而忽略了一些任務(wù)所要解決的問題本質(zhì),它的建立不是基于現(xiàn)有的認(rèn)知心理學(xué),無法代表真正的認(rèn)知過程。 在GOMS模型推出后,創(chuàng)始人又推出了簡化版的GOMS模型KLM(Keystroke-level model)擊鍵模型,KLM模型只保留了O,而把GMS都去掉了。它適用于預(yù)測文本輸入,預(yù)測方程相對簡單,而且好處在于能迅速作出比較。KLM擊鍵模型是一個時間評估方

12、法。這個模型運(yùn)用于很多人機(jī)交互的領(lǐng)域,它將用戶的交互行為分解為幾個元動作,每個元動作都在測試時得出操作時長,通過用戶的實(shí)際操作時間與標(biāo)準(zhǔn)時間的對比,判斷設(shè)計結(jié)構(gòu)的優(yōu)劣。2 LOTOS(Language Of Temporal Ordering Specification) 時序關(guān)系說明語言是一種作為國際標(biāo)準(zhǔn)的形式描述語言,它提供了一種通用的形式語義,可保證描述不存在二義性,便于分析和一致性測試?yán)碚摰难芯俊?6.1 人機(jī)交互界面表示模型 其開始是作為一種描述網(wǎng)絡(luò)協(xié)議的語言,由于交互系統(tǒng)、特別是多通道交互系統(tǒng)有并發(fā)系統(tǒng)的特點(diǎn),因此成為用來描述交互系統(tǒng)的行為模型。 其基本思想是用一套形式化和嚴(yán)格的表

13、示法來刻畫系統(tǒng)外部可見行為之間的時序關(guān)系,系統(tǒng)由一系列進(jìn)程組成,進(jìn)程同環(huán)境之間通過稱為“關(guān)口”(gates)的交互點(diǎn)進(jìn)行交互。兩個以上的進(jìn)程在執(zhí)行同一個外部可見的行為時會發(fā)生交互,進(jìn)行數(shù)據(jù)交換、信息傳遞、協(xié)調(diào)同步等操作。 進(jìn)程行為用“行為表達(dá)式”來描述,復(fù)雜的行為由簡單的行為表達(dá)式通過表示時序關(guān)系的LOTOS算符組合而成。 將LOTOS思想用于人機(jī)交互的行為模型時可以用進(jìn)程之間的約束關(guān)系來描述交互子任務(wù)之間的關(guān)系。 l下面給出LOTOS模型中定義的基本算符: T1 | T2(交替Interleaving):T1和T2兩個任務(wù)相互獨(dú)立執(zhí)行,可按任意順序執(zhí)行,但永遠(yuǎn)不會同步。 T1 T2(選擇Ch

14、oice):需要在T1,T2中選擇一個執(zhí)行,一旦選擇某一個后,必須執(zhí)行它直到結(jié)束,在這中間另一個再無執(zhí)行機(jī)會。任務(wù)如何來選擇,并沒有給出一定的形式化描述。6.1 人機(jī)交互界面表示模型 T1 | a1,.,an | T2(同步Synchronization):任務(wù)T1,T2必須在動作(a1,,an)處保持同步。 T1 T2(禁止Deactivation):一旦T2任務(wù)被執(zhí)行,T1便無效(不活動)。 T1 T2(允許Enabling):當(dāng)T1成功結(jié)束后才允許T2執(zhí)行。6.1 人機(jī)交互界面表示模型LOTOSLOTOS實(shí)例實(shí)例中國象棋LOTOS的圖形描述6.1 人機(jī)交互界面表示模型LOTOSLOTOS

15、與與GOMSGOMS的結(jié)合的結(jié)合LOTOS模型很好的描述了任務(wù)之間的時序約束關(guān)系,這些時序約束關(guān)系能更好的描述GOMS中子目標(biāo)之間的關(guān)系。用GOMS模型描述任務(wù)的分解過程,而用LOTOS給出子任務(wù)之間的約束關(guān)系,這樣就可以增加兩種表示模型的表示能力。 結(jié)合結(jié)合GOMSGOMS和和LOTOSLOTOS的的中國象棋程中國象棋程序的行為描序的行為描述述GOAL:中國象棋 : GOAL:運(yùn)行 |: *GOAL:走棋 ACTION:自動記錄棋譜 : GOAL:當(dāng)前方走 : OPRATOR:拾取棋子 OPRATOR:放置棋子 GOAL:對弈方走 OPRATOR:拾取棋子 OPRATOR:放置棋子 *GOA

16、L:打譜 : OPRATOR:加速 OPRATOR:減速 OPRATOR:暫停 OPRATOR:恢復(fù) GOAL:退出LOTOSLOTOS總結(jié)總結(jié)LOTOS與GOMS結(jié)合,可以清楚地了解整個目標(biāo)層次及各目標(biāo)之間的約束關(guān)系。但與GOMS相同的特點(diǎn)在于同樣存在無法描述目標(biāo)異常結(jié)束的缺陷,同時當(dāng)任務(wù)進(jìn)行選擇時用什么規(guī)則進(jìn)行選擇并沒有涉及。LOTOS最大的優(yōu)越性在于可以構(gòu)造一套現(xiàn)成的自動化工具,利用這些工具,可自動進(jìn)行錯誤檢測,但它過于形式化的記法比較晦澀難懂。GOMS和LOTOS的結(jié)合可以很好地描述人機(jī)交互的較高級的任務(wù),對于原子任務(wù)的形式化描述,上述模型并沒有給出一個比較清晰的描述,下面討論的UAN

17、模型主要用于原子目標(biāo)的描述。 3 UAN(User Action Notion) 用戶行為標(biāo)注是一種簡單的符號語言,著眼于用戶和界面兩個交互實(shí)體的描述,主要描述用戶的行為序列以及在執(zhí)行任務(wù)時所用的界面。 盡管UAN屬于一種行為模型,但作為一種任務(wù)描述語言,它又涉及一定程度的系統(tǒng)行為的描述,因而它兼有行為模型和結(jié)構(gòu)模型的一些特點(diǎn)。 UAN模型的標(biāo)識符主要有兩種:用戶動作標(biāo)識符和條件選擇標(biāo)識符。6.1 人機(jī)交互界面表示模型l用戶動作標(biāo)識符用戶動作標(biāo)識符 在UAN的表示模型中有一些常用的已經(jīng)預(yù)定義的符號,用來表示常見的用戶界面的交互動作。如:move_mouse(x,y) 移動鼠標(biāo)至(x,y);re

18、lease_button(x,y) 在(x,y)位置釋放鼠標(biāo)按鈕;hightLight(icon) 使icon高亮顯示;de_highlight(icon) 取消icon的高亮顯示。6.1 人機(jī)交互界面表示模型l條件選擇標(biāo)識符條件選擇標(biāo)識符 除了表示動作的符號,UAN模型還包含表示條件及選擇的標(biāo)識符,主要有以下幾種: while while(condition) TASK 當(dāng)條件condition為真時,循環(huán)執(zhí)行任務(wù)TASK; if if(condition) thenthen TASK 如果條件condition滿足,則執(zhí)行任務(wù)TASK;waitingwaiting 表示等待,可以等待一個條

19、件滿足,也可以等待任務(wù)中的一個操作執(zhí)行。6.1 人機(jī)交互界面表示模型采用一種表格結(jié)構(gòu)來表示任務(wù)界面被分解成一些類似層次結(jié)構(gòu)的異步任務(wù),每個任務(wù)的實(shí)現(xiàn)都用表格來描述,用戶動作的關(guān)聯(lián)性和時序關(guān)系由表格的行列對齊關(guān)系和從上到下、從左到右的閱讀順序來確定。任務(wù)(task):任務(wù)名稱(the name of task)用戶行為界面反饋界面狀態(tài)UANUAN實(shí)例實(shí)例- -單通道交互單通道交互UANUAN實(shí)例實(shí)例- -多通道交互多通道交互UANUAN總結(jié)總結(jié)UAN模型更接近于實(shí)現(xiàn),界面狀態(tài)和界面反饋用一般的程序語言描述,實(shí)現(xiàn)起來比較方便,當(dāng)然這種描述由于接近于程序語言,因此設(shè)計時需要一定的編程基礎(chǔ)UAN模型在

20、精確刻畫各成分之間的各種平行和串行的時序關(guān)系方面尚顯不足,任務(wù)之間的時序關(guān)系沒有明確表示出來,當(dāng)所描述的界面使用多種輸入設(shè)備和有若干可選交互路徑時,比較繁瑣。 G-U-LG-U-L模型模型可以考慮將GOMS、UAN、LOTOS中模型結(jié)合為一個預(yù)測行為模型:G-U-L模型。G-U-L運(yùn)用GOMS原理為基礎(chǔ)進(jìn)行任務(wù)分解,建立基本的行為模型,原子操作由UAN模型描述,在此基礎(chǔ)上,運(yùn)用LOTOS算符來表示任務(wù)目標(biāo)之間的時序關(guān)系。在G-U-L模型中沒有加入規(guī)則,在表示目標(biāo)之間的關(guān)系中也未考慮同步。這主要考慮到規(guī)則的轉(zhuǎn)換要涉及到推理、建立知識庫等問題,而同步的問題的描述和轉(zhuǎn)換也非常的復(fù)雜,這會在設(shè)計工作的

21、初期造成非常大的困難。習(xí)題習(xí)題 對“圖書管理系統(tǒng)”中的原子目標(biāo),創(chuàng)建UAN模型,從而進(jìn)一步了解UAN模型在行為模型中的地位和作用。結(jié)合LOTOS,用前面介紹的G-U-L進(jìn)一步完善任務(wù)的描述。35LOTOS圖分析:對于圖書管理系統(tǒng),在運(yùn)行和退出兩個進(jìn)程中只能選擇其中的一個, 借書和用戶借閱是兩個相對獨(dú)立的,不會同步執(zhí)行,當(dāng)輸入借閱圖書編號后就可以借閱圖書了。LOTOS圖可以清楚地了解整個目標(biāo)層次中各目標(biāo)之間的約束關(guān)系,但是無法描述目標(biāo)異常結(jié)束的情況,同時當(dāng)任務(wù)進(jìn)行選擇時以什么規(guī)則進(jìn)行選擇也是一個問題。UANUAN模型模型分析:(1)用戶行為mouse_down(x,y)表示用戶首先在點(diǎn)(x,y)

22、處單擊鼠標(biāo),這時界面if intersect(button,x,y)button=select判斷在(x,y)處是否與圖標(biāo)“button”相交,如果是,則將“button”的狀態(tài)設(shè)為selected。界面反饋show book(bookid) 和 borrow(bookid)任務(wù):Borrow books in library用戶行為界面狀態(tài)界面反饋mouse_down(x,y) click_button(button)if intersect (button, x, y) button=selctedif intersect(bookid)then show book(bookid) bor

23、row(bookid)G-U-L描述:Task 圖書管理系統(tǒng)GOAL:圖書管理:GOAL:運(yùn)行 | | |: *GOAL:借書 ACTION:自動搜索圖書 : GOAL:用戶借閱 : OPRATOR:輸入借閱圖書編號 OPRATOR:借閱圖書:退出分析:從上面的描述來看,最高層目標(biāo)“圖書管理”被分解為“運(yùn)行”和“退出”兩個子目標(biāo),它們之間是禁止關(guān)系,即目標(biāo)“退出”禁止了目標(biāo)“運(yùn)行”的執(zhí)行,表示在“退出”目標(biāo)執(zhí)行以后,“運(yùn)行”目標(biāo)就無法執(zhí)行了?!斑\(yùn)行”目標(biāo)分解為“借書”和“用戶借閱”,“借書”目標(biāo)執(zhí)行“自動搜索圖書”任務(wù),而“用戶借閱”目標(biāo)執(zhí)行“輸入借閱圖書編號”和“借閱圖書”的操作。產(chǎn)生式規(guī)則

24、-Production Rule形式化語言的描述,這種結(jié)構(gòu)的方法從理論上可以引導(dǎo)界面設(shè)計者及界面工具的設(shè)計者進(jìn)行有效的設(shè)計。 狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)-State Transit Network用結(jié)構(gòu)化的方法來描述人機(jī)交互的一般過程,是一種圖示化的結(jié)構(gòu)產(chǎn)生式規(guī)則又稱為上下文無關(guān)文法,將人機(jī)交互對話看作是一種語言,運(yùn)用基于語法的方法來描述交互對話。產(chǎn)生式規(guī)則是一種形式化語言,其規(guī)則可用于描述人機(jī)交互界面。一般形式是:if condition then action這些規(guī)則可以表示為不同的形式:condition actioncondition:action所有的規(guī)則都是有效的,并且系統(tǒng)不斷用它來檢測用戶的輸

25、入是否與這些條件相匹配。若匹配則激活相應(yīng)的動作,這些動作可以是執(zhí)行應(yīng)用程序的一個過程,也可以是直接改變某些系統(tǒng)狀態(tài)的值。一般來說,組成界面描述的產(chǎn)生式規(guī)則很多,規(guī)則定義的順序并不重要,只要與規(guī)則中的條件相匹配,就可以激活相應(yīng)的動作。產(chǎn)生式規(guī)則系統(tǒng)可以是事件引導(dǎo)的,也可以是狀態(tài)引導(dǎo)的,或者兩者都有。 產(chǎn)生式集合,實(shí)現(xiàn)用戶在屏幕上繪直線 用戶事件(user event),Sel-line表示從菜單中選擇line命令,C-point 和D-point表示用戶在繪圖平面上單擊和雙擊鼠標(biāo) 內(nèi)部事件,用于保持對話狀態(tài),如start-line 表示開始畫線后的狀態(tài),rest- line表示選擇了第一個點(diǎn)之后

26、的狀態(tài)。 系統(tǒng)響應(yīng)事件,以尖括號表示的可見或可聽的系統(tǒng)響應(yīng),如,把菜單項(xiàng)line 高亮度顯示,表示在屏幕上顯示直線, 表示橡皮筋繪制方式打開,表示橡皮筋繪制方式關(guān)閉。 在上面的產(chǎn)生式規(guī)則中,第一條規(guī)則表示選擇畫線命令后,系統(tǒng)狀態(tài)進(jìn)入了開始畫線狀態(tài),接著把line菜單項(xiàng)高亮度顯示;第二條規(guī)則表示,用戶在開始畫線狀態(tài)時,在繪圖區(qū)域單擊鼠標(biāo)則系統(tǒng)表示已定義了一個點(diǎn),此時橡皮筋繪圖方式打開;第三條規(guī)則表示在定義了一個(或多個)點(diǎn)后,用戶單擊鼠標(biāo)可以連續(xù)地定義點(diǎn);第四條規(guī)則表示雙擊鼠標(biāo)則結(jié)束畫線的交互過程。 對話控制主要負(fù)責(zé)事件的產(chǎn)生和規(guī)則的匹配,可以看到在每一時刻系統(tǒng)內(nèi)存中會保存一些內(nèi)部事件,當(dāng)產(chǎn)生一

27、個事件時,可能是用戶事件(如單擊鼠標(biāo)),也可能是內(nèi)部事件(如時鐘事件等)。對話控制就要將所有的產(chǎn)生式規(guī)則與事件集合進(jìn)行匹配,這個過程是復(fù)雜的而且是耗時的,當(dāng)產(chǎn)生式很多并且產(chǎn)生式規(guī)則的條件復(fù)雜時,匹配算法的效率就顯的更為重要,因此需要設(shè)計好的數(shù)據(jù)結(jié)構(gòu)和匹配算法來提高匹配規(guī)則的效率。狀態(tài)引導(dǎo)的系統(tǒng)在系統(tǒng)內(nèi)存保存的不是動態(tài)的隨時進(jìn)出的事件,而是一些表示系統(tǒng)的當(dāng)前狀態(tài)的屬性,這些屬性在不同的時刻有不同的值。Mouse有4個不同的狀態(tài) mouse-null(鼠標(biāo)空閑),select-line(選擇線命令),click-point(單擊鼠標(biāo)),double-click(雙擊鼠標(biāo)),當(dāng)用戶對鼠標(biāo)進(jìn)行操作時M

28、ouse自動設(shè)置成相應(yīng)的狀態(tài);Line-state用于保持當(dāng)前會話的狀態(tài):分別是menu(可選命令狀態(tài)),start-line(開始繪制線),rest-line(已經(jīng)定義點(diǎn));后三個屬性用于控制系統(tǒng)響應(yīng):其中Rubber-band表示橡皮筋繪制的開和關(guān)狀態(tài),Menu表示任何項(xiàng)也沒有選中(highlight-null)、選中繪直線命令(highlight-line)或選中繪圓命令(highlight-circle), Draw表示什么也不畫狀態(tài)(draw-nothing)或畫直線狀態(tài)(draw-line),顯示控制器根據(jù)上面的狀態(tài)做出相應(yīng)的顯示控制。Select-linemouse-null s

29、tart-line highlight-lineClick-point start-linemouse-null rest-line rubber-band-onClick-point rest- linemouse-null draw-lineDouble-click rest-linemouse-null menu draw-line rubber-band-off有的人機(jī)對話過程比較適合于事件引導(dǎo)方式,有的人機(jī)對話過程適合于狀態(tài)引導(dǎo)方式,當(dāng)然也可以將兩者結(jié)合起來,例如采用下面的形式來描述一個產(chǎn)生式規(guī)則: event: condition action 事件用來激活產(chǎn)生式規(guī)則,如果條件不滿

30、足,即當(dāng)前系統(tǒng)內(nèi)存中的狀態(tài)和產(chǎn)生式的規(guī)則不匹配,則無法激活規(guī)則,另外當(dāng)狀態(tài)改變時,產(chǎn)生式規(guī)則中的action本身也可以產(chǎn)生新的事件,從而可以激活另一條規(guī)則。 Bold:off, on Italic:off, onUnderline: off, on 圖6-2 粗體/斜體/下劃線對話框 文本樣式 根據(jù)用戶點(diǎn)擊鼠標(biāo)的位置不同,可能產(chǎn)生三個事件:select-bold, select-italic, select-under,該對話過程有下面六個產(chǎn)生式規(guī)則定義。 斜體下劃線加粗加粗select- bold:Bold = offBold = onselect- bold:Bold = onBold =

31、 offselect-italic:Italic = offItalic = onselect-italic:Italic = onItalic = offselect-under:Underline = offUnderline = onselect-under:Underline = onUnderline = offevent: condition action 描述操作時序能力強(qiáng),并發(fā)、順序均可無法描述誤操作界面復(fù)雜時,狀態(tài)、事件復(fù)雜,產(chǎn)生式過多,要求產(chǎn)生式匹配算法性能高狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)(STN)的基本思想是定義一個具有一定數(shù)量狀態(tài)的轉(zhuǎn)換機(jī),稱之為有限狀態(tài)機(jī)-Finite State Ma

32、chine(FSM)。是表示有限個狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學(xué)模型。FSM從外部世界中接收到事件,并能使FSM從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)。本章介紹兩種最基本的狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò),狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)(State Diagrams)和擴(kuò)展?fàn)顟B(tài)轉(zhuǎn)換網(wǎng)絡(luò)(State Charts),后者是前者的一個擴(kuò)展 當(dāng)發(fā)生一個外部或內(nèi)部事件時,系統(tǒng)就會從一個狀態(tài)轉(zhuǎn)換到另外一個狀態(tài),這稱為狀態(tài)轉(zhuǎn)換。外部事件主要由用戶操作外部輸入設(shè)備來產(chǎn)生,內(nèi)部事件可以是系統(tǒng)產(chǎn)生的事件,如時鐘事件,也可以是為了改變系統(tǒng)的狀態(tài)和行為而產(chǎn)生的事件,如當(dāng)一個任務(wù)完成后可以激活另一個任務(wù)等。源狀態(tài)目標(biāo)狀態(tài)轉(zhuǎn)換一般的系統(tǒng)具有很多個狀態(tài),

33、假設(shè)系統(tǒng)由n個狀態(tài)組成,狀態(tài)之間的轉(zhuǎn)換最多可能有n*(n-1)個。簡單的三狀態(tài)FSM最多可能有6個狀態(tài)轉(zhuǎn)換選項(xiàng)條件(conditions),表示導(dǎo)致狀態(tài)的改變的條件;選項(xiàng)動作(actions),表示系統(tǒng)在改變狀態(tài)時將執(zhí)行什么動作。當(dāng)系統(tǒng)在某一狀態(tài)S時,如果滿足條件C1,系統(tǒng)將發(fā)生狀態(tài)轉(zhuǎn)換T1,而轉(zhuǎn)換到狀態(tài)E1.如果滿足條件C2,系統(tǒng)將發(fā)生狀態(tài)轉(zhuǎn)換T2,而轉(zhuǎn)換到狀態(tài)E2.現(xiàn)在將條件C1、C2和狀態(tài)融合則得到右圖所示的基本狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)。draw circle單擊在圓周上rubber band單擊在中心點(diǎn)highlight circle選擇 circle Circle1MenuFinish Circ

34、le2draw line雙擊rubber band單擊在第一點(diǎn)highlight line選擇 lineLine1Finish Line2圖中涉及到了狀態(tài)、轉(zhuǎn)換、條件、動作等元素。它有一個菜單(有兩個選項(xiàng)“circle”和“l(fā)ine”)和一個繪圖平面。若選擇“circle”則要求你確定兩個點(diǎn):第一個點(diǎn)是圓心,第二個點(diǎn)表示圓周上的任意一點(diǎn)。第一個點(diǎn)確定后,系統(tǒng)就在圓心和當(dāng)前鼠標(biāo)位置之間畫一條“橡皮圈”線,第二個點(diǎn)確定后就畫出了一個圓。 draw circle單擊在圓周上rubber band單擊在中心點(diǎn)highlight circle選擇 circle Circle1MenuFinish Cir

35、cle2draw line雙擊rubber band單擊在第一點(diǎn)highlight line選擇 lineLine1Finish Line2狀態(tài)Menu表示系統(tǒng)正在等待用戶選擇Circle或Line的一種狀態(tài)。Circle1是等待用戶選擇圓心的狀態(tài),Circle2是選擇圓心后正在等待確定圓周上一個點(diǎn)的狀態(tài)。狀態(tài)之間是一些有向線段,表示觸發(fā)轉(zhuǎn)換的事件和條件以及轉(zhuǎn)換發(fā)生時的動作。狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)的優(yōu)點(diǎn)狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)比相應(yīng)的文本解決方案更易于設(shè)計、理解、修改和文檔化,它給出了對行為的精確的、甚至是格式化的定義。存在著一定的局限性最大的缺陷是需要定義出系統(tǒng)的所有狀態(tài),這對于小型的系統(tǒng)是沒有問題的,但是在一個

36、較大的系統(tǒng)中,系統(tǒng)會很快崩潰,狀態(tài)的數(shù)目是呈指數(shù)級增長的,同時狀態(tài)的增長直接導(dǎo)致了狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)過于復(fù)雜、無法實(shí)際應(yīng)用。 該圖是層次的狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò),類似于前面的狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò),但是增加了復(fù)合狀態(tài),如圖中的矩形框所示,每個矩形框都表示相關(guān)子菜單的所有的狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)。描述并發(fā)任務(wù)?狀態(tài)轉(zhuǎn)換模型的優(yōu)缺點(diǎn)狀態(tài)轉(zhuǎn)換模型的優(yōu)缺點(diǎn)優(yōu)點(diǎn)具有良好的描述串行和順序行為的能力比相應(yīng)的文本解決方案更易于設(shè)計、理解、修改和文檔化它給出了對行為的精確的、甚至是格式化的定義缺點(diǎn)狀態(tài)的爆發(fā)式增長問題并發(fā)及其他行為的描述能力差雖然是一個結(jié)構(gòu)模型,但難以實(shí)現(xiàn)行為模型和結(jié)構(gòu)模型的轉(zhuǎn)換行為模型和結(jié)構(gòu)模型的轉(zhuǎn)換 轉(zhuǎn)換算法 行為模型(G-U

37、-L) 結(jié)構(gòu)模型State ChartsGOMSUANLOTOS約束規(guī)則用戶D o m a i n ExpertDesigner 模型轉(zhuǎn)換整體框架整個框架分為三個部分: 行為模型使用G-U-L模型,在這一層將產(chǎn)生一個基本的預(yù)測性的行為模型。 結(jié)構(gòu)模型采用層次狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò),它涉及到的元素有狀態(tài)、轉(zhuǎn)換、事件、層次結(jié)構(gòu)。不考慮狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)在轉(zhuǎn)換中條件和同步,可以簡化轉(zhuǎn)換工作。 用戶包含兩種用戶,領(lǐng)域?qū)<液驮O(shè)計者。G-U-L模型的創(chuàng)建主要是由領(lǐng)域?qū)<液驮O(shè)計者合作來完成的,然后通過模型轉(zhuǎn)換算法轉(zhuǎn)換成為結(jié)構(gòu)模型,最后提供給設(shè)計者使用。 轉(zhuǎn)換轉(zhuǎn)換算法算法 1.基本思想 2.基本步驟 3.實(shí)例應(yīng)用 651.1

38、.基本思想基本思想 采用G-U-L以層次化結(jié)構(gòu)對任務(wù)進(jìn)行建模,包括目標(biāo)(包括循環(huán)屬性)、行為、關(guān)系。狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)表示的是狀態(tài)之間的轉(zhuǎn)換,也采用層次化表示,涉及到的主要是狀態(tài)、轉(zhuǎn)換、事件、行為。在G-U-L中體現(xiàn)的層次關(guān)系轉(zhuǎn)換到狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)中也體現(xiàn)出層次的關(guān)系,G-U-L中的每個目標(biāo)都對應(yīng)一個狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)。如果一個目標(biāo)下層有子目標(biāo),對子目標(biāo)來說,它所對應(yīng)的狀態(tài)網(wǎng)絡(luò)應(yīng)該嵌套在上層目標(biāo)對應(yīng)的狀態(tài)網(wǎng)絡(luò)中。 661.1.基本思想基本思想在產(chǎn)生的狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)中,有兩類事件起作用:一類是外部由用戶激活的事件,如“按下鼠標(biāo)” 事件、“點(diǎn)擊鍵盤” 事件等;另一類是內(nèi)部由目標(biāo)產(chǎn)生的內(nèi)部事件,在這里只定義了“目標(biāo)正

39、常結(jié)束”,表示目標(biāo)正常結(jié)束時產(chǎn)生的事件。67在進(jìn)行從G-U-L到狀態(tài)的轉(zhuǎn)換時,這些事件只是形式上的一個定義,沒有具體的實(shí)現(xiàn)過程,如要在某一層出現(xiàn)的第i個外部事件用“外部事件i”來代替,而由某個目標(biāo)Ti執(zhí)行時產(chǎn)生的內(nèi)部事件也可以用“Ti正常結(jié)束事件”來表示,而具體的事件還需要由狀態(tài)網(wǎng)絡(luò)進(jìn)行,系統(tǒng)實(shí)現(xiàn)時通過專門的事件管理器來定義和管理。 在G-U-L中的一個行為在轉(zhuǎn)換后就成為對應(yīng)的狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)中的一個行為。 2.2.基本步驟基本步驟對轉(zhuǎn)換后的數(shù)據(jù),存儲的是狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)中表示轉(zhuǎn)換的弧,如下圖所示: 狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)中弧的表示結(jié)構(gòu) 其中的觸發(fā)事件就是觸發(fā)從出發(fā)狀態(tài)到目的狀態(tài)轉(zhuǎn)換的事件;父狀態(tài)表示的是當(dāng)前弧

40、所在狀態(tài)網(wǎng)絡(luò)的上層狀態(tài),可以是一個抽象出來的狀態(tài)名;692.2.基本步驟基本步驟轉(zhuǎn)換基本步驟(1)首先讀取存儲G-U-L模型的數(shù)據(jù)文件,進(jìn)行解析,定義一個數(shù)組stn用于存儲狀態(tài)網(wǎng)絡(luò)中的弧。獲取G-U-L模型中的最高目標(biāo),設(shè)為G0,然后調(diào)用Translate函數(shù),在Translate執(zhí)行完畢后,stn中便存儲了轉(zhuǎn)換后的狀態(tài)網(wǎng)絡(luò)的數(shù)據(jù)。函數(shù)示意如下:main()定義一個存儲弧的數(shù)組stn讀取G-U-L文件GOAL G0”: 允許關(guān)系處理 case “|”: 交替關(guān)系處理 case “”: 禁止關(guān)系處理 /對所有的子目標(biāo)進(jìn)行遞歸調(diào)用 for(int I;I(G0,G1),在這種關(guān)系中完成目標(biāo)G的路徑

41、只有一條,當(dāng)G0成功結(jié)束后才允許G1執(zhí)行,這是一個順序執(zhí)行的過程。在轉(zhuǎn)換成狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)后如圖6-17所示。 76圖6-17 允許”關(guān)系狀態(tài)網(wǎng)絡(luò)G1正常結(jié)束事件G0正常結(jié)束事件外部事件S1S2S0產(chǎn)生G正常結(jié)束事件G2正常結(jié)束事件G0正常結(jié)束事件外部事件S1S3S0產(chǎn) 生 G正常結(jié)束事件S2G1正常結(jié)束事件(G0,G1,G2)從狀態(tài)S0在外部事件激發(fā)轉(zhuǎn)換至S1,在S1狀態(tài)等待“G0正常結(jié)束事件”發(fā)生后轉(zhuǎn)換至S2;然后在S2處等待“G1正常結(jié)束事件”轉(zhuǎn)換至S0,這樣表示目標(biāo)G執(zhí)行完畢,同時發(fā)生動作“產(chǎn)生G正常結(jié)束事件”,處理轉(zhuǎn)換過程中存儲所有的弧。這種約束關(guān)系允許同一層次下有多個目標(biāo)存在,如(G0

42、,G1,Gn),這些目標(biāo)都是順序執(zhí)行。 78“交替交替” ” 關(guān)系狀態(tài)網(wǎng)絡(luò)關(guān)系狀態(tài)網(wǎng)絡(luò)設(shè)目標(biāo)G下的子目標(biāo)關(guān)系為|(G0,G1),表示兩個目標(biāo)之間一種任意的組合來執(zhí)行完成。在轉(zhuǎn)換到狀態(tài)網(wǎng)絡(luò)后,如圖6-18所示,有S0-S1-S4-S0和S0-S2-S3-S0兩條途徑可以完成目標(biāo)G的一次執(zhí)行。 79圖6-18 “交替”關(guān)系狀態(tài)網(wǎng)絡(luò)G0正常結(jié)束事件S2G1正常結(jié)束事件G0正常結(jié)束事件 外部事件0S0S3S4S1產(chǎn)生G正常結(jié)束事件產(chǎn)生G正常結(jié)束事件G1常結(jié)束事件 外部事件1“禁止禁止” 關(guān)系狀態(tài)網(wǎng)絡(luò)關(guān)系狀態(tài)網(wǎng)絡(luò)設(shè)目標(biāo)G下的子目標(biāo)關(guān)系為(G0,G1),一旦G1任務(wù)被執(zhí)行,G0便無效(不活動)。這個關(guān)系在

43、轉(zhuǎn)換到狀態(tài)網(wǎng)絡(luò)以后與前面不同的是,在狀態(tài)S2被“G1正常結(jié)束事件”激活以后,不會再回到S0,而是轉(zhuǎn)到了一個新的狀態(tài)F。一個典型的例子是G0=”運(yùn)行”,G1=”退出”。在執(zhí)行退出以后整個程序結(jié)束,也就無法再回到運(yùn)行狀態(tài)了。 山東大學(xué)計算機(jī)學(xué)院80G0正常結(jié)束事件產(chǎn)生G正常結(jié)束事件G1正常結(jié)束事件外部事件0外部事件1S2S0F圖6-19 “禁止”關(guān)系狀態(tài)網(wǎng)絡(luò)產(chǎn)生G正常結(jié)束事件S13.3.實(shí)例應(yīng)用實(shí)例應(yīng)用 根據(jù)上面的轉(zhuǎn)換算法,在后面的圖中給出了中國象棋的最高層目標(biāo)、運(yùn)行、走棋三個目標(biāo)的狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò),它們之間通過事件的產(chǎn)生和激活完成其層次間的通信。81最高層目標(biāo) 82運(yùn)行正常結(jié)束事件外部事件1外部事件

44、0退出正常結(jié)束事件S0S1S2F圖6-20a 最高層目標(biāo)狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)83運(yùn)行 產(chǎn)生運(yùn)行正常結(jié)束事件產(chǎn)生運(yùn)行正常結(jié)束事件走棋正常結(jié)束事件打譜正常結(jié)束事件S02外部事件1打譜正常結(jié)束事件走棋正常結(jié)束事件外部事件0S00S03S04S01圖6-20b “運(yùn)行”目標(biāo)狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)走棋 84圖6-20c “走棋”目標(biāo)狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)走棋 對弈方走正常結(jié)束事件產(chǎn)生走棋正常結(jié)束事件當(dāng)前方走正常結(jié)束事件外部事件S001S002S0006.1.4 6.1.4 表現(xiàn)模型表現(xiàn)模型 表現(xiàn)模型(PM)描述了用戶界面的表現(xiàn)形式,由層次性的交互對象組成。交互對象一般由抽象交互對象和具體交互對象組成。l以管理信息系統(tǒng)為例,其交互界

45、面主要是由填表界面組成的,填表的用戶界面由兩種元素組成,一個是界面元素,一個是面板。界面元素由界面元素屬性以及對幾何對象、內(nèi)容與繪制對象的描述組成。面板則繼承了界面元素的模型定義,還添加了可包含的界面元素的列表和布局的定義。6.1 6.1 人機(jī)交互界面表示模型人機(jī)交互界面表示模型在一個填表界面中,可以有很多面板,這些面板以鏈表形式組織。每個表面板或是嵌套面板,或是包含很多界面元素,這就形成了森林的結(jié)構(gòu)。森林的每棵樹是一個面板,樹的根節(jié)點(diǎn)是整個面板對象。面板用戶界面的圖形顯示面板用戶界面的數(shù)據(jù)結(jié)構(gòu)表示面板用戶界面的繪制面板用戶界面的邏輯組織結(jié)構(gòu)面板用戶界面的各種重疊的面板以鏈表的形式來存儲,每個

46、面板的的顯示是有順序,顯示策略是:被選中的面板顯示在屏幕的最上層。假設(shè)有A、B、C、D四個面板依次按照字母順序排列,即面板A的顯示在屏幕的最上層。如果選中了面板C,那么面板C的顯示就會在屏幕最上層,而其他三個面板的優(yōu)先級按照原來的先后順序排列。l面板間的關(guān)系面板間的關(guān)系 Jacob Eisenstein將面板間的關(guān)系定義為并列、嵌套、依賴三種。并列關(guān)系是指兩個面板在功能上獨(dú)立,沒有任何其他關(guān)系。嵌套關(guān)系是指面板A在面板B的內(nèi)部,面板A包含面板B。依賴關(guān)系分為兩種,一類是界面內(nèi)部的依賴,即父子關(guān)系面板,父子關(guān)系是指面板B依賴于面板A的某個界面元素開啟顯現(xiàn)活動的命令開關(guān),這樣就稱面板A是面板B的父

47、面板。另一類依賴關(guān)系是對服務(wù)的依賴,面板依賴于某個服務(wù)的存在而顯現(xiàn)。6.1 6.1 人機(jī)交互界面表示模型人機(jī)交互界面表示模型面板界面可以分為三類:獨(dú)立顯現(xiàn)的面板一般是可以單獨(dú)運(yùn)行的應(yīng)用程序界面面板面板是用戶定義的可以嵌套到任意面板的而且不能獨(dú)立顯示的界面塊。原子面板是面板中的最小的單位,是不可再分的面板 界面描述語言一般分為兩類:命令式語言(Imperative Language)和陳述式語言(Declarative Language)。命令式語言要求編程人員明確的指定如何執(zhí)行任務(wù),陳述性語言要求編程人員只需指定任務(wù)要做什么,陳述性語言要比命令式的語言更為抽象。從知識的表示方法來看,知識一般有

48、陳述性表示,和過程性表示兩大類。陳述性表示只給出事物本身的屬性及事物之間的相互關(guān)系。過程性知識給出解決一個問題的具體過程。6.2 6.2 界面描述語言界面描述語言用戶界面標(biāo)記語言(UIML)6.2 6.2 界面描述語言界面描述語言語言的基本表示結(jié)構(gòu)擴(kuò)展界面標(biāo)記語言(XIML) 6.2 6.2 界面描述語言界面描述語言XML語言的基本表示結(jié)構(gòu) XML用戶界面語言XUL XUL提供了創(chuàng)建現(xiàn)代圖形界面大多數(shù)元素的能力。能夠滿足特定設(shè)備的普遍需求,對開發(fā)者來說,也已經(jīng)足夠強(qiáng)大,能夠創(chuàng)建復(fù)雜的界面。6.2 6.2 界面描述語言界面描述語言窗口系統(tǒng)對交互系統(tǒng)實(shí)現(xiàn)的支持窗口系統(tǒng)提供設(shè)備獨(dú)立性和資源的共享,在

49、窗口系統(tǒng),程序員不用擔(dān)心輸入和輸出設(shè)備的初始化,應(yīng)用程序從窗口系統(tǒng)管理器接收事件請求流,完成相應(yīng)的交互操作。窗口系統(tǒng)還強(qiáng)調(diào)為程序員提供硬件設(shè)備獨(dú)立性,交互系統(tǒng)的實(shí)現(xiàn)建立在一個抽象的設(shè)備上,這可以使交互系統(tǒng)的開發(fā)變得簡單,也使交互系統(tǒng)的移植非常方便。窗口系統(tǒng)為單一輸入輸出設(shè)備建立多個抽象設(shè)備來實(shí)現(xiàn)其資源的共享。從應(yīng)用的角度看,每個應(yīng)用程序獨(dú)立地對設(shè)備進(jìn)行操作,另一方面,窗口系統(tǒng)還為每個窗口提供一個抽象顯示設(shè)備,可以為每個活動的抽象顯示設(shè)備建立一個窗口來實(shí)現(xiàn)。 6.3.1 6.3.1 窗口系統(tǒng)結(jié)構(gòu)窗口系統(tǒng)結(jié)構(gòu) 窗口系統(tǒng)一般有三種結(jié)構(gòu):1.在各個應(yīng)用程序內(nèi)部實(shí)現(xiàn)和管理多任務(wù),由于每個應(yīng)用程序都需要處

50、理復(fù)雜的多任務(wù)管理,且移植起來不方便,這種結(jié)構(gòu)有一定的缺點(diǎn)。 2.在操作系統(tǒng)核心集中處理多任務(wù)管理,應(yīng)用程序不再對多任務(wù)進(jìn)行管理,由于過分的依賴操作系統(tǒng),應(yīng)用程序需要處理因操作系統(tǒng)的不同而引起的差異,因此移植起來也不太方便。 3.多任務(wù)的管理可由獨(dú)立的管理程序進(jìn)行管理,應(yīng)用程序通過調(diào)用該管理程序提供的接口來實(shí)現(xiàn)對多任務(wù)的管理和設(shè)備的獨(dú)立性操作,因?yàn)樵摴芾沓绦蚩梢栽诓煌牟僮飨到y(tǒng)下運(yùn)行,因而基于此管理程序開發(fā)的交互系統(tǒng)是最容易移植的。 一種客戶一種客戶/ /服務(wù)器結(jié)構(gòu)服務(wù)器結(jié)構(gòu) 資源管理器 是整個窗口系統(tǒng)的核心,負(fù)責(zé)多任務(wù)的管理,并通過設(shè)備驅(qū)動程序來管理外部設(shè)備 。設(shè)備驅(qū)動程序 負(fù)責(zé)外部設(shè)備的驅(qū)

51、動,接受輸入設(shè)備的輸入,并將輸入數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一的格式,通過設(shè)備驅(qū)動程序?qū)崿F(xiàn)設(shè)備的獨(dú)立性 。抽象終端 負(fù)責(zé)和客戶應(yīng)用程序的接口,對每個應(yīng)用程序由窗口管理程序?yàn)槠浞峙湟粋€抽象終端。當(dāng)外部設(shè)備產(chǎn)生一個輸入請求,如鼠標(biāo)單擊某一個窗口內(nèi)的一點(diǎn),資源管理程序從設(shè)備驅(qū)動程序獲得鼠標(biāo)數(shù)據(jù),產(chǎn)生鼠標(biāo)驅(qū)動事件,并將該事件分發(fā)給與該窗口相對應(yīng)的抽象終端,與抽象終端相對應(yīng)的應(yīng)用程序接受事件并進(jìn)行相應(yīng)的處理。實(shí)現(xiàn)時,客戶程序和服務(wù)器程序可以在一臺機(jī)器上,也可以分布在不同的機(jī)器上。 在客戶/服務(wù)器結(jié)構(gòu)中,交互系統(tǒng)的應(yīng)用程序通過調(diào)用服務(wù)器端一個獨(dú)立的管理程序來管理多任務(wù)和提供設(shè)備的獨(dú)立性,相當(dāng)于客戶-服務(wù)器結(jié)構(gòu)中的客戶。交

52、互應(yīng)用一般來講是由用戶驅(qū)動的,即用戶從外部設(shè)備上輸入數(shù)據(jù),應(yīng)用程序的動作由用戶輸入來決定,應(yīng)用程序可以采用下面的兩種控制流程實(shí)現(xiàn)用戶的交互。 服務(wù)器把用戶的輸入作為事件送給客戶應(yīng)用程序,對服務(wù)器而言,要決定把輸入事件送給哪個客戶程序??蛻魬?yīng)用程序?qū)鹘o它的所有事件都做出響應(yīng),不同的事件采取不同的處理方式窗口系統(tǒng)為每一個應(yīng)用程序建立一個事件處理中心,事件處理中心負(fù)責(zé)事件的處理。應(yīng)用程序?qū)⒆约焊信d趣的事件處理事先通過登記注冊的方式通知事件處理中心,注冊時同時告訴事件處理中心當(dāng)事件產(chǎn)生時,應(yīng)用程序需要進(jìn)行的處理(回應(yīng)過程)。 當(dāng)事件處理中心從窗口系統(tǒng)接收一個事件,就分析這個事件屬于哪個應(yīng)用程序,然后

53、把事件和控制轉(zhuǎn)向該事件注冊的回應(yīng)過程,處理完后,回應(yīng)過程把控制返還給事件處理中心,事件中心繼續(xù)接收事件或者請求終止。 這種方式的好處是一般應(yīng)用程序不需要設(shè)計事件處理循環(huán),只關(guān)心應(yīng)用程序需要處理哪些交互事件,當(dāng)事件發(fā)生時應(yīng)用程序如何處理。當(dāng)應(yīng)用程序不需要處理某個事件時,應(yīng)用程序還可以隨時取消注冊。因?yàn)槿绻惶幚碜缘氖录?,事件處理中心處理事件的效率就會比較高。 6.3.3 6.3.3 交互組件開發(fā)包交互組件開發(fā)包 對于一般的窗口系統(tǒng),輸入和顯示是分離的,許多語言提供了用于開發(fā)交互系統(tǒng)的開發(fā)軟件包,交互系統(tǒng)開發(fā)軟件包在支持窗口管理的基礎(chǔ)上增加了另一種抽象,它把輸入和輸出的行為結(jié)合起來。按鈕交互對象

54、行為6.3 窗口系統(tǒng)6.3.4 6.3.4 交互框架交互框架桌面應(yīng)用框架6.3 窗口系統(tǒng)下拉菜單示例工具欄示例6.3 窗口系統(tǒng)樹形菜單示例狀態(tài)欄示例標(biāo)簽頁方式工作區(qū)示例6.3 窗口系統(tǒng)6.3.5 MVC6.3.5 MVC模式和基于模式和基于StrutsStruts的實(shí)現(xiàn)的實(shí)現(xiàn) MVC(Model View controller)模型最初是在Smalltalk程序語言中被用來構(gòu)建用戶界面的,是目前廣泛流行的一種軟件設(shè)計模式。MVC把一個應(yīng)用的輸入、處理、輸出流程按照模型 (model)、視圖(View)和控制(Controller)的方式進(jìn)行分離,形成模型層、視圖層、控制層三個層次。視圖(視圖(

55、ViewView)視圖代表用戶交互界面,對于Web應(yīng)用來說,可以概括為HTML界面,但有可能為XHTML、XML和Applet。一個應(yīng)用可能有很多不同的視圖,MVC設(shè)計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交給模型(Model)處理。 模型模型 (model) (model)模型負(fù)責(zé)業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定業(yè)務(wù)流程的處理過程對其它層來說是透明的,模型接受視圖請求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計可以說是MVC最主要的核心,模型包含完成任務(wù)所需要的所有的行為和數(shù)據(jù)。MVC并沒有提供模型的設(shè)計方法,而

56、只告訴你應(yīng)該組織管理這些模型,以便于模型的重構(gòu)和提高重用性??刂疲刂疲–ontrollerController)控制器將模型映射到界面中,處理用戶的輸入,每個界面有一個控制器。是一個接收用戶輸入、創(chuàng)建或修改的模型對象。在需要時還負(fù)責(zé)創(chuàng)建其它的界面和控制器。決定哪些界面和模型組件在某個給定的時刻應(yīng)該是活動的,負(fù)責(zé)接收和處理用戶的輸入,來自用戶輸入的任何變化都被從控制器送到模型 。MVCMVC的目的的目的 MVC的目的是增加代碼的重用率,減少數(shù)據(jù)表達(dá)、數(shù)據(jù)描述和應(yīng)用操作的耦合度。 使得軟件可維護(hù)性,可修復(fù)性,可擴(kuò)展性,靈活性以及封裝性大大提高。由于數(shù)據(jù)和應(yīng)用的分開,在新的數(shù)據(jù)源加入和數(shù)據(jù)顯示變化

57、的時候,數(shù)據(jù)處理也會變得更簡單。 MVCMVC的優(yōu)點(diǎn)的優(yōu)點(diǎn)可以為一個模型在運(yùn)行時同時建立和使用多個視圖 視圖與控制器的可接插性,允許更換視圖和控制器對象,而且可以根據(jù)需求動態(tài)地打開或關(guān)閉、甚至在運(yùn)行期間進(jìn)行對象替換 模型的可移植性,因?yàn)槟P褪仟?dú)立于視圖的,所以可以把一個模型獨(dú)立地移植到新的平臺工作 MVCMVC模型的不足模型的不足 增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性。對于簡單的界面,嚴(yán)格遵循MVC,使模型、視圖與控制器分離,會增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過多的更新操作,降低運(yùn)行效率 視圖與控制器間的過于緊密的連接。視圖與控制器是相互分離、但又確實(shí)聯(lián)系緊密的部件,視圖沒有控制器的存在,其應(yīng)用是很有限的

58、 視圖對模型數(shù)據(jù)的低效率訪問。依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù) Struts這個名字來源于在建筑和舊式飛機(jī)中使用的支持金屬架。這個框架之所以叫Struts,是為了提醒我們記住那些支撐我們房屋,建筑,橋梁,甚至我們踩高蹺時候的基礎(chǔ)支撐。2. Struts的體系結(jié)構(gòu) Struts的體系結(jié)構(gòu)實(shí)現(xiàn)了MVC模式的概念,它將這些概念映射到web應(yīng)用程序的組件和概念中。2. Struts的體系結(jié)構(gòu)StrutsStruts結(jié)構(gòu)對結(jié)構(gòu)對MVCMVC模型的實(shí)現(xiàn)模型的實(shí)現(xiàn)視圖(View)JSP頁面和表示組件基于Struts的應(yīng)用程序中的視圖部分通常使用JSP技術(shù)來構(gòu)建。每一視圖都是

59、采用了定制標(biāo)簽庫的JSP頁面,這些定制標(biāo)簽庫由Struts Framework提供。全部表單元素都是用定制標(biāo)簽編碼的,所以這些頁面能夠很方便地同控制器進(jìn)行交互每個表單都通過映射JSP到servlet的請求這一方式指向控制器的特定入口點(diǎn)。 StrutsStruts結(jié)構(gòu)對結(jié)構(gòu)對MVCMVC模型的實(shí)現(xiàn)模型的實(shí)現(xiàn)控制器(Controller)ActionServlet和ActionMapping 應(yīng)用程序的控制器從客戶端接收請求,決定執(zhí)行什么業(yè)務(wù)邏輯,然后將產(chǎn)生下一步用戶界面的責(zé)任委派給一個適當(dāng)?shù)囊晥D組件。在Struts中,控制器的基本組件是ActionServlet類的servlet。這個servl

60、et通過定義一組映射(由Java接口ActionMapping描述)來配置。每個映射定義一個與所請求的URI相匹配的路徑和一個 Action類(一個實(shí)現(xiàn)Action接口的類)完整的類名,這個類負(fù)責(zé)執(zhí)行預(yù)期的邏輯,然后將控制分派給適當(dāng)?shù)囊晥D組件來創(chuàng)建響應(yīng)。 StrutsStruts結(jié)構(gòu)對結(jié)構(gòu)對MVCMVC模型的實(shí)現(xiàn)模型的實(shí)現(xiàn)模型(model)系統(tǒng)狀態(tài)和商業(yè)邏輯JavaBeans 在struts中,模型分為兩個部分:系統(tǒng)的內(nèi)部狀態(tài)、可以改變狀態(tài)的操作(事務(wù)邏輯)。內(nèi)部狀態(tài)通常由一組ActionForm JavaBean表示。根據(jù)設(shè)計或應(yīng)用程序復(fù)雜度的不同,這些Bean可以是自包含的并具有持續(xù)的狀態(tài),或只在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論