人機(jī)交互系統(tǒng)
人機(jī)交互界面作為一個(gè)獨(dú)立的、重要的研究領(lǐng)域受到了世界各計(jì)算機(jī)廠家的 關(guān)注。并成為90年代計(jì)算機(jī)行業(yè)的又一競(jìng)爭(zhēng)領(lǐng)域。從計(jì)算機(jī)技術(shù)的發(fā)展過(guò)程來(lái)看, 人機(jī)交互界面技術(shù)還引導(dǎo)了相關(guān)軟硬件技術(shù)的發(fā)展,是新一代計(jì)算機(jī)系統(tǒng)取得成 功的保證。
80年代已來(lái),計(jì)算機(jī)的軟件和硬件技術(shù)取得了較大的發(fā)展,同時(shí),計(jì)算機(jī)的 使用者也從計(jì)算機(jī)專家迅速擴(kuò)大到了廣大未受過(guò)專門(mén)訓(xùn)練的普通用戶,由此極大 地提高了用戶界面在系統(tǒng)設(shè)計(jì)和軟件開(kāi)發(fā)中的重要性,強(qiáng)烈地刺激了人機(jī)交互界 面的進(jìn)步。
人-計(jì)算機(jī)的交互作用是通過(guò)用戶界面來(lái)實(shí)現(xiàn)的。與傳統(tǒng)人-機(jī)系統(tǒng)不同的 是,人-計(jì)算機(jī)系統(tǒng)中的交互形式已成為用戶與計(jì)算機(jī)兩個(gè)“智能系統(tǒng)”之間的 通訊和對(duì)話。
在計(jì)算機(jī)技術(shù)發(fā)展的初期,由于系統(tǒng)的運(yùn)行速度慢、價(jià)格昂貴并且可靠性差, 不可能進(jìn)行交互使用,用戶必須調(diào)整自己的行為去適應(yīng)機(jī)器的要求。因此,與計(jì) 算機(jī)使用中的其它問(wèn)題相比,界面只是一個(gè)小問(wèn)題。隨著計(jì)算機(jī)性能的提高,系 統(tǒng)能夠用一部分資源來(lái)處理人-計(jì)算機(jī)界面,用戶界面設(shè)計(jì)開(kāi)始引起人們的注意。
用戶界面的發(fā)展對(duì)計(jì)算機(jī)系統(tǒng)整體性能的提高所具有的重要性已經(jīng)得到了人 們的高度重視,與此同時(shí),圍繞人機(jī)建模業(yè)已形成了計(jì)算機(jī)產(chǎn)業(yè)又一新的競(jìng)爭(zhēng)領(lǐng) 域。在美國(guó)人機(jī)建模研究在信息技術(shù)中被列為與軟件和計(jì)算機(jī)并列的六項(xiàng)國(guó)家關(guān) 鍵技術(shù)之一,并被認(rèn)為“對(duì)于計(jì)算機(jī)工業(yè)有著突出的重要性,對(duì)其它工業(yè)也是很 重要的”。美國(guó)國(guó)防關(guān)鍵技術(shù)計(jì)劃不僅把人機(jī)交互界面列為軟件技術(shù)發(fā)展的重要 內(nèi)容之一,而且還專門(mén)增加了與軟件技術(shù)并列的人-系統(tǒng)界面一項(xiàng)內(nèi)容。日本也 提出了FPIEND21計(jì)劃(Future Personalized Information Enviroment Develop- ment),其目標(biāo)就是要開(kāi)發(fā)21世界的計(jì)算機(jī)界面。
我國(guó)在人機(jī)界面方面的設(shè)計(jì)與國(guó)際同類研究相比還存在較大差距。目前的研 究?jī)H僅著重于支持界面的軟件和硬件,對(duì)界面本身還缺少深入的研究,用戶界面 的設(shè)計(jì)還沒(méi)有成為軟件設(shè)計(jì)中獨(dú)立的一部分,也缺少新的人機(jī)界面設(shè)計(jì)技術(shù)。而 另一方面,計(jì)算機(jī)科學(xué)的發(fā)展和計(jì)算機(jī)的普及應(yīng)用卻對(duì)人機(jī)界面的研究提出了越 來(lái)越高的要求。
進(jìn)入九十年代計(jì)算機(jī)軟件開(kāi)發(fā)已進(jìn)入了以開(kāi)發(fā)軟件工具和建立軟件開(kāi)發(fā)環(huán)境 為目標(biāo)的時(shí)代。作為支持人機(jī)交互軟件開(kāi)發(fā)環(huán)境的用戶界面管理系統(tǒng)UIMS正日益 受到人們的關(guān)注和重視。今后UIMS將有可能進(jìn)入各類實(shí)際軟件開(kāi)發(fā)環(huán)境,成為繼 DBMS之后的又一個(gè)重要的軟件開(kāi)發(fā)環(huán)境和工具。
返回目錄↑2、2、關(guān)鍵技術(shù)
軟件界面是人-機(jī)之間的信息界面,從某種意義上講,它比硬件和工作環(huán)境 更為重要。優(yōu)化軟件界面就是要合理設(shè)計(jì)和管理人- 機(jī)對(duì)話的結(jié)構(gòu)。對(duì)話的結(jié)構(gòu) 設(shè)計(jì)一般可分為初始設(shè)計(jì)、形式評(píng)價(jià)和總結(jié)評(píng)價(jià)三個(gè)階段。
2.1人類工程學(xué)
人類工程學(xué)是一門(mén)應(yīng)用廣泛的綜合性邊緣學(xué)科,作為一門(mén)獨(dú)立的學(xué)科,人類 工程學(xué)在我國(guó)的歷史還很短,我國(guó)的心理學(xué)家、人類學(xué)家、勞動(dòng)保護(hù)和醫(yī)學(xué)工作 者、機(jī)械工程師正結(jié)合自己的領(lǐng)域,開(kāi)展這方面的工作。
。1)人類工程學(xué)中人的特性
人在系統(tǒng)中是主體,任何先進(jìn)的機(jī)器都是由人設(shè)計(jì)的,由人操縱的,所以系 統(tǒng)工作效率的優(yōu)劣、安全性,很大程度上決定于人的工作狀況。人類工程學(xué)中要 研究人對(duì)外界信息的感知特性,人對(duì)信息的加工、處理及思維能力,人的學(xué)習(xí)、 記憶特性,人的自身節(jié)率等等。
1) 人的感覺(jué)功能
a. 視覺(jué) 人們通過(guò)視覺(jué)器官認(rèn)識(shí)外界事物,由大腦產(chǎn)生正確的思考,視覺(jué) 對(duì)勞動(dòng)的產(chǎn)量、質(zhì)量及安全均有影響,還影響到勞動(dòng)者的心理活動(dòng)過(guò)程。
b. 聽(tīng)覺(jué) 人耳對(duì)聲音響度的感覺(jué)主要是和聲強(qiáng)有關(guān)。人接受聽(tīng)覺(jué)信息要比 接受視覺(jué)信息快。據(jù)測(cè)定,人的聽(tīng)覺(jué)反應(yīng)時(shí)間約為120-150ms,較光信息快30- 50ms。聽(tīng)覺(jué)信號(hào)常用于報(bào)警。
c. 觸覺(jué)等 人們通過(guò)觸覺(jué)器官接受物體的空間位置、形狀、表面情況和原 材料等信息。
2) 人的信息處理及輸出特性
a. 人的反應(yīng)時(shí)間 操作者在操縱、監(jiān)視設(shè)備時(shí),從出現(xiàn)信號(hào)刺激到采取相 應(yīng)動(dòng)作,存在一個(gè)反應(yīng)時(shí)間。人體的運(yùn)動(dòng)系統(tǒng)反應(yīng)速度比較緩慢,神經(jīng)肌肉接頭 的反應(yīng)延遲時(shí)間為0.1-0.2s.
b. 人的信息傳輸 信息在神經(jīng)系統(tǒng)中的傳輸,是由不同的感覺(jué)通道,傳輸 不同的信息,如視覺(jué)系統(tǒng)的單個(gè)神經(jīng)纖維能傳輸不同的顏色信息,信息的傳輸速 率是一個(gè)重要的物理量。
3) 人機(jī)分工
設(shè)計(jì)人機(jī)交互界面,進(jìn)行人機(jī)分工時(shí),要充分發(fā)揮人機(jī)的各自特點(diǎn)?刹捎 最大最小原則,即人承擔(dān)的工作量應(yīng)盡量少或最少,機(jī)器承擔(dān)的工作量應(yīng)最大, 在最大限度利用機(jī)器的同時(shí),充分發(fā)揮人的積極因素。人機(jī)結(jié)合并充分注意人的 主導(dǎo)地位,將有效地保證系統(tǒng)的可靠性和壽命。
。2)計(jì)算機(jī)輔助設(shè)計(jì)和計(jì)算機(jī)圖形學(xué)中的人的因素
利用CAD技術(shù)并結(jié)合CAM技術(shù)可以大大縮短產(chǎn)品的設(shè)計(jì)-制造周期,CAD已經(jīng) 成為制造業(yè)中求生存的一種主要手段。CAD中主要的人的因素問(wèn)題有:CAD硬件中 的圖形終端、輸入裝置和菜單設(shè)計(jì),CAD系統(tǒng)中人的信息加工能力,如有關(guān)CAD顯 示的視覺(jué)、CAD中的空間推理、CAD中的問(wèn)題解決及運(yùn)動(dòng)反應(yīng)等過(guò)程;CAD系統(tǒng)中 人機(jī)功能分配;CAD系統(tǒng)中的工作設(shè)計(jì)、人員選拔和訓(xùn)練等。
。3)計(jì)算機(jī)輔助制造中的人的因素
CAM可被廣義地認(rèn)為是在制造業(yè)的管理、控制和運(yùn)行中有效地應(yīng)用計(jì)算機(jī)的一 項(xiàng)新技術(shù),其最終目標(biāo)是要建成CIMS,它將是一項(xiàng)在21世紀(jì)最具競(jìng)爭(zhēng)力的技術(shù)。 認(rèn)知工程學(xué)在CAM領(lǐng)域的主要研究?jī)?nèi)容:自動(dòng)化與工作分片、CAM中的人的決策和 自動(dòng)化制造中人的監(jiān)控。
2.2 人機(jī)界面設(shè)計(jì)原則
。1)媒體最佳組合
媒體界面的成功并不在于僅向用戶提供豐富的媒體,而應(yīng)在了解媒體的功能、 選擇方法的基礎(chǔ)上,在相關(guān)理論的指導(dǎo)下,在語(yǔ)義層上將各種媒體有機(jī)地結(jié)合起 來(lái)以更有效地傳遞信息。
。2)界面分析與規(guī)范
在人機(jī)界面設(shè)計(jì)中,首先應(yīng)進(jìn)行界面設(shè)計(jì)分析,即收集有關(guān)用戶及其應(yīng)用環(huán) 境信息以后,進(jìn)行用戶特性分析,用戶任務(wù)分析,記錄用戶有關(guān)系統(tǒng)的概念、術(shù) 語(yǔ),這項(xiàng)工作可與應(yīng)用系統(tǒng)分析結(jié)合進(jìn)行。分析任務(wù)中對(duì)界面設(shè)計(jì)要有界面規(guī)范 說(shuō)明,選擇界面設(shè)計(jì)類型,并確定設(shè)計(jì)的主要組成部分。
由于人機(jī)界面是為適合人的需要而建立的,所以要清楚使用該界面用戶的類 型,要了解用戶使用系統(tǒng)的頻率、用途及對(duì)用戶的綜合知識(shí)和智力的測(cè)試,這些 均是用戶設(shè)計(jì)中的內(nèi)容。在此基礎(chǔ)上產(chǎn)生任務(wù)規(guī)范說(shuō)明,進(jìn)行任務(wù)設(shè)計(jì)。任務(wù)設(shè) 計(jì)的目的在于重新組織任務(wù)規(guī)范說(shuō)明以產(chǎn)生一個(gè)更有邏輯性的編排。設(shè)計(jì)應(yīng)精心 地分別給出人與計(jì)算機(jī)的活動(dòng),使設(shè)計(jì)者較好地理解在設(shè)計(jì)一個(gè)界面時(shí)所遇到的 問(wèn)題,這樣形成系統(tǒng)操作手冊(cè)、訓(xùn)練文件和用戶指南的基礎(chǔ)。在考慮用戶工作方 式及系統(tǒng)環(huán)境和支持等因素下,精心任務(wù)設(shè)計(jì)。
任務(wù)確定之后,要決定界面類型。目前有多種人機(jī)界面設(shè)計(jì)類型,各有不同的 品質(zhì)和性能,因此設(shè)計(jì)者要了解每種類型的優(yōu)點(diǎn)和限制。大多數(shù)界面使用一種以 上的設(shè)計(jì)類型。下表列出了常用界面類型的優(yōu)缺點(diǎn)。 表1
3.圖標(biāo):用圖像代表功能
非常容易學(xué),易用(鼠標(biāo)操作〕,語(yǔ)言獨(dú)立性強(qiáng),編程較容易 占具屏幕可觀的空間,表達(dá)抽象概念描述力差,需文字解釋,需圖形硬件和軟件支持 初學(xué)者。有形成國(guó)際會(huì)話語(yǔ)言的趨勢(shì)
4.表格填寫(xiě) 使用速度快、易用、容易掌握 僅適合于數(shù)據(jù)輸入,不高級(jí) 數(shù)據(jù)錄入中用得最廣泛的會(huì)話類型,用于顯示和恢復(fù)界面,編輯初始界面
5.命令語(yǔ)言(單字命令到復(fù)雜語(yǔ)法的命令〕 使用功能強(qiáng),靈活,是界面可控制系統(tǒng)的高級(jí)方法,對(duì)屏幕空間使用十分經(jīng)濟(jì) 學(xué)習(xí)困難(學(xué)習(xí)代碼和語(yǔ)言條款〕,用戶需要系統(tǒng)功能的某些知識(shí),使用困難,研究 該界面工作量大 會(huì)使用復(fù)雜命令界面的熟練用戶,用戶發(fā)起和控制的對(duì)話
6.自然語(yǔ)言 自然的交流 難于編程實(shí)現(xiàn),語(yǔ)言識(shí)別困難,會(huì)出現(xiàn)二義性,輸入慢 在有限制的問(wèn)題中使用,可用于用戶發(fā)出的會(huì)話
2.3菜單屏幕設(shè)計(jì)的一些準(zhǔn)則
(1)按任務(wù)語(yǔ)義來(lái)組織菜單(單一菜單、線狀序列、樹(shù)狀結(jié)構(gòu)、非循環(huán)和循環(huán) 的網(wǎng)絡(luò)結(jié)構(gòu)〕;
。2)廣而淺的菜單樹(shù)優(yōu)先于窄而淺的菜單樹(shù);
。3)用圖形、數(shù)字或標(biāo)題來(lái)顯示位置;
。4)用選項(xiàng)名稱來(lái)作樹(shù)的標(biāo)題;
。5)根據(jù)含義將選項(xiàng)分組;
。6)根據(jù)含義將選項(xiàng)排序;
。7)選項(xiàng)力求簡(jiǎn)短,以關(guān)鍵詞開(kāi)始;
。8)語(yǔ)法、布局、用詞前后一致;
。9)允許超前鍵入、超前跳轉(zhuǎn)或其它捷徑;
。10)允許跳轉(zhuǎn)到前層的菜單和主菜單;
(11)考慮聯(lián)機(jī)求助、新穎選擇機(jī)制、響應(yīng)時(shí)間、顯示速率和屏幕尺寸。
2.4 錯(cuò)誤處理
在一個(gè)交互系統(tǒng)中,由于操作者的個(gè)人原因,經(jīng)常會(huì)產(chǎn)生誤操作,包括鍵入錯(cuò)誤、 數(shù)據(jù)輸入錯(cuò)誤等。同樣,在用戶編制的程序或設(shè)備連接時(shí)也可能會(huì)有錯(cuò)誤。 一個(gè)好的交互系統(tǒng)不能要求操作者不犯錯(cuò)誤,但應(yīng)該具有較強(qiáng)的處置各種錯(cuò)誤的能力, 除了在軟件設(shè)計(jì)時(shí)注意各種容錯(cuò)機(jī)制、魯棒性技術(shù)及各種診斷措施以外,在計(jì)算機(jī)用 戶界面上應(yīng)提供各種避免用戶操作錯(cuò)誤的提示及各種錯(cuò)誤信息的分析。
。1)錯(cuò)誤輸入
1)數(shù)據(jù)錄入錯(cuò)誤
在各類數(shù)據(jù)處理軟件中,數(shù)據(jù)錄入的錯(cuò)誤是經(jīng)常發(fā)生的薄弱環(huán)節(jié),為了減少用戶 在錄入時(shí)的錯(cuò)誤,應(yīng)采用一系列措施。
a. 對(duì)用戶輸入在屏幕上予以“回答”;
b. 對(duì)用戶在屏幕上的交互輸入,應(yīng)提供暫存文件以記錄全部輸入,以便全部數(shù) 據(jù)輸入完后或臨時(shí)需要時(shí)進(jìn)行檢查和確認(rèn);
c. 對(duì)用戶各種輸入應(yīng)提供檢查;
d. 對(duì)于數(shù)據(jù)庫(kù)中的重要數(shù)據(jù),必須進(jìn)行嚴(yán)格的復(fù)查核對(duì)。
2)控制輸入
控制輸入的內(nèi)容與用戶界面的風(fēng)格、控制方式有關(guān)。在有的菜單選項(xiàng)用戶界面 上,往往提供一組編號(hào)菜單項(xiàng),用戶輸入一個(gè)號(hào)碼后,立即可進(jìn)入該號(hào)指定的項(xiàng)目。 采用這種方法雖然可以減少按鍵,提供操作效率,但在誤按號(hào)碼后將會(huì)引起錯(cuò)誤。
a. 對(duì)錯(cuò)誤命令應(yīng)提供反饋信息,告訴用戶正確的命令格式及參數(shù);
b. 對(duì)文件操作的命令只對(duì)該文件的副本進(jìn)行,以便在必要時(shí)仍可從文件的原稿 中恢復(fù);
c. 對(duì)一些影響重大的命令需要由用戶再次確認(rèn);
d. 建立命令的歷史文件,這是對(duì)系統(tǒng)進(jìn)行恢復(fù)的最有效措施,它對(duì)于不同開(kāi)發(fā) 階段的錯(cuò)誤情況獲取都是有用的。
3)其它錯(cuò)誤
在一個(gè)交互系統(tǒng)中,各個(gè)部分都可能出現(xiàn)錯(cuò)誤,包括硬件錯(cuò)誤和軟件錯(cuò)誤。在 設(shè)計(jì)系統(tǒng)時(shí),應(yīng)允許采用不同廠商的設(shè)備,且設(shè)備不同也不應(yīng)引起錯(cuò)誤,這就是設(shè) 備的獨(dú)立性問(wèn)題。
4)錯(cuò)誤信息
如何向用戶提供確切的錯(cuò)誤信息是系統(tǒng)設(shè)計(jì)中的一個(gè)重要問(wèn)題。過(guò)去有許多用 戶不愛(ài)使用某些系統(tǒng),并不是因?yàn)槠涔δ芴酰且驗(yàn)橛龅藉e(cuò)誤時(shí)提示用戶的信 息太少。一個(gè)好的用戶界面,不僅應(yīng)該具有容錯(cuò)、檢錯(cuò)的能力,而且在錯(cuò)誤出現(xiàn)后, 應(yīng)讓用戶清楚了解其錯(cuò)誤的性質(zhì)和位置,以便由用戶克服其錯(cuò)誤,下面是有關(guān)錯(cuò)誤 信息的設(shè)計(jì)原則:
a. 盡可能使錯(cuò)誤信息準(zhǔn)確和定位;
b. 應(yīng)指明用戶針對(duì)這類錯(cuò)誤應(yīng)如何做;
c. 語(yǔ)言應(yīng)簡(jiǎn)潔、明確,盡可能用通俗易懂的詞匯;
d. 避免使用指責(zé)性語(yǔ)言,語(yǔ)氣盡可能友善,但應(yīng)給以告誡;
e. 對(duì)于錯(cuò)誤信息應(yīng)該根據(jù)系統(tǒng)的實(shí)際情況進(jìn)行分層提示;
f. 應(yīng)保持錯(cuò)誤信息的風(fēng)格一致,包括信息出現(xiàn)的位置,是否用對(duì)話框或窗口, 術(shù)語(yǔ)及縮寫(xiě)等;
g. 盡可能采用可視的圖形信息及音響效果。
2.5 人機(jī)界面設(shè)計(jì)的評(píng)價(jià)
評(píng)價(jià)是人機(jī)界面設(shè)計(jì)的重要組成部分,但往往被設(shè)計(jì)者忽視。通常評(píng)價(jià)在最后 產(chǎn)品上進(jìn)行,但若在系統(tǒng)設(shè)計(jì)初期就進(jìn)行,或?qū)υ瓦M(jìn)行評(píng)價(jià),就能及早發(fā)現(xiàn)設(shè)計(jì) 缺陷,避免人力、物力的浪費(fèi)。
對(duì)界面設(shè)計(jì)的質(zhì)量評(píng)價(jià)通?捎盟捻(xiàng)基本要求衡量:
(1)界面設(shè)計(jì)是否有利于用戶目標(biāo)的完成?
(2)界面學(xué)習(xí)和使用是否容易?
。3)界面使用效率如何?
(4)設(shè)計(jì)的潛在問(wèn)題有那些?
而對(duì)界面的總體設(shè)計(jì)和具體功能塊設(shè)計(jì),則可用上面提到的各類界面設(shè)計(jì)準(zhǔn)則 根據(jù)其應(yīng)用對(duì)象進(jìn)行綜合測(cè)試。具體要求的界面品質(zhì),可照以下幾項(xiàng)參考:
。1)適應(yīng)性。衡量界面在幫助用戶完成一項(xiàng)或多項(xiàng)任務(wù)時(shí)的滿意程度。
。2)有效性。度量指標(biāo)錯(cuò)誤率、任務(wù)完成時(shí)間、系統(tǒng)各設(shè)備使用率等。
。3)易學(xué)習(xí)性。從系統(tǒng)開(kāi)始使用一段時(shí)間后,錯(cuò)誤率下降的情況、完成任務(wù) 時(shí)間減少的情況、正確調(diào)用設(shè)備及命令的情況以及用戶知識(shí)增加的情況來(lái)評(píng)測(cè)。
。4)系統(tǒng)設(shè)備及功能使用面。若有些設(shè)備或功能任何用戶都未用過(guò),則可能 設(shè)計(jì)有誤。
。5)用戶滿意程度。以用戶滿意程度、發(fā)現(xiàn)問(wèn)題多少及使用興趣來(lái)衡量。
界面評(píng)估采用的方法已由傳統(tǒng)的知覺(jué)經(jīng)驗(yàn)的方法,逐漸轉(zhuǎn)為科學(xué)的系統(tǒng)的方法 進(jìn)行。傳統(tǒng)經(jīng)驗(yàn)方法有如下幾種:
。1)實(shí)驗(yàn)方法。在確定了實(shí)驗(yàn)總目標(biāo)及所要驗(yàn)證的假設(shè)條件后,設(shè)計(jì)最可靠的 方法是隨機(jī)和重復(fù)測(cè)試。
。2)監(jiān)測(cè)方法。即觀察用戶行為。觀察方法有多種,如直接監(jiān)測(cè),錄像監(jiān)測(cè), 系統(tǒng)監(jiān)測(cè)等。
。3)調(diào)查方法。這種方法可為評(píng)價(jià)提供重要數(shù)據(jù),在界面數(shù)據(jù)的任何階段均可 使用。調(diào)查方法可以采用調(diào)查表(問(wèn)卷〕或面談方式。調(diào)查收集到的大多是主觀數(shù) 據(jù),主要了解用戶使用該界面的情況,對(duì)界面的態(tài)度和意見(jiàn)。
返回目錄↑3、3、相關(guān)產(chǎn)品
.1 X窗口系統(tǒng)
窗口系統(tǒng)是控制位圖顯示設(shè)備與輸入設(shè)備的系統(tǒng)軟件。它所管理的資源有屏幕、 窗口、象素映象(pixmap)、色彩表、字體、光標(biāo)、圖形資源及輸入設(shè)備。
窗口系統(tǒng)向用戶提供下列界面:
1) 應(yīng)用界面
2) 編程界面
3) 窗口管理界面
美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)委員會(huì)于1990年5月把窗口系統(tǒng)X.11.3版本正式發(fā)布為美國(guó) 國(guó)家標(biāo)準(zhǔn)文件(編號(hào)為FIPS-PUB-158)。該標(biāo)準(zhǔn)共包括4個(gè)內(nèi)容:
。1)X協(xié)議(X protocol)
X窗口系統(tǒng)實(shí)際上由核心協(xié)議所定義。協(xié)議包括四個(gè)方面:請(qǐng)求(request)、 回答(reply)、出錯(cuò)(error)及事件(event)。X協(xié)議共有120個(gè)請(qǐng)求,可擴(kuò)充至256 個(gè)。整個(gè)協(xié)議描述客戶與服務(wù)器進(jìn)程通訊的語(yǔ)法結(jié)構(gòu)與語(yǔ)義。
(2〕X庫(kù)函數(shù)(Xlib)
X庫(kù)函數(shù)是X窗口系統(tǒng)的C語(yǔ)言編程界面,是向應(yīng)用程序員提供的低級(jí)編程界面。 X庫(kù)把參數(shù)封裝為協(xié)議請(qǐng)求,利用IPC機(jī)制發(fā)射給服務(wù)器進(jìn)程。X庫(kù)共有320多個(gè)函數(shù), 可分為系統(tǒng)功能(連接的建立與撤除等)、窗口功能(窗口屬性與操作)、通訊功 能(圖原、通訊屬性、正文字體、區(qū)域、圖像等)、色彩功能(色彩表操作)、事 件功能(輸入事件及窗口事件處理)及其它功能(原子、實(shí)用函數(shù))。
。3)X工具箱本征函數(shù)(X toolkit intrinsics) X工具箱是在X庫(kù)上的高級(jí) 編程界面。它向用戶提供菜單、對(duì)話框、圖符等各種圖形界面元素的編程手段。X 工具箱包含兩部分:Widget集及Intrinsics函數(shù)集。前者是具有一定風(fēng)格及外觀的 圖形界面元素對(duì)象集,它與特定風(fēng)格有關(guān);后者是利用這些對(duì)象編程時(shí)的通用函數(shù), 共有270個(gè)函數(shù),包括界面函數(shù)與應(yīng)用程序聯(lián)系的“回調(diào)函數(shù)”等。
(4)字體標(biāo)準(zhǔn)格式(BDF,Bitmap Distributed Format) 這是X窗口系統(tǒng)所提 供各種字體的標(biāo)準(zhǔn)位圖(bitmap)的組成規(guī)定。
X窗口系統(tǒng)的一個(gè)重要設(shè)計(jì)思想是提供實(shí)現(xiàn)各種界面的機(jī)制,而不是策略。由 于上述四部分只規(guī)定了應(yīng)用程序員的編程接口,因而不同廠商或用戶可在它們之 上實(shí)現(xiàn)各種窗口管理程序及界面外觀。由此,X窗口系統(tǒng)成為工作站各用戶界面的 基礎(chǔ)、事實(shí)上的工業(yè)標(biāo)準(zhǔn)。
窗口是X窗口系統(tǒng)的一個(gè)重要資源,是屏幕上的一個(gè)矩形區(qū)域(透明窗口無(wú)此 區(qū)域邊框〕。它實(shí)質(zhì)上是位圖輸出設(shè)備及輸入設(shè)備的一個(gè)抽象,有自己的坐標(biāo)及感 興趣的事件等。X窗口系統(tǒng)有一個(gè)根窗口覆蓋整個(gè)屏幕,應(yīng)用程序的窗口均為根窗 口的子窗口。這樣所有窗口構(gòu)成了樹(shù)形結(jié)構(gòu),子窗口大小不能超出父窗口。X窗口 系統(tǒng)中窗口的樹(shù)形結(jié)構(gòu)為應(yīng)用程序的多級(jí)抽象提供了清晰的概念。
X窗口系統(tǒng)的運(yùn)行環(huán)境應(yīng)該是在具有進(jìn)程間通信機(jī)制的操作系統(tǒng)上工作,例如 有TCP/IP(支持Socket機(jī)制〕網(wǎng)絡(luò)協(xié)議的UNIX操作系統(tǒng)上工作。此時(shí),應(yīng)在后臺(tái)運(yùn) 行服務(wù)器進(jìn)程(X Server)、窗口管理程序(uwm)及終端仿真程序(X term)。有以上 三個(gè)進(jìn)程,就可以在窗口系統(tǒng)下執(zhí)行各種命令,用鼠標(biāo)或鍵盤(pán)管理窗口,運(yùn)行各種 應(yīng)用程序。X窗口提供了極強(qiáng)的顯示管理及輸入設(shè)備的管理功能,是工作站上CAD軟 件及其用戶界面的主要支撐環(huán)境,已成為工作站窗口系統(tǒng)事實(shí)上的工業(yè)標(biāo)準(zhǔn)。X窗 口系統(tǒng)也要求可觀的計(jì)算機(jī)資源。
3.2 OSF/Motif和OPEN LOOK
X窗口系統(tǒng)提供了一系列構(gòu)造用戶界面的機(jī)制,包含協(xié)議、庫(kù)函數(shù)、工具箱本 征函數(shù)及字體格式等。但它并不提供某種具體的用戶界面風(fēng)格。在X窗口系統(tǒng)之上 已經(jīng)構(gòu)造了具有不同用戶界面風(fēng)格的高級(jí)界面對(duì)象集,通常稱為Widget Set。它們 各有不同的視感(look & feel),其中對(duì)象可以包括窗口、菜單、對(duì)話框、按鈕、 圖符、邊框等。一種風(fēng)格的某種Widget Set為用戶提供了一種外觀統(tǒng)一的圖形用戶 界面,也為應(yīng)用程序員提供了面向?qū)ο蟮膽?yīng)用編程界面(API〕。OSF/Motif是由開(kāi) 放軟件基金會(huì)(OSF〕1989年發(fā)布的圖形用戶界面規(guī)范。它以UNIX操作系統(tǒng)用X窗口 系統(tǒng)為軟件平臺(tái),吸取了IBM OS/2的Presentation Manager,MS-Dos及HP newware 界面風(fēng)格的特點(diǎn),提供了風(fēng)格(style)、窗口管理、工具箱、用戶界面語(yǔ)言(UIL〕 等一系列機(jī)制及規(guī)定。OSF/Motif已在多種硬件平臺(tái)及操作系統(tǒng)上工作。OPEN LOOK 是由UNIX國(guó)際1988年發(fā)布的圖形用戶界面規(guī)范,它已作為UNIX系統(tǒng)第四、第五版本 發(fā)布的重要組成部分正式使用。它也在許多工作站上實(shí)現(xiàn)并推廣使用。
3.3 Windows
1986年Microsoft公司為IBM個(gè)人計(jì)算機(jī)的DOS環(huán)境開(kāi)放了Windows窗口系統(tǒng),后來(lái) 經(jīng)過(guò)大量改進(jìn),于1990年正式發(fā)布了Windows3.0版本。由于該窗口系統(tǒng)在儲(chǔ)存管理 上突破了原來(lái)DOS 640KB的限制,從而具有強(qiáng)的功能,為在DOS環(huán)境提供了可實(shí)用的 圖形用戶界面。MS-Windows的出現(xiàn),使得DOS環(huán)境下的大量CAD/CAM軟件有了十分強(qiáng) 的窗口環(huán)境支持,從而使得CAD/CAM的用戶界面更加方便、一致。MS-Windows已成 為在DOS環(huán)境圖形用戶界面的主要產(chǎn)品。 Windows窗口系統(tǒng)是基于核心的窗口系統(tǒng)(Windows 95,Windows 98,Windows NT), 其核心功能放在操作系統(tǒng)內(nèi)。由于Windows窗口環(huán)境具有風(fēng)格一致的操作界面,在 Windows環(huán)境下開(kāi)發(fā)的應(yīng)用軟件具有同樣的界面風(fēng)格因而易學(xué)易用。這種通用的操作 系統(tǒng)為界面各種對(duì)象的設(shè)計(jì)提供了過(guò)程化設(shè)計(jì)的平臺(tái)和工具箱,從而使界面設(shè)計(jì)實(shí) 現(xiàn)容易。
返回目錄↑4、4、典型應(yīng)用(案例分析)
4.1界面工具系統(tǒng)(FITOOL)開(kāi)發(fā)與實(shí)現(xiàn)
。1)研究背景:
計(jì)算機(jī)用戶界面是計(jì)算機(jī)系統(tǒng)的重要組成部分,它直接關(guān)系到整個(gè)計(jì)算機(jī)系統(tǒng)的 可使用性和效率。經(jīng)驗(yàn)表明開(kāi)發(fā)高質(zhì)量的用戶界面,需花費(fèi)大量的人力物力,且開(kāi)發(fā) 周期較長(zhǎng)。
傳統(tǒng)的用戶界面的設(shè)計(jì)與描述是基于"嵌入"方式進(jìn)行的,應(yīng)用程序設(shè)計(jì)人 員在設(shè)計(jì)軟件時(shí),是按功能及界面兩方面要求混合編寫(xiě)用戶界面和應(yīng)用功能兩部分程 序。這種開(kāi)發(fā)方式忽略了用戶界面的個(gè)性,使程序復(fù)雜化,可維護(hù)性差。當(dāng)前計(jì)算機(jī) 軟件的開(kāi)發(fā)已不再是將用戶界面和應(yīng)用功能兩部分混合編寫(xiě)了。而是越來(lái)越傾向于二 者分別編寫(xiě),單獨(dú)編譯,再連接成可執(zhí)行文件。這是因?yàn)閷?duì)不同的應(yīng)用系統(tǒng),用戶界 面部分在邏輯上和處理方法上具有高度的相似性。而讓軟件開(kāi)發(fā)人員花費(fèi)大量的時(shí)間 與精力去開(kāi)發(fā)一個(gè)很類似又不具有通用性的用戶界面程序顯然是不可取的。因此開(kāi)發(fā) 能夠用規(guī)范化和規(guī);a(chǎn)的方法自動(dòng)生成一致性的用戶界面的工具是用戶界面研究 的內(nèi)容。
用戶界面管理系統(tǒng)(UIMS)就是一種開(kāi)發(fā)用戶界面的軟件工具。UIMS支持用戶界 面的表示、設(shè)計(jì)、實(shí)現(xiàn)、原型、執(zhí)行、評(píng)估和維護(hù)。UIMS能夠?yàn)檎麄(gè)環(huán)境提供一個(gè)友 好一致的人機(jī)界面,使用戶能以極其友好的方式幾乎能隨心所欲地使用此環(huán)境進(jìn)行軟 件開(kāi)發(fā),即使得此環(huán)境具有友好的交互介質(zhì)、友好的界面方式、友好的屏幕式樣。
(2)UIMS的表示方法:
UIMS的表示方法主要包含人機(jī)界面的規(guī)格說(shuō)明和它與人文因素、應(yīng)用程序及其數(shù) 據(jù)結(jié)構(gòu)的聯(lián)系等。UIMS邏輯結(jié)構(gòu)模型中幾個(gè)主要層次的表示方法,其中除了對(duì)話層的 表示方法比較成熟、研究成果豐富外,其它層次的表示方法尚有待發(fā)展。
1)外形層的表示方法
外形層的表示方法主要涉及用戶輸入輸出信息的處理。需要解決如下問(wèn)題:
a. 如何處理和表示圖形的輸入輸出。
b. 如何適應(yīng)多媒體的需要,將輸入輸出信息擴(kuò)充到視頻、語(yǔ)音、動(dòng)畫(huà)、仿真等。
c. 如何適應(yīng)智能人機(jī)界面規(guī)格說(shuō)明的需要,即信息流的內(nèi)外映射中如何包含簡(jiǎn) 單的基于人機(jī)界面設(shè)計(jì)規(guī)格的決策,使一對(duì)一映射的關(guān)系擴(kuò)充到多對(duì)一、多對(duì)多的映 射關(guān)系。
2)對(duì)話層的表示方法:
對(duì)話層的表示方法比較多,Green M(1986),Myers BA(1989)等曾先后對(duì)對(duì)話層 的表示方法進(jìn)行了如下分類:
a. 基于語(yǔ)言的表示方法
即界面設(shè)計(jì)者用一種專門(mén)的人機(jī)界面描述語(yǔ)言u(píng)idl來(lái)說(shuō)明界面。這種語(yǔ)言可能 有多種形式:菜單網(wǎng)絡(luò)、狀態(tài)轉(zhuǎn)換圖、上下文無(wú)關(guān)文法、事件語(yǔ)言、面向?qū)ο笳Z(yǔ)言 等。語(yǔ)言的主要任務(wù)是說(shuō)明界面對(duì)話層的語(yǔ)法,即輸入輸出動(dòng)作的合法順序。
菜單網(wǎng)絡(luò):是最簡(jiǎn)單的表示方法,即支持菜單的層次或網(wǎng)絡(luò)結(jié)構(gòu)。
狀態(tài)轉(zhuǎn)換圖:一個(gè)狀態(tài)轉(zhuǎn)換網(wǎng)絡(luò)是由一組狀態(tài)組成。在由每個(gè)狀態(tài)出發(fā)的邊上 標(biāo)志出一個(gè)輸入詞碼,它能引起轉(zhuǎn)移到該邊另一端的狀態(tài)。除輸入詞碼外,有些系 統(tǒng)的邊上標(biāo)出了被調(diào)用的應(yīng)用子程序和被顯示的輸出內(nèi)容。但是使用這種方法,界 面和應(yīng)用程序的聯(lián)系是通過(guò)很多全程變量實(shí)現(xiàn)的,所有的狀態(tài)必須有清楚的邊來(lái)反 映所有可能出現(xiàn)的錯(cuò)誤輸入和公用命令。
上下文無(wú)關(guān)文法:即使用上下文無(wú)關(guān)文法來(lái)描述用戶和程序之間的對(duì)話,且大 多以編譯器為基礎(chǔ)。
事件語(yǔ)言:在事件語(yǔ)言中,輸入詞碼被認(rèn)為是事件并立即送事件處理器.這些 處理器能產(chǎn)生輸出事件,改變系統(tǒng)的內(nèi)部狀態(tài),或調(diào)用應(yīng)用子程序.
面向?qū)ο笳Z(yǔ)言:即提供一個(gè)面向?qū)ο蟮目蚣,設(shè)計(jì)者在該框架內(nèi)編寫(xiě)界面程序。
b. 基于圖形的表示方法:
基于圖形的UIMS讓用戶或至少部分地讓用戶使用鼠標(biāo)器直接將對(duì)象放到屏幕上 來(lái)定義界面.它把界面的圖示表示作為最重要的一個(gè)方面,而圖形工具是說(shuō)明這種 表示的最合適的方法。
c. 基于應(yīng)用語(yǔ)義過(guò)程的表示方法:
即從應(yīng)用的語(yǔ)義過(guò)程規(guī)格說(shuō)明自動(dòng)生成界面,并且讓設(shè)計(jì)者修改界面以改進(jìn)它 的性能。
3)應(yīng)用層的表示方法:
目前應(yīng)用界面模型和應(yīng)用層的表示方法很不成熟,仍舊處于發(fā)展初期。作為可 供實(shí)用的實(shí)用界面模型,至少必須包含如下三個(gè)內(nèi)容:
a. 它必須包含與用戶和人機(jī)界面有關(guān)的應(yīng)用數(shù)據(jù)結(jié)構(gòu)的說(shuō)明;
b. 它必須包含人機(jī)界面調(diào)用的應(yīng)用子程序的說(shuō)明,例如子程序名、運(yùn)算對(duì)象 等.這實(shí)際上是定義了人機(jī)界面和應(yīng)用程序之間的界面;
c. 必須列舉應(yīng)用程序?qū)τ脩舻南拗疲畯亩谷藱C(jī)界面排除了許多可能引起語(yǔ) 義錯(cuò)誤的操作,避免了對(duì)應(yīng)用程序的破壞。
正在研究的應(yīng)用層的表示方法有兩類:
一是對(duì)象 — 算子法.對(duì)象對(duì)應(yīng)于應(yīng)用程序的數(shù)據(jù)結(jié)構(gòu),算子對(duì)應(yīng)于人機(jī)界 面調(diào)用的應(yīng)用子程序。
二是基于關(guān)系和一階邏輯.關(guān)系用來(lái)表示應(yīng)用程序中的數(shù)據(jù)結(jié)構(gòu),而一階邏輯 模型的說(shuō)明用來(lái)表示應(yīng)用子程序。
4.2系統(tǒng)結(jié)構(gòu)
FITOOL支持用戶界面管理系統(tǒng)(UIMS)的Seeheim模型,基于Motif和X-Windows, 運(yùn)行于UNIX操作系統(tǒng)。
FITOOL對(duì)話層的表示方法采用面向?qū)ο蟊硎痉椒ńY(jié)合圖形表示方法,使系統(tǒng)具 有直接操縱的特點(diǎn)。
FITOOL由如下幾部分組成:(結(jié)構(gòu)圖見(jiàn)圖4-1)
a. 窗口編輯器
窗口編輯器管理并生成各種初始化窗口。用戶若要?jiǎng)?chuàng)建界面必須先運(yùn)行此模塊, 這既是初始化界面結(jié)構(gòu)也是初始化管理內(nèi)部數(shù)據(jù)結(jié)構(gòu)的鏈表。
b. 原始構(gòu)件編輯器
原始構(gòu)件編輯器提供了各種界面構(gòu)件,用戶可按自己的需求用鼠標(biāo)點(diǎn)取相應(yīng)的 界面構(gòu)件,并可對(duì)其進(jìn)行任意配置,直到滿意為止。
c. 管理器編輯器
管理器編輯器提供了各種界面管理器構(gòu)件,這些構(gòu)件有的可以管理一個(gè)后代, 有的可以管理若干個(gè)后代,用戶可按自己對(duì)界面總體的要求需求用鼠標(biāo)點(diǎn)取合適的 界面管理器構(gòu)件,并可對(duì)其資源進(jìn)行任意配置,直到滿意為止。
圖4-1 FITOOL 結(jié)構(gòu)圖
d. 菜單編輯器
菜單編輯器可以單獨(dú)進(jìn)行使用,用戶可以創(chuàng)建下拉式菜單,選項(xiàng)式菜單,彈 出式菜單,菜單可以是文字式,圖符式或圖符文字混合式。
e. 對(duì)話框編輯器
對(duì)話框編輯器提供了各種對(duì)話形式,用戶可按要求自行創(chuàng)建和配置。
f . 資源修改模塊
資源修改模塊可單獨(dú)運(yùn)行以對(duì)所產(chǎn)生的界面的任何部分進(jìn)行資源的重新配置。
g. 界面瀏覽器;
界面瀏覽器可以瀏覽用戶已有的界面(文件),并可以重用之。
h. 界面/應(yīng)用對(duì)話編輯器
界面/應(yīng)用對(duì)話編輯器用來(lái)定義用戶界面與應(yīng)用程序之間的數(shù)據(jù)的傳遞及動(dòng)作的響應(yīng)。
i. 源代碼生成器
源代碼生成器用于生成用戶界面源程序(包括C文件和UIL件).
j. 中英文文本編輯器
中英文文本編輯器可進(jìn)行任何文字編輯操作。
k. 編譯與連接模塊。
編譯與連接模塊用于編譯并連接用戶界面源程序生成執(zhí)行文件。
4.3系統(tǒng)功能
使用本文描述的工具,界面設(shè)計(jì)人員不需要專門(mén)掌握一種用戶界面描述語(yǔ)言, 而是通過(guò)界面編輯器來(lái)直接操縱屏幕上的可視對(duì)象,生成和修改用戶界面原型,并 能將結(jié)果立即顯示在屏幕上,達(dá)到"所見(jiàn)即所得(WYSIWYW)"的效果。
使用FITOOL,用戶可以任意布置自己的用戶界面,并最后得到相應(yīng)的用戶界 面及其源程序,并可以和應(yīng)用程序進(jìn)行聯(lián)編,最后形成可用的執(zhí)行文件。
使用FITOOL, 用戶需做如下工作:
(1). 描述,即理解應(yīng)用程序,確定用戶界面外觀和交互行為.
a. 確定所需的用戶界面構(gòu)件:
按照最終用戶界面的外觀和功能進(jìn)行界面布局描述和設(shè)計(jì),這部分工作可以在 稿紙上完成,并列出所需要的界面構(gòu)件名稱及最終的配置。
b. 確定界面的層次關(guān)系:
有了界面的布局,啟動(dòng)FITOOL,運(yùn)行相應(yīng)模塊按步驟創(chuàng)建用戶界面。
c. 確定界面與應(yīng)用程序的對(duì)話結(jié)構(gòu):
按應(yīng)用程序?qū)缑骓憫?yīng)的要求,定義應(yīng)用與用戶界面之間的數(shù)據(jù)傳遞及相應(yīng)的 對(duì)話框。
(2)構(gòu)造用戶界面
a.運(yùn)行窗口編輯器,創(chuàng)建并管理各種初始化窗口。用戶若要?jiǎng)?chuàng)建界面必須先 運(yùn)行此模塊,這既是初始化界面結(jié)構(gòu)也是初始化管理內(nèi)部數(shù)據(jù)結(jié)構(gòu)的鏈表。
b. 管理器編輯器提供了各種界面管理器構(gòu)件,這些構(gòu)件有的可以管理一個(gè)后 代,有的可以管理若干個(gè)后代,用戶可按自己對(duì)界面總體的要求需求用鼠標(biāo)點(diǎn)取合 適的界面管理器構(gòu)件,并可對(duì)其資源進(jìn)行任意配置,直到滿意為止。
c. 原始構(gòu)件編輯器提供了各種界面構(gòu)件,用戶可按自己的需求用鼠標(biāo)點(diǎn)取相 應(yīng)的界面構(gòu)件,并可對(duì)其進(jìn)行任意配置,直到滿意為止。
d. 菜單編輯器可以單獨(dú)進(jìn)行使用,用戶可以創(chuàng)建下拉式菜單,選項(xiàng)式菜單, 彈出式菜單,菜單可以是文字式,圖符式或圖符文字混合式。
e. 對(duì)話框編輯器提供了各種對(duì)話形式,用戶可按要求自行創(chuàng)建和配置。
f. 資源修改模塊可單獨(dú)運(yùn)行以對(duì)所產(chǎn)生的界面的任何部分進(jìn)行資源的重新配置。
g. 界面瀏覽器可以瀏覽用戶已有的界面(文件),并可以重用之。
h. 界面/應(yīng)用對(duì)話編輯器用來(lái)定義用戶界面與應(yīng)用程序之間的數(shù)據(jù)的傳遞及 動(dòng)作的響應(yīng)。
i. 源代碼生成器用于生成用戶界面源程序(包括C文件和UIL文件)。
j. 中英文文本編輯器可進(jìn)行任何文字編輯操作。例如:編輯任何程序語(yǔ)言的源 程序或任何中英文文本文件。
k. 編譯與連接模塊用于編譯并連接用戶界面源程序生成執(zhí)行文件。
因此用戶可按事先確定的界面層次關(guān)系,用鼠標(biāo)選取相應(yīng)的界面構(gòu)件,并定制相 應(yīng)的資源,可隨時(shí)對(duì)字體和顏色進(jìn)行修改以滿足自己的要求,最后組裝成自己的界面。 并可得到相應(yīng)的源程序(*.c、*.h、*.uil),經(jīng)編譯后得到對(duì)應(yīng)的目標(biāo)文件(*.o、 *.uid),和應(yīng)用程序?qū)?yīng)的目標(biāo)文件(*.o)進(jìn)行連接后可得到相應(yīng)的執(zhí)行文件。
。3〕測(cè)試用戶界面.
將生成的源程序與應(yīng)用程序的目標(biāo)文件經(jīng)連接后生成可執(zhí)行文件,經(jīng)運(yùn)行如 發(fā)現(xiàn)不合要求,可進(jìn)行相應(yīng)的修改,直到滿足要求。
最后生成最終用戶界面(包括永久對(duì)象和臨時(shí)對(duì)象)和源程序。
4.4系統(tǒng)實(shí)現(xiàn)
系統(tǒng)的實(shí)現(xiàn)采用C++ 、C語(yǔ)言、Motif 及其用戶界面語(yǔ)言u(píng)il混合編寫(xiě)而成。
Motif基于X—Windows的Xt 工具箱(Xt Intrinsics),是一個(gè)用C語(yǔ)言實(shí)現(xiàn)、 支持面向?qū)ο篌w系的程序庫(kù);C++則是由C語(yǔ)言發(fā)展而來(lái),但它直接提供面向?qū)ο笫?的編程方法。
Motif內(nèi)部使用的面向?qū)ο笫襟w系對(duì)Motif的應(yīng)用程序來(lái)說(shuō)不會(huì)有絲毫的影響, 因?yàn)樗峁┟嫦蚝瘮?shù)的接口,調(diào)用程序?qū)otif及Xt Intrinsics內(nèi)部實(shí)現(xiàn)的細(xì)節(jié)不 必深究。因此從表面上看,Motif和其他C語(yǔ)言庫(kù)沒(méi)有任何區(qū)別。C++的設(shè)計(jì)允許程序 員輕易地使用象Motif這樣的C語(yǔ)言庫(kù)。C++還為面向?qū)ο笤O(shè)計(jì)方法和系統(tǒng)軟件設(shè)計(jì)方 法的結(jié)合提供了簡(jiǎn)易的方法,它使得程序在受益于面向?qū)ο蠹夹g(shù)的同時(shí)不失掉C的高 效性,更不必重新設(shè)計(jì)象X和Motif這樣的標(biāo)準(zhǔn)C庫(kù)函數(shù)。
(1)OSF/Motif與C++混合編程
用C++的面向?qū)ο蟮奶匦赃M(jìn)行程序設(shè)計(jì),并假設(shè)程序中的類代表令人感興趣的體 系結(jié)構(gòu)單元。用C++類封裝widget集合以創(chuàng)建一用戶界面組成部件的類,將Motif wi- dget作為基本單元來(lái)構(gòu)造它們的界面。一個(gè)組成部件不僅封裝了一個(gè)widget集合, 而且定義了整個(gè)組成部件的行為。
1)創(chuàng)建用戶界面組成部件
用C++類封裝widget集合以創(chuàng)建用戶界面組成部件的技術(shù)。即使用C++創(chuàng)建高一級(jí) 的、將一個(gè)或多個(gè)widget組合成一個(gè)邏輯群的用戶界面組成部件。這樣做的目的是不 用分離的類替換widget,而是用基本的Motif widget,將一個(gè)應(yīng)用程序及其界面的 關(guān)鍵組成部件作為類實(shí)現(xiàn)。這樣的話,Motif本身是否是面向?qū)ο蟮牟⒉恢匾珻++ 程序員可以直接調(diào)用Xt和Motif的函數(shù)來(lái)創(chuàng)建基本的Motif widget。
使用C++類組合一組widget以創(chuàng)建更復(fù)雜的用戶界面組成部件。并且在一個(gè)C++ 類中,可以創(chuàng)建widget,并指定其資源和賦值回調(diào)等。這樣,一個(gè)C++類不僅封裝一 個(gè)widget集合,而且定義了整個(gè)組成部件的行為。其意圖是不僅僅用一個(gè)類替換一 個(gè)widget集合,而是創(chuàng)建一個(gè)應(yīng)用程序所要求的基本類,其中某些類使用widget實(shí) 現(xiàn)一用戶界面組成部件。
虛擬與回調(diào)(作為靜態(tài)成員函數(shù)實(shí)現(xiàn))的組合提供了創(chuàng)建抽象用戶界面組成 部件的一種方法.基類可以由組成部件支持的widget,以及整體布局,而將組成部 件的具體行為留給派生類。
2) 用戶界面組成部件的協(xié)議
定義一個(gè)簡(jiǎn)單的協(xié)議,即使所有用戶界面組成部件能保證在不同組成部件之間 的一致性,并且使不同的組成部件很容易地在一起工作。
● 組成部件在類的構(gòu)造函數(shù)中創(chuàng)建一個(gè)或多個(gè)widget。通常情況下,回調(diào)與其 它創(chuàng)建也在構(gòu)造函數(shù)中處理,每個(gè)組成部件創(chuàng)建一個(gè)單獨(dú)的widget,是為基widget。 使它作為類所表示的widget樹(shù)的根,其它所有widget都是它的孩子。
● 組成部件將一個(gè)widget作為構(gòu)造函數(shù)中的一個(gè)參數(shù)。該widget作為該組成部 件的基widget的父親。
● 組成部件將它創(chuàng)建的widget子樹(shù)的根賦給一個(gè)保護(hù)的實(shí)例變量.
● 組成部件將一個(gè)字符串作為構(gòu)造函數(shù)的一個(gè)參數(shù)。
● 每個(gè)組成部件類提供一訪問(wèn)方式,用來(lái)查詢子樹(shù)的根widget。然而一個(gè)組成 部件類的目標(biāo)是封裝一個(gè)widget的單獨(dú)邏輯集合的行為,偶爾需要類公開(kāi)widget樹(shù) 的根widget。
● 組成部件類允許widget子樹(shù)由類封裝,以進(jìn)行處理或不處理。組成部件就作 為一個(gè)邏輯群處理,并且只有widget子樹(shù)的根被處理或不處理。其它widget應(yīng)在創(chuàng) 建時(shí)在構(gòu)造函數(shù)中被處理,而此時(shí)不處理根widget。
● 組成部件處理其widget樹(shù)中widget的析構(gòu)函數(shù).當(dāng)一個(gè)對(duì)象被清除時(shí),它所 封裝的widget也應(yīng)被清除。
3) 基類的定義與實(shí)現(xiàn)
BasicComponent類
BasicComponent類實(shí)現(xiàn)一些對(duì)所有組成部件類都有用的基本特性。
UIComponent類
UIComponent類是由BasicComponent類派生得到的,但增加了處理widget析構(gòu), 并且使用資源管理程序定做和初始化類。
。2) Motif與C++類混合編程的應(yīng)用框架
創(chuàng)建一個(gè)應(yīng)用框架用來(lái)定義一個(gè)應(yīng)用程序的總體結(jié)構(gòu)。和其它框架一樣,類和 框架配合的好要比任何一個(gè)類的函數(shù)性要重要的多。
框架的本意是依靠獲取應(yīng)用程序的共同元素來(lái)簡(jiǎn)化編寫(xiě)Motif應(yīng)用程序的任務(wù)。 盡管Xt和Motif提供一個(gè)比Xlib更高層的的接口,但是絕大多數(shù)的Motif 和Xt 應(yīng)用 程序仍然包括數(shù)量驚人的重復(fù)代碼。例如所有的Motif 應(yīng)用程序必須初始化Xt Int rinsics,打開(kāi)和 X 服務(wù)器的聯(lián)系,進(jìn)入事件循環(huán),以及其它等等。對(duì)每一個(gè)應(yīng)用 程序來(lái)說(shuō),復(fù)制實(shí)現(xiàn)這些步驟的代碼是沒(méi)有什么理由的。我們可以把這些步驟放在 一個(gè)類中,其他的應(yīng)用程序就可以復(fù)用它。我們也可能抽取典型的Motif 應(yīng)用程序 的控制結(jié)構(gòu)部分,盡管許多特殊的細(xì)節(jié)在不同的應(yīng)用程序間是有差別的。
Motif 應(yīng)用程序所共有的一些特點(diǎn):
● 初始化Xt Intrinsics;
● 打開(kāi)和 X 服務(wù)器的聯(lián)系;
● 創(chuàng)建一個(gè)Shell widget作為其它widget的父親;
● 創(chuàng)建一個(gè)或一個(gè)以上widget定義用戶界面;
● 進(jìn)入事件循環(huán)來(lái)處理事件。
大部分Motif 應(yīng)用程序中main()主體是非常類似的。絕大多數(shù)程序都執(zhí)行上 面的步驟,而很少有不同的。實(shí)際上,如果我們忽略不同的應(yīng)用程序間的細(xì)小差 別,我們可看到幾乎每一個(gè)Xt應(yīng)用程序都包含相同的語(yǔ)言并且遵循相同的形式。 程序和程序之間,重復(fù)地為每個(gè)程序打開(kāi)這些語(yǔ)句是一個(gè)時(shí)間上的浪費(fèi)。
一個(gè)功能更強(qiáng)的方法是抽取一個(gè)應(yīng)用程序的骨架,放在一個(gè)類中。應(yīng)用程序 可以通過(guò)實(shí)例化這個(gè)類,或者創(chuàng)建一個(gè)從這個(gè)類派生出來(lái)的新類來(lái)復(fù)用公共的代 碼段。使用一個(gè)類來(lái)獲取應(yīng)用程序的共同特點(diǎn)比拷貝上面顯示的樣板有幾個(gè)優(yōu)點(diǎn)。 首先,一旦程序設(shè)計(jì)者作了一份樣板的拷貝,他或她就喪失了跟蹤原始代碼的能 力。然而,那些僅是簡(jiǎn)單地實(shí)例化一個(gè)封裝這個(gè)代碼的對(duì)象的程序,可以從修改 錯(cuò)誤和改進(jìn)中獲益,因?yàn)樗鼈冎恍枰c一個(gè)修改過(guò)的版本重新連接。
基于面向?qū)ο罄碚摰膽?yīng)用程序可以通過(guò)派生出一個(gè)新類修改已生成代碼的行 為。因?yàn)楦淖冎皇菍?duì)一個(gè)派生類做的,而對(duì)原始類未作改動(dòng),所以要復(fù)原至最初 的行為就容易得多了。確定任何在發(fā)展過(guò)程中帶入的新錯(cuò)誤完全包容在新代碼中 ,也變得容易多了。
Application類:
Application類處理初始化和所有基于Xt 的應(yīng)用程序通用的事件處理步驟。 Motif 應(yīng)用程序只是簡(jiǎn)單地實(shí)例化一個(gè)Application對(duì)象,而不是調(diào)用類似 XtApp Initialize()或XtAppMainLoop()的Xt函數(shù)。程序可以從Application類中派生出 新類也可以直接實(shí)例化。Application類在構(gòu)造函數(shù)中不創(chuàng)建任何widget。Appli cation類為在整個(gè)應(yīng)用程序中都可能需要的一些數(shù)據(jù)提供存儲(chǔ)的空間。
框架支持應(yīng)用程序的多頂層窗口。一個(gè)方法是創(chuàng)建一個(gè)唯一的頂層的窗口作 為應(yīng)用程序的主窗口。所有其它的窗口都是彈出Shell,它們的父親是那個(gè)主窗 口。另一種方法是創(chuàng)建一個(gè)唯一的Shell,它永遠(yuǎn)不出現(xiàn)在屏幕上.所有其它的 窗口必須是這個(gè)主Shell的彈出兒子.在這個(gè)模型中,所有頂層窗口等價(jià)對(duì)待, 彼此間是兄弟關(guān)系,一個(gè)窗口邏輯上可以是應(yīng)用程序的頂層窗口。
可以定義一個(gè)MainWindow類以提供應(yīng)用程序中頂層窗口的基本屏幕布置。
基于這個(gè)框架的應(yīng)用程序不必定義main()。函數(shù)main()定義框架的一部分, 并且管理調(diào)用Application::initialize()成員函數(shù)以及進(jìn)入事件循環(huán)。隱藏 main()允許框架管理比所有應(yīng)用程序必須執(zhí)行的例程初始化更多的事情,即每一 個(gè)程序都是Application類的一個(gè)實(shí)例。應(yīng)用程序的創(chuàng)建就是簡(jiǎn)單地由實(shí)例化一個(gè) Application對(duì)象完成的。
對(duì)話類:
為了一些特殊意圖,在屏幕上現(xiàn)實(shí)相對(duì)時(shí)間較短的對(duì)話窗口,是許多交互式 應(yīng)用程序的一個(gè)共同特點(diǎn)。管理帶有許多輸入,控制或者選項(xiàng)的應(yīng)用程序的一種 方法是把用戶界面中不常使用的部分放在幾個(gè)分開(kāi)的對(duì)話窗口中,只有當(dāng)需要時(shí) 才顯示,對(duì)話窗口可以有幾種不同的使用方法。
對(duì)話類依賴Application類,因?yàn)閷?duì)話需要一個(gè)父widget。因此要強(qiáng)迫應(yīng)用 程序傳送一個(gè)widget給post()方法作為父親使用,但是允許有不同的父親。為了 不使高速緩存復(fù)雜化,這里使用Application類的Shell widget以保證所有的對(duì) 話有相同的父親,在屏幕上集中了對(duì)話。
命令類:
在交互式應(yīng)用程序中,用戶的每一個(gè)動(dòng)作幾乎都被認(rèn)為是一條命令。例如, 絕大多數(shù)的字處理程序支持類似"插入字符"的簡(jiǎn)單命令和更復(fù)雜的類似"段落 重新劃分"以及"保存文件"的命令。用戶可能認(rèn)為插入字符不是發(fā)出了一條命 令,但是對(duì)程序員來(lái)說(shuō),插入字符和段落重新劃分之間沒(méi)有什么不同。程序員典 型地把這些命令作為函數(shù)(例如,回調(diào)函數(shù))來(lái)實(shí)現(xiàn),這些函數(shù)作為用戶動(dòng)作的 結(jié)果被執(zhí)行。這樣系統(tǒng)的每一個(gè)命令被模型化為一個(gè)對(duì)象。
Cmd類完全獨(dú)立于任何用戶界面。命令對(duì)象可以有計(jì)劃地實(shí)例化和執(zhí)行。而不 必依賴于某個(gè)用戶界面組成部件。然而,通過(guò)一些用戶界面組成部件,代表由用 戶初始化的動(dòng)作,對(duì)一個(gè)命令對(duì)象來(lái)說(shuō)是很普遍的。CmdInterface類就是支持Cmd 對(duì)象和widget或其它用戶界面組成部件間的相互作用。
。3)OSF/Motif之UIL與C++混合編程
UIL即用戶界面描述語(yǔ)言。它是一種規(guī)范語(yǔ)言,描述Motif 應(yīng)用程序的用戶界 面的初始狀態(tài)。UIL配合Motif 資源管理器(MRM)以一種較C語(yǔ)言更加靠近自然語(yǔ) 言的高級(jí)語(yǔ)言描述、定制Motif 用戶界面。
使用UIL可以快速地開(kāi)發(fā)用戶界面的原型,因?yàn)槭褂谜卟恍枰谰唧w的wid- get創(chuàng)建函數(shù)極其調(diào)用格式。UIL不需要控制流,用戶可以大致按對(duì)象在界面中的 放置順序來(lái)描述它們,這使得uil文件易讀且不易出錯(cuò)。另外,由于用UIL編譯器 對(duì)uil文件進(jìn)行解釋產(chǎn)生的用戶界面描述文件uid與應(yīng)用程序之源程序分離,應(yīng)用 程序只是在運(yùn)行時(shí)才讀取uid文件。也就是說(shuō)同一個(gè)應(yīng)用程序可以有一個(gè)或多個(gè)不 同的界面,同一個(gè)界面可以被一個(gè)或多個(gè)不同的應(yīng)用程序所擁有。
使用uid文件的應(yīng)用程序的結(jié)構(gòu):
● 調(diào)用MrmInitialize()函數(shù)初始化MRM所需之內(nèi)部數(shù)據(jù)結(jié)構(gòu);
● 調(diào)用MrmOpenHierarchy()函數(shù)將MRM與具體的uid文件聯(lián)系起來(lái);
● 調(diào)用MrmRegisterNames()函數(shù)來(lái)登記回調(diào)函數(shù);
● 調(diào)用MrmFetchWidget()函數(shù)按搜索層次指針記錄的uid文件獲取順序從 uid文件中獲取文件信息,并創(chuàng)建列于相應(yīng)uid文件中的widget及其子widget。
創(chuàng)建Application 類的子類Mrmapp類.
Mrmapp類是Application 類的子類,它提供了普遍使用的讀取uid文件,創(chuàng) 建widget的方法。
使用UIL語(yǔ)言與C++語(yǔ)言混合編程非常方便.對(duì)不同的程序只需要改變相應(yīng) 的讀入uid文件語(yǔ)句,使程序調(diào)用合適的uid文件即可。
FITOOL就是通過(guò)建立上述Motif與C++類混合編程的應(yīng)用框架實(shí)現(xiàn)的。
4.5 BITIS界面
BITIS計(jì)算機(jī)輔助設(shè)計(jì)與制造( CAD/CAM/CAPP)系統(tǒng)(圖4-2)的統(tǒng)一用戶 界面就可以用FITOOL來(lái)設(shè)計(jì)與生成。
(1). 需求分析
要求有一封面、一背景屏幕和一集成工具。
集成工具(圖4)層次結(jié)構(gòu)如下:
初始化窗口;
管理器構(gòu)件:主窗口,一個(gè)Form管理器,二個(gè)Frame管理器,一個(gè)RowColumn 管理器。
原始構(gòu)件:RadioBox,Label,PushButton。
菜單:下拉式菜單。 圖4-2 BITIS集成系統(tǒng)結(jié)構(gòu)
(2). 生成界面
a. 首先用窗口編輯器,創(chuàng)建并管理各種頂層窗口。
b. 用管理器編輯器產(chǎn)生一個(gè)主窗口,一個(gè)Form管理器,一個(gè)RowColumn管 理器。
c. 用原始構(gòu)件編輯器產(chǎn)生Label,RadioBox,PushButton原始構(gòu)件。
d. 用菜單編輯器創(chuàng)建下拉式菜單。
e. 用界面/應(yīng)用對(duì)話編輯器定義用戶界面與應(yīng)用程序之間的數(shù)據(jù)的傳遞 及動(dòng)作的響應(yīng)。
f. 用源代碼生成器生成用戶界面源程序(包括C文件和UIL文件)。
g. 編譯與連接模塊用于編譯并連接用戶界面源程序生成執(zhí)行文件。 BITIS系統(tǒng)集成用戶界面(圖4-3): 圖4-3 BITIS系統(tǒng)集成用戶界面
FITOOL可以運(yùn)行于HP和SGI工作站,使用效果良好。其中有些功能有待進(jìn)一步 研究與完善。
|
|