版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章人機(jī)交互部分的設(shè)計(jì)最終的系統(tǒng)是要提供給用戶使用的。用戶對(duì)系統(tǒng)的理解,包括用戶要操縱的系統(tǒng)中的"事物"、系統(tǒng)能夠完成的功能以及任務(wù)的實(shí)施過(guò)程,決定了用戶對(duì)系統(tǒng)的使用。而用戶對(duì)系統(tǒng)的使用是通過(guò)人機(jī)界面來(lái)進(jìn)行的?,F(xiàn)今的用戶對(duì)軟件系統(tǒng)的人機(jī)交互方面的要求越來(lái)越高,人機(jī)界面的設(shè)計(jì)在軟件系統(tǒng)開(kāi)發(fā)中所占的地位也就越來(lái)越重要。特別是,新一代的人機(jī)界面將是"以人為中心的計(jì)算",這樣人機(jī)交互部分的設(shè)計(jì)作為一個(gè)獨(dú)立且重要的領(lǐng)域,就顯得越發(fā)重要。
簡(jiǎn)言之,人機(jī)交互部分是人和計(jì)算機(jī)之間交互信息的媒介,對(duì)它的設(shè)計(jì)涉及計(jì)算機(jī)科學(xué)、心理學(xué)、藝術(shù)學(xué)、認(rèn)知科學(xué)和人機(jī)工程學(xué)等學(xué)科。本章講述的是人機(jī)交互的軟件方面的設(shè)計(jì)。對(duì)使用系統(tǒng)的人進(jìn)行分析——以便設(shè)計(jì)出適合其特點(diǎn)的交互方式和界面表現(xiàn)形式;對(duì)人和機(jī)器的交互過(guò)程進(jìn)行分析——核心問(wèn)題是人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。設(shè)計(jì)人機(jī)交互就是要設(shè)計(jì)輸入與輸出,其中所包含的對(duì)象(稱作界面對(duì)象)以及其間的關(guān)系構(gòu)成了系統(tǒng)的人機(jī)交互部分的模型。8.1什么是人機(jī)交互部分
最初設(shè)計(jì)人員按設(shè)計(jì)目標(biāo)(用戶需求),設(shè)計(jì)出界面(原型),提交給用戶去加以評(píng)判,也即這個(gè)初步的界面起拋磚引玉的作用。用戶通過(guò)對(duì)界面的學(xué)習(xí),根據(jù)自己的經(jīng)驗(yàn)和需求,經(jīng)過(guò)一定的評(píng)判,把結(jié)果反饋給設(shè)計(jì)人員,讓設(shè)計(jì)人員繼續(xù)設(shè)計(jì)。這種過(guò)程可能要反復(fù)進(jìn)行多次,使得雙方的意見(jiàn)達(dá)到一致或達(dá)到一定程度的一致,直至用戶認(rèn)可為止。
人機(jī)界面的開(kāi)發(fā)不僅是設(shè)計(jì)和實(shí)現(xiàn)問(wèn)題,也包括分析問(wèn)題??梢栽诓煌拈_(kāi)發(fā)階段,對(duì)人機(jī)交互部分進(jìn)行不同的處理。在捕獲需求時(shí)對(duì)用況所做的描述,其實(shí)就包含了人機(jī)交互部分的信息。
這些工作的目標(biāo)是為了更好地理解系統(tǒng)的需求。盡管那時(shí)注重的是系統(tǒng)的功能需求,但也很可能在那時(shí)分析人員與用戶就系統(tǒng)的界面的框架和內(nèi)容已經(jīng)達(dá)成了共識(shí)。若有必要,在確定了用況模型后,可以緊接著完成人機(jī)交互部分的分析工作??紤]到經(jīng)過(guò)了OOA階段,當(dāng)時(shí)的用況模型會(huì)有一些變動(dòng),以及要考慮用戶群的特點(diǎn)等因素,在OOD階段仍有必要重新分析原來(lái)所做的人機(jī)交互部分的分析結(jié)果。
對(duì)人機(jī)界面的分析,首先要對(duì)使用系統(tǒng)的人進(jìn)行分析,以得到適合其特點(diǎn)的交互方式和界面表現(xiàn)形式;然后對(duì)人和機(jī)器的交互過(guò)程進(jìn)行分析,解決的核心問(wèn)題是人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。要以捕獲需求時(shí)獲得的用況模型為基礎(chǔ),加上已有的界面原型,進(jìn)行后一項(xiàng)工作。8.2如何分析人機(jī)交互部分1.分析與系統(tǒng)交互的人員參與者
人對(duì)界面的需求,不僅在于人機(jī)交互的內(nèi)容,而且在于他們對(duì)界面表現(xiàn)形式、風(fēng)格等方面的愛(ài)好。前者是客觀需求,對(duì)誰(shuí)都一樣;后者是主觀需求,往往因人而異。如下給出了分析策略:1)列舉所有的人員參與者;2)對(duì)人員參與者進(jìn)行調(diào)查研究;3)區(qū)分人員類型,并了解各類人員的主觀需求;4)統(tǒng)計(jì)(或估算)出各類人員的比例;5)按照一定的準(zhǔn)則進(jìn)行折中與均衡。2.從用況分析人機(jī)交互我們先回顧一下通常的用況的構(gòu)成:1)參與者的行為和系統(tǒng)行為按時(shí)序交替出現(xiàn),在布局上左右分明,形成交叉排列的段落;2)每個(gè)段落至少含有一個(gè)輸入語(yǔ)句或輸出語(yǔ)句;3)有若干純屬參與者自身或系統(tǒng)自身的行為陳述;4)可能包含一些控制語(yǔ)句或括號(hào)。
從用況中抽取人機(jī)交互序列可以用以下方法:針對(duì)各用況,先刪除所有與輸入、輸出無(wú)關(guān)的語(yǔ)句和不再包含任何內(nèi)容的控制語(yǔ)句與括號(hào),剩下的就是對(duì)參與者(人)使用系統(tǒng)功能時(shí)的人機(jī)交互描述。圖8-2為一個(gè)從用況提取人機(jī)交互描述的示例。收款員收款(usecase)輸入開(kāi)始本次收款的命令;作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示信息;for顧客選購(gòu)的每種商品do
輸入商品編號(hào);
if此種商品多于一件then
輸入商品數(shù)量
endif;檢索商品名稱及單價(jià);貨架商品數(shù)減去售出數(shù);if貨架商品數(shù)低于下限then
通知供貨員請(qǐng)求上貨endif;計(jì)算本種商品總價(jià)并打印編號(hào)、名稱、數(shù)量、單價(jià)、總價(jià);總價(jià)累加到應(yīng)收款總數(shù);endfor;打印應(yīng)收款總數(shù);輸入顧客交來(lái)的款數(shù);計(jì)算應(yīng)找回的款數(shù),打印以上兩個(gè)數(shù)目,收款數(shù)計(jì)入賬冊(cè)。
(a)一個(gè)usecase的例子收款員收款(人機(jī)交互)輸入開(kāi)始本次收款的命令;輸出提示信息;for顧客選購(gòu)的每種商品輸入商品編號(hào);
if此種商品多于一件then
輸入商品數(shù)量
endif;打印商品編號(hào)、名稱、數(shù)量、單價(jià)、總價(jià);endfor;打印應(yīng)收款總數(shù)輸入顧客交來(lái)的款數(shù)打印交款數(shù)及找回款數(shù);(b)人機(jī)交互描述從usecase提取人機(jī)交互描述8.3如何設(shè)計(jì)人機(jī)交互部分以往在操作系統(tǒng)和編程語(yǔ)言的支持下,或再加上圖形包,進(jìn)行圖形方式的人機(jī)界面開(kāi)發(fā),工作量是很大的。也就是說(shuō),以往對(duì)圖形化的人機(jī)交互的開(kāi)發(fā)在整個(gè)系統(tǒng)的開(kāi)發(fā)工作中占有很大比例?,F(xiàn)在,可以通過(guò)窗口系統(tǒng)、GUI和可視化編程環(huán)境這樣的高級(jí)界面支持系統(tǒng)進(jìn)行人機(jī)界面開(kāi)發(fā)。特別是使用可視化編程環(huán)境可以按所見(jiàn)即所得的方式,定制所需的人機(jī)界面。如此定義的界面對(duì)象可由編程環(huán)境提供的工具自動(dòng)地轉(zhuǎn)化為程序代碼。這樣,人機(jī)界面的設(shè)計(jì)工作就可以大大簡(jiǎn)化,但仍有一些設(shè)計(jì)工作要做。其中的很多內(nèi)容對(duì)各種設(shè)計(jì)方法都是相同的,也有一些是采用本方法所必須要考慮的。例如,可視化編程環(huán)境一般都帶有內(nèi)容豐富的界面類庫(kù),界面類庫(kù)中對(duì)大部分常用的界面對(duì)象都給出了類的源代碼,在進(jìn)行人機(jī)界面設(shè)計(jì)時(shí)要充分地復(fù)用這些類。8.3.1設(shè)計(jì)輸入與輸出根據(jù)前面從用況中提取出來(lái)的對(duì)人機(jī)交互的描述,設(shè)計(jì)輸入與輸出。首先要選擇界面支持系統(tǒng),如窗口系統(tǒng)、圖形用戶界面(GUl)或可視化編程環(huán)境,然后進(jìn)行輸入與輸出設(shè)計(jì)。輸入與輸出技術(shù)正在不斷地發(fā)展,這里僅就目前常見(jiàn)輸入與輸出的方式進(jìn)行闡述。1.設(shè)計(jì)輸入在設(shè)計(jì)輸入時(shí),要進(jìn)行如下的工作。(1)確定輸入設(shè)備
常見(jiàn)的輸入設(shè)備有鍵盤、鼠標(biāo)、磁卡閱讀器、條碼閱讀器、光電字符識(shí)別閱讀器、掃描儀、觸摸屏、電子筆和書寫板等。鍵盤和鼠標(biāo)屬于標(biāo)準(zhǔn)的計(jì)算機(jī)設(shè)備,不考慮在內(nèi)。對(duì)于一些非標(biāo)準(zhǔn)的計(jì)算機(jī)外部設(shè)備的接口程序,可以把它們放在相應(yīng)的類中。如果要從外系統(tǒng)進(jìn)行輸入,可以把外系統(tǒng)的接口程序放在相應(yīng)的類中。如果要隔離外部設(shè)備或外系統(tǒng)的變化對(duì)本系統(tǒng)的影響,可以針對(duì)外部設(shè)備或外系統(tǒng)的接口程序單設(shè)立類。對(duì)于某些復(fù)雜的情況,可能還需要考慮同步機(jī)制。(2)設(shè)計(jì)輸入界面在用戶的輸入界面中,主要的界面元素有窗口、菜單、對(duì)話盒、圖符、滾動(dòng)條和按鈕等。下面以菜單和對(duì)話盒為例,說(shuō)明如何設(shè)計(jì)其內(nèi)容。菜單是提供給用戶的一系列對(duì)應(yīng)著用戶動(dòng)作的條目列表。大部分系統(tǒng)都具有通常形式的菜單,如文件、視圖、工具、窗口和幫助等,但也都具有自己的特有部分。在設(shè)計(jì)特有部分時(shí),要保證術(shù)語(yǔ)的一致性與簡(jiǎn)潔性,并按邏輯對(duì)條目進(jìn)行分組。菜單要設(shè)計(jì)成面向不同用戶的,最好可以進(jìn)行重組。
對(duì)話盒是用來(lái)收集用戶的輸入信息或向用戶提供反饋的區(qū)域。用于輸入時(shí),其上可有一些選擇鈕和輸入框等元素,可用鼠標(biāo)在其上選取值,或從輸入設(shè)備向其中輸入值。在設(shè)計(jì)對(duì)話盒時(shí),要注意如下幾點(diǎn):1)使用有意義且易于理解的簡(jiǎn)短標(biāo)題和輸入框名。
2)按邏輯對(duì)輸入框進(jìn)行分組并排序。
3)允許對(duì)文本型輸入框進(jìn)行簡(jiǎn)單的編輯。
4)清楚地標(biāo)出哪些輸入框是可選的,哪些是必選的。
5)對(duì)輸入框進(jìn)行必要的解釋(如在Windows的狀態(tài)條上列出解釋)。設(shè)計(jì)對(duì)話盒時(shí),還要注意對(duì)輸入內(nèi)容的檢查:1)盡可能地防止錯(cuò)誤的輸入,當(dāng)輸入有誤時(shí)要提供出錯(cuò)信息。
2)輸入框組合控制。檢查各輸入框中的數(shù)據(jù)項(xiàng)的可能組合,以保證輸入的數(shù)據(jù)是正確的。例如,參加工作的日期必須晚于出生日期。
3)數(shù)據(jù)的有效范圍控制。檢查所輸入的數(shù)據(jù)的合理性。例如,在現(xiàn)今社會(huì),一個(gè)人的年齡不應(yīng)該超過(guò)200歲。
4)輸入框組合的完備性。確保所有必要的輸入框都要被輸入。例如,在進(jìn)行身份檢查時(shí),
除了輸入名稱,還要輸入密碼。
5)數(shù)據(jù)的有效位數(shù)的控制。例如,身份證上的號(hào)碼必須是15位或18位的。(3)輸入步驟的細(xì)化向系統(tǒng)輸入信息,可以一次輸入完畢,也可以分為若干細(xì)小的步驟完成。以較少的步驟完成輸入,意味著每一步輸入的內(nèi)容較多,不易記憶;或者要從較多的選項(xiàng)中進(jìn)行選擇,不易發(fā)現(xiàn)目標(biāo)。以較多的步驟完成輸人,可以使每個(gè)步驟的操作比較簡(jiǎn)單,并且容易對(duì)用戶形成引導(dǎo),但總的操作步驟會(huì)增加,使操作效率下降。技能熟練的用戶傾向于追求效率,初學(xué)者和一般水平的人員更重視系統(tǒng)以較多的步驟引導(dǎo)他們進(jìn)行正確的操作。一項(xiàng)輸入被細(xì)化后,可能變成輸入與輸出交替的動(dòng)作序列,其中的輸出是系統(tǒng)的計(jì)算結(jié)果或系統(tǒng)對(duì)用戶的提示信息等。2.設(shè)計(jì)輸出在設(shè)計(jì)輸出時(shí),要進(jìn)行如下的工作。
(1)確定輸出設(shè)備
常見(jiàn)的輸出設(shè)備有打印機(jī)、顯示器、繪圖儀、文件或數(shù)據(jù)庫(kù)表等。對(duì)于一些非標(biāo)準(zhǔn)的計(jì)算機(jī)外部設(shè)備的接口程序,可以把它們放在相應(yīng)的類中。如果要向外系統(tǒng)輸出,可以把與外系統(tǒng)的接口程序放在相應(yīng)的類中。如果要隔離外部設(shè)備或外系統(tǒng)的變化對(duì)本系統(tǒng)的影響,可以為外部設(shè)備或外系統(tǒng)的接口程序單設(shè)立類。對(duì)于某些復(fù)雜的情況,可能還需要考慮同步機(jī)制。(2)確定輸出的形式和內(nèi)容
輸出的形式有文本、表格、圖形、圖像、聲音和視頻片段等。輸出的內(nèi)容包括提示信息、系統(tǒng)的計(jì)算或處理結(jié)果、對(duì)輸入處理情況的反饋信息等。
提示信息告訴用戶下面要進(jìn)行何種輸入以及如何輸入。對(duì)于系統(tǒng)的計(jì)算或處理結(jié)果的輸出,總是伴隨著用戶輸入的命令的執(zhí)行而出現(xiàn)。若要在窗口或打印機(jī)上以報(bào)表、報(bào)告、圖形或窗口上的多媒體演示等形式進(jìn)行輸出,則要先確定每種形式的內(nèi)容要求,然后把它們各對(duì)應(yīng)于一個(gè)或幾個(gè)類。對(duì)于反饋信息,一般是在系統(tǒng)需要較長(zhǎng)的時(shí)間進(jìn)行計(jì)算時(shí)才需要的,表明系統(tǒng)已經(jīng)接收到命令,正在進(jìn)行處理,對(duì)于這種情況要表示出處理的進(jìn)度。(3)輸出步驟的細(xì)化如果系統(tǒng)輸出的信息量較大,可以分若干步驟進(jìn)行輸出。一種常見(jiàn)的做法是發(fā)一條簡(jiǎn)單的信息,通知用戶如何得到更詳細(xì)的輸出信息。另一種做法是為用戶設(shè)計(jì)一些閱讀或?yàn)g覽輸出信息的動(dòng)作,在這些動(dòng)作的控制下,展示輸出信息中用戶所關(guān)心的部分。這樣,一項(xiàng)輸出可能被細(xì)化為一個(gè)輸入與輸出交織的過(guò)程。細(xì)化時(shí)考慮的主要因素是如何使用戶感到方便,以及輸出介質(zhì)(如顯示屏、紙張等)的版面限制。8.3.2命令的組織在設(shè)計(jì)輸入與輸出時(shí),還有一項(xiàng)重要的工作要做,那就是設(shè)計(jì)用戶使用系統(tǒng)的命令以及對(duì)命令的組織。系統(tǒng)可能有大量的命令,且一條命令可能含有大量的參數(shù)和任選項(xiàng),如果對(duì)命令不加任何組織和引導(dǎo),會(huì)給用戶帶來(lái)不便??刹捎脙煞N技術(shù)措施對(duì)命令進(jìn)行組織:1)分解:將一條含有許多參數(shù)和選項(xiàng)的復(fù)雜命令分解為若干較簡(jiǎn)單的命令。2)組合:當(dāng)一個(gè)系統(tǒng)的命令很多時(shí),按照它們的功能或者所屬于的子系統(tǒng),組合成若干命令組,使每組只包含幾條命令。這樣,命令間就形成了層次結(jié)構(gòu)。按照下面的概念以及用戶需求,運(yùn)用分解與組合技術(shù),實(shí)現(xiàn)對(duì)命令的定義與組織。基本命令:使用一項(xiàng)獨(dú)立的系統(tǒng)功能的命令。一個(gè)從用況提取出來(lái)的人機(jī)交互過(guò)程是針對(duì)一項(xiàng)系統(tǒng)功能的,基本命令正是開(kāi)始該交互過(guò)程并使用該項(xiàng)系統(tǒng)功能的命令。選中一個(gè)基本命令,對(duì)應(yīng)的事件要傳送到實(shí)現(xiàn)該命令功能的系統(tǒng)成分。也即由人機(jī)交互部分的對(duì)象接收命令后,向問(wèn)題域部分中實(shí)現(xiàn)該功能的對(duì)象發(fā)消息,請(qǐng)求進(jìn)行處理。命令步:在執(zhí)行一條基本命令的交互過(guò)程中所包含的具體輸入步驟。從一個(gè)用況提取出來(lái)的人機(jī)交互過(guò)程的各項(xiàng)輸入都是這樣的命令步。高層命令:如果一條命令是在另一條命令的引導(dǎo)下選用的,則后者稱作前者的高層命令。高層命令是對(duì)基本命令的組織,相當(dāng)于一個(gè)命令索引目錄。高層命令并不涉及某一項(xiàng)具體的系統(tǒng)功能,只是顯示下一層可選的系統(tǒng)功能,以供用戶選擇。對(duì)其常見(jiàn)的設(shè)計(jì)方式為主菜單條和下拉菜單等。圖8-3展示了基本命令及其命令步的結(jié)構(gòu)。a)線性結(jié)構(gòu)b)樹(shù)形結(jié)構(gòu)(c)半序網(wǎng)狀結(jié)構(gòu)(d)一般網(wǎng)狀結(jié)構(gòu)圖8-3展示了基本命令以及命令步間的關(guān)系,圖中的實(shí)心圓點(diǎn)表示一個(gè)基本命令開(kāi)始的命令步,空心圓點(diǎn)表示后續(xù)的一個(gè)命令步。
若基本命令過(guò)多,就需要用高層命令進(jìn)行組織??砂垂δ艿南嗨菩赃M(jìn)行組織,如在常見(jiàn)的菜單子系統(tǒng)中,高層命令“文件”下有“創(chuàng)建”、“打開(kāi)”、“關(guān)閉”和“保存”等基本命令。也可以按子系統(tǒng)結(jié)構(gòu)來(lái)組織基本命令,如對(duì)于正文編輯子系統(tǒng)和編譯子系統(tǒng),要把屬于這兩個(gè)子系統(tǒng)的全部命令分別組織到高層命令“編輯”和“編譯”之下。圖8-4說(shuō)明了高層命令及其結(jié)構(gòu)。
圖中的實(shí)心圓點(diǎn)仍表示開(kāi)始基本命令的命令步,空心圓點(diǎn)表示高層命令。根節(jié)點(diǎn)表示啟動(dòng)整個(gè)系統(tǒng)的命令,或啟動(dòng)系統(tǒng)的一個(gè)人機(jī)界面的命令。根節(jié)點(diǎn)的下一層命令是界面啟動(dòng)后在最高層次上的可以被用戶選擇的命令(如主菜單上的命令)。虛線表示某些上層命令共享某個(gè)下層命令,或從下層命令轉(zhuǎn)向高層命令。圖8-4高層命令及其結(jié)構(gòu)在兩個(gè)命令步之間通常要輸出信息,如圖8-5所示。圖8-5命令之間的輸出信息結(jié)構(gòu)圖8-5a表示兩個(gè)命令步之間不存在著輸出信息結(jié)構(gòu)。圖8-5b表示兩個(gè)命令步之間可能存在著三種輸出信息結(jié)構(gòu)。第一種為反饋信息,在一個(gè)命令需要較長(zhǎng)的時(shí)間執(zhí)行時(shí),應(yīng)該向用戶顯示當(dāng)前命令執(zhí)行的情況,如給出一個(gè)進(jìn)度條;第二種為處理結(jié)果,當(dāng)前命令執(zhí)行的結(jié)果可能要向用戶顯示;第三種為提示信息,即對(duì)下一步可輸人的命令的提示。圖8-5c表示兩層命令之間的更為復(fù)雜的輸出信息結(jié)構(gòu)。
在建立命令樹(shù)時(shí),應(yīng)遵循如下策略:1)把使用最頻繁的命令放在前面,或按照用戶的工作步驟進(jìn)行排列。
2)在命令中發(fā)現(xiàn)整體-部分模式,以幫助對(duì)命令進(jìn)行組織。
3)每層命令的個(gè)數(shù)應(yīng)遵循7±2原則,命令的層次深度盡量要少。8.3.3用OO概念表達(dá)所奇的界面成分按照上述根據(jù)人機(jī)交互需求所做的設(shè)計(jì),可以用OO概念表達(dá)所有的界面成分。如下為一些指導(dǎo)策略:
1)每個(gè)窗口分別對(duì)應(yīng)一個(gè)類。
2)在窗口中,按照命令的邏輯,部署所需要的元素,如菜單、工作區(qū)和對(duì)話框等。窗口中的部件元素對(duì)應(yīng)窗口類的部分類,部分類與窗口類形成聚合關(guān)系。
3)發(fā)現(xiàn)窗口類間的共性以及部件類間的共性,定義較一般的窗口類和部件類,分別形成窗口類問(wèn)以及部件類間的泛化關(guān)系。
4)用類的屬性表示窗口或部件的靜態(tài)特征,如尺寸、位置和顏色等。如果使用界面生成工具可視化地定義定制界面,這樣的屬性往往會(huì)自動(dòng)地出現(xiàn)在窗口和部件的屬性欄中。重要的是用屬性表示邏輯特征,如在菜單類中,每個(gè)選項(xiàng)表示一條命令,屬性的名稱要與它所對(duì)應(yīng)的命令相符。還要注意對(duì)表示界面類間的聚合關(guān)系的屬性的命名,這樣的屬性要確切地表達(dá)每個(gè)部件的名稱。
5)用操作表示窗口或部件的動(dòng)態(tài)特征,如選中、移動(dòng)和滾屏等。如果使用界面生成工具,不需要對(duì)這樣的操作的特征標(biāo)記花費(fèi)精力,重要的是對(duì)命令進(jìn)行響應(yīng)的部分的設(shè)計(jì),如選中一個(gè)命令按鈕后具體要執(zhí)行什么后續(xù)操作。
6)發(fā)現(xiàn)界面類之間的聯(lián)系,在其間建立關(guān)聯(lián)。必要時(shí),進(jìn)一步地繪制用戶與系統(tǒng)會(huì)話的順序圖。
7)建立界面類與問(wèn)題域類之間的聯(lián)系。有些界面對(duì)象要與問(wèn)題域中的對(duì)象進(jìn)行通信,故要對(duì)二者之間的通信進(jìn)行設(shè)計(jì)。在具體設(shè)計(jì)時(shí),設(shè)計(jì)人員應(yīng)該注意以下幾點(diǎn):
人機(jī)界面只負(fù)責(zé)輸入與輸出和窗口更新這樣的工作,并把所有面向問(wèn)題域部分的請(qǐng)求轉(zhuǎn)發(fā)給問(wèn)題域部分,即在界面對(duì)象中不應(yīng)該對(duì)業(yè)務(wù)邏輯進(jìn)行處理。在多數(shù)情況下,問(wèn)題域部分的對(duì)象不應(yīng)該主動(dòng)發(fā)起與界面部分對(duì)象之間的通信,而只能對(duì)界面部分對(duì)象進(jìn)行響應(yīng),也就是說(shuō),只有界面部分的對(duì)象才能訪問(wèn)問(wèn)題域部分的對(duì)象。通常把界面對(duì)象向問(wèn)題域?qū)ο髠鬏斝畔⒒虬l(fā)布命令看作是"請(qǐng)求",而把問(wèn)題域?qū)ο笙蚪缑鎸?duì)象傳輸信息看作是"回應(yīng)"或"通知"。盡量減少界面部分與問(wèn)題域部分的耦合。由于界面是易變的,從易于維護(hù)和易于復(fù)用的角度出發(fā),問(wèn)題域部分和界面部分應(yīng)該是低耦合的。解決問(wèn)題的一種方法是,二者之間要通過(guò)接口來(lái)進(jìn)行通信,圖8-6給出的是一個(gè)示意圖。也可以通過(guò)在人機(jī)交互部分和問(wèn)題域部分之間增加控制器或協(xié)調(diào)類的方式解決這種問(wèn)題,如可采用下面將要講述的發(fā)布一訂閱模式。在上面的策略中已經(jīng)提到,在可視化的編程環(huán)境下,能節(jié)省很多界面設(shè)計(jì)工作。例如,利用工具,選擇界面元素,如窗口、菜單、對(duì)話框、圖符、滾動(dòng)條、控制板、文本框和按鈕等,構(gòu)建人機(jī)界面;所創(chuàng)建的各界面元素,都有自動(dòng)創(chuàng)建的代碼與之對(duì)應(yīng),且界面元素間的嵌套關(guān)系也能體現(xiàn)在代碼中。這種創(chuàng)建界面的工作是所見(jiàn)即所得的。但上述建立的界面類與問(wèn)題域類之間的聯(lián)系仍需要設(shè)計(jì)人員去設(shè)計(jì)。圖8-6問(wèn)題域部分與人機(jī)交互部分通過(guò)接口進(jìn)行聯(lián)系如下為兩個(gè)有關(guān)人機(jī)界面部分設(shè)計(jì)的例題。【例題8-1】用發(fā)布一訂閱模式銜接問(wèn)題域部分和人機(jī)交互部分。使用該模式可解決一些問(wèn)題域中的對(duì)象與界面對(duì)象間進(jìn)行交互的問(wèn)題。
圖8-7說(shuō)明了對(duì)一組不斷變化的數(shù)據(jù),用三種顯示方式進(jìn)行實(shí)時(shí)地顯示。a=50%b=30%c=20%圖8-7用三種方式對(duì)一組不斷變化的數(shù)據(jù)進(jìn)行實(shí)時(shí)地顯示在系統(tǒng)中,計(jì)算數(shù)據(jù)的工作由問(wèn)題域部分完成,顯示工作由界面部分完成。由于顯示方式是易變的,此處要采用發(fā)布訂閱模式來(lái)解決這個(gè)問(wèn)題。圖8-8所示是采用該模式所建立的一個(gè)模型。出版者訂閱者發(fā)布者1111..*有變化時(shí),向管理者發(fā)布事件。維護(hù)出版者和訂閱者間的映射,把出版者發(fā)布信息,利用參數(shù)通知給訂閱者。向管理者訂閱事件。圖8-8采用發(fā)布一訂閱模式銜接問(wèn)題域部分和人機(jī)交互部分統(tǒng)計(jì)數(shù)據(jù)事件管理者顯示窗口1..*111{另一種方式,顯示窗口訪問(wèn)統(tǒng)計(jì)數(shù)據(jù)}
在該模型中,訂閱者向發(fā)布者訂閱所感興趣事件,出版者向發(fā)布者發(fā)布事件,發(fā)布者維護(hù)出版者和訂閱者間的映射。當(dāng)數(shù)據(jù)有變化時(shí),發(fā)布者把出版者發(fā)布的數(shù)據(jù)情況利用消息通知給訂閱者。訂閱者是人機(jī)界面模型中的一部分,出版者是問(wèn)題域模型中的一部分,發(fā)布者是人機(jī)交互部分和問(wèn)題域部分之間的協(xié)調(diào)器。
在圖8-8中,一個(gè)發(fā)布者可以管理多個(gè)訂閱者,這樣無(wú)論增加或減少顯示方式,都不需要改動(dòng)出版者,而且對(duì)訂閱者的顯示方式的修改,對(duì)出版者也沒(méi)有影響。有關(guān)發(fā)布一訂閱模式的更多內(nèi)容請(qǐng)見(jiàn)第12章12.5節(jié)。a=50%b=30%c=20%統(tǒng)計(jì)數(shù)據(jù)事件管理者顯示窗口1..*111{另一種方式,顯示窗口訪問(wèn)統(tǒng)計(jì)數(shù)據(jù)}目標(biāo)是通知的發(fā)布者,它發(fā)出通知時(shí),并不知道誰(shuí)是它的觀察者.可以有任意數(shù)目的觀察者訂閱并接收通知.12.5Observer模式Observer(觀察者)模式用于定義對(duì)象間的一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象發(fā)生變化并對(duì)外發(fā)布消息時(shí),所有依賴它的對(duì)象都將得到通知并可進(jìn)行更新。后一句話中的那組對(duì)象是觀察者,它們要在發(fā)布消息的對(duì)象中進(jìn)行登記(訂閱),以便在發(fā)布消息時(shí)能找到它們。該模式也稱為發(fā)布-訂閱(Publish-Subscribe)模式。采用觀察者模式,要在發(fā)布消息的對(duì)象中設(shè)立增減觀察者對(duì)象的操作,對(duì)于觀察者對(duì)象要建立一個(gè)統(tǒng)一的用于接收消息的接口。(若有必要,采用適配器模式來(lái)適配觀察到的子類)
益處:觀察者發(fā)生變化時(shí),只須在發(fā)布消息的對(duì)象中增減對(duì)象標(biāo)識(shí)即可,而不需進(jìn)行其他改動(dòng)。12.3Adapter模式(結(jié)構(gòu)型)
Adapter(適配器)模式用于將類的一個(gè)接口轉(zhuǎn)換為另一個(gè)類所需的接口,以使由于接口不兼容的類能夠一起協(xié)作。
現(xiàn)系統(tǒng)要增加繪制圓形的功能,并且要求復(fù)用一個(gè)繪制圓型的類Circle。若類Circle中的繪圖和填充操作的特征標(biāo)記與類Polygon的并不一致,則無(wú)法使用圖中運(yùn)用的多態(tài)機(jī)制。解決該問(wèn)題的一個(gè)方法是修改類Circle中的特征標(biāo)記。若類Circle中的特征標(biāo)記已經(jīng)用在其他的類中,則會(huì)引起一系列的修改問(wèn)題。況且修改他人的代碼有時(shí)還會(huì)出現(xiàn)難以預(yù)測(cè)的副作用。
對(duì)象Adapter模式類Adapter模式【例題8-2】用00概念表達(dá)界面成分。圖8-9中給出的類圖描述了一個(gè)界面的構(gòu)成。圖8-9用類圖描述界面構(gòu)成的示例上面已經(jīng)提到,在可視化的編程環(huán)境下設(shè)計(jì)工作大為簡(jiǎn)化,往往不需要建立上面那樣的模型。若有必要建立這樣的模型,可以直接使用可視化編程環(huán)境或類庫(kù)所提供的可復(fù)用類。在復(fù)用時(shí),一種方式是直接使用,即把所復(fù)用的類標(biāo)上{復(fù)用},在類圖中直接使用。另一種方式是對(duì)復(fù)用類進(jìn)行繼承,以進(jìn)行擴(kuò)充。圖8-10為上述兩種復(fù)用方式的示例。圖8-10兩種復(fù)用方式示例8.4人機(jī)交互部分的設(shè)計(jì)準(zhǔn)則有關(guān)人機(jī)界面的設(shè)計(jì)原則有很多,都做到是不易的。但必須要保證界面的正確性和用戶友好性。如下是一些重要的界面設(shè)計(jì)原則。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 糧食倉(cāng)庫(kù)工程施工設(shè)計(jì)方案
- 第三章 實(shí)驗(yàn)動(dòng)物標(biāo)準(zhǔn)化課件
- 2024消防安全實(shí)施方案
- 第二章 抗腫瘤藥課件
- 高壓注漿防水施工方案
- Methyl-9R-10S-9-10-dihydroxyoctadecanoate-生命科學(xué)試劑-MCE
- 浙教版2021-2022學(xué)年度七年級(jí)數(shù)學(xué)上冊(cè)模擬測(cè)試卷 (739)【含簡(jiǎn)略答案】
- 自動(dòng)校時(shí)同步時(shí)鐘系統(tǒng)施工方案
- 浙教版2021-2022學(xué)年度七年級(jí)數(shù)學(xué)上冊(cè)模擬測(cè)試卷 (721)【含簡(jiǎn)略答案】
- 浙教版2021-2022學(xué)年度七年級(jí)數(shù)學(xué)上冊(cè)模擬測(cè)試卷 (689)【含簡(jiǎn)略答案】
- 國(guó)家重點(diǎn)研發(fā)計(jì)劃課題任務(wù)書模板
- 藥店110種常見(jiàn)疾病的癥狀及關(guān)聯(lián)用藥方案
- 三年級(jí)語(yǔ)文上冊(cè)期中考試真題滬教版
- 精益生產(chǎn)評(píng)價(jià)打分表
- 史上最全的線材基礎(chǔ)知識(shí)講解
- 英國(guó)文學(xué)史名詞英文解釋
- 保健按摩師的禮儀禮節(jié)
- 東華禪寺義工報(bào)名表
- 三年級(jí)語(yǔ)文上冊(cè)期中考試完整版滬教版
- 2021年秋新湘教版五年級(jí)上冊(cè)科學(xué) 4.1燃燒 教案
- 四線田字格模板
評(píng)論
0/150
提交評(píng)論