問題域部分的設(shè)計(jì)_第1頁
問題域部分的設(shè)計(jì)_第2頁
問題域部分的設(shè)計(jì)_第3頁
問題域部分的設(shè)計(jì)_第4頁
問題域部分的設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第六章 問題域部分的設(shè)計(jì)1、 什么是面向?qū)ο笤O(shè)計(jì)1、 OOA與OOD的關(guān)系: 1 )面向?qū)ο蟮脑O(shè)計(jì)就是在OOA的基礎(chǔ)上運(yùn)用面向?qū)ο蠓椒?,主要解決與現(xiàn)實(shí)有滾得問題,目標(biāo)是產(chǎn)生一個(gè)符合現(xiàn)實(shí)條件的OOD模型。與現(xiàn)實(shí)條件有關(guān)的因素有:圖形用戶系統(tǒng)、硬件、操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)管理系統(tǒng)和編輯語言等。 2 )由于OOD以O(shè)OA模型為基礎(chǔ)且OOA與OOD采用一致的表示方法,這使得從OOA到OOD不存在轉(zhuǎn)換,只需做必要的修改和調(diào)整,或補(bǔ)充某些細(xì)節(jié),并增加幾個(gè)與現(xiàn)實(shí)關(guān)聯(lián)的相獨(dú)立部分即可。因此OOA與OOD之間不存在分析與設(shè)計(jì)的鴻溝,二者能緊密銜接,大大降低了從OOA與OOD的難度、工作量和出錯(cuò)頻率。 3 )OOA

2、主要針對(duì)問題域,識(shí)別有關(guān)的對(duì)象以及它們之間的關(guān)系,產(chǎn)生一個(gè)映射問題域,滿足用戶需求,獨(dú)立于實(shí)現(xiàn)的OOA模型。OOD主要解決與實(shí)現(xiàn)有關(guān)的問題,基于OOA模型,針對(duì)具體的軟、硬件條件(如機(jī)器、網(wǎng)絡(luò)、OS、GUI、DBMS等)產(chǎn)生一個(gè)可實(shí)現(xiàn)的OOD模型。2、OOD模型和過程 在OOA階段只考慮問題域和系統(tǒng)操作責(zé)任,在OOD階段要考慮與具體實(shí)現(xiàn)的問題。圖6-1 OOD模型從一個(gè)側(cè)面觀察 OOD模型包括五個(gè)主要部分一個(gè)核心部分加四個(gè)外圍部分 問題域部分、人機(jī)交換部分、控制驅(qū)動(dòng)部分、數(shù)據(jù)管理部分、構(gòu)建及部署部分從另一側(cè)面觀察 OOD模型每個(gè)部分仍采用OOA的概念和表示方法,只是在輔助模型中要增加分別于描述

3、構(gòu)件模型和部署的構(gòu)件圖和部署圖。OOD過程: 設(shè)計(jì)OOD模型的五個(gè)部分 問題域部分的設(shè)計(jì)、人機(jī)交互部分的設(shè)計(jì)、控制流管理部分的設(shè)計(jì)、數(shù)據(jù)管理部分的設(shè)計(jì)、構(gòu)件部署設(shè)計(jì)。前4項(xiàng)不強(qiáng)調(diào)次序,每個(gè)部分均采用與OOA一致的概念、表示法及活動(dòng),但具有自己獨(dú)特的策略。進(jìn)行構(gòu)件部署設(shè)計(jì)要在其前面四個(gè)部分完成后進(jìn)行。2、 問題域部分的設(shè)計(jì) 對(duì)OOA結(jié)果按實(shí)現(xiàn)條件進(jìn)行補(bǔ)充與調(diào)整就是問題域部分。進(jìn)行問題域部分設(shè)計(jì),要繼續(xù)運(yùn)用OOA的方法,包括概念、表示法及一部分策略。不但 要根據(jù)實(shí)現(xiàn)條件進(jìn)行OOD設(shè)計(jì),而且由于需求變化或新發(fā)現(xiàn)了錯(cuò)誤,也要對(duì)OOA的結(jié)果進(jìn)行修改。本章的重點(diǎn)是對(duì)OOA結(jié)果進(jìn)行補(bǔ)充與調(diào)整,要強(qiáng)調(diào)的是這部

4、分工作主要不是細(xì)化,但OOA未完成的細(xì)節(jié)定義要在OOD完成。 1、為復(fù)用類而增加結(jié)構(gòu)2、提高性能3、增加一般類以建立共同協(xié)議4、按編程語言調(diào)整繼承5、轉(zhuǎn)化復(fù)雜關(guān)聯(lián)決定關(guān)系的實(shí)現(xiàn)方式6、調(diào)整與完善屬性7、構(gòu)造及優(yōu)化算法8、決定對(duì)象間的可訪問性9、定義對(duì)象實(shí)例10、其他如下針對(duì)一些主要的情況講述如何進(jìn)行問題域的設(shè)計(jì) 1、為復(fù)用類而增加結(jié)構(gòu)如果在 OOA識(shí)別和定義的類是本次開發(fā)中新定義的,而且沒有可復(fù)用的資源,則需要進(jìn)一步設(shè)計(jì)和編程。如果已存在一些可復(fù)用的類,而且這些類既有分析、設(shè)計(jì)時(shí)的定義,又有源程序,那么,復(fù)用這些類即可提高開發(fā)效率與質(zhì)量。 可復(fù)用的類可能只是與OOA模型中的類相似,而不是完全相

5、同對(duì)二者進(jìn)行修改。1) 如果完全相同,就把可復(fù)用的類直接加到問題域,并用復(fù)用標(biāo)記所復(fù)用的類。2) 如果大于,就把可復(fù)用的類直接加到問題域,并用復(fù)用標(biāo)記所復(fù)用的類,所需要的累再繼承它。3) 如果大于,就把可復(fù)用的類直接加到問題域,刪除可復(fù)用類中的多余信息,并用復(fù)用標(biāo)記所復(fù)用的類。4) 如果相似,按如下方法處理; 把要復(fù)用的類加到問題域,標(biāo)以 “復(fù)用”。 劃掉(或標(biāo)出)不用的屬性與服務(wù)。 建立從復(fù)用類到問題域原有的類之間的泛化關(guān)系。 由于問題域的類繼承了“復(fù)用”類的特征,所以有些屬性和服務(wù)不需要了應(yīng) 該把它們劃掉。 考慮修改問題域原有類的結(jié)構(gòu)和連接,必要時(shí)移到“復(fù)用”類。圖6-2問題域中例題2、提

6、高性能1) 調(diào)整對(duì)象的分布 把需要頻繁交換信息的對(duì)象,盡量地放在一臺(tái)處理機(jī)上。 2)增加保存中間結(jié)果的屬性或類 避免以后重復(fù)計(jì)算。 3)提高或降低系統(tǒng)的并發(fā)度,可能要人為地增加或減少主動(dòng)對(duì)象。 4)合并通訊頻繁的類5)用聚合關(guān)系描述復(fù)雜類 如果一個(gè)所描述事物過于復(fù)雜,其操作也可能比較復(fù)雜,因?yàn)槠渲虚g可能要包多項(xiàng)工作內(nèi)容。對(duì)這種情況的處理,可考慮用聚合關(guān)系描述復(fù)雜類。6) 細(xì)化對(duì)象的分類 如果一個(gè)類的概念范疇過于大,那么它所描述的對(duì)象的實(shí)際情況可能就有若干差異。解決的一個(gè)方法就是把類劃分的更細(xì)一些,在原先較為一般的類之下定義一些針對(duì)不同具體情況的類。在每個(gè)特殊類中分別定義適合各自對(duì)象的操作。3、

7、增加一般類以建立共同協(xié)議 1)增加一個(gè)類,將所有具有相同操作和屬性的類組織在一起,提供通用的協(xié)議。 2)增加一般的類,提供局部通用的協(xié)議。 3)對(duì)相似操作的處理。 通過對(duì)特征標(biāo)記做小的修改,以使他們相同,然后再把他們提升到一般類中。4 、按編程語言調(diào)整繼承 由于在OOA強(qiáng)調(diào)如實(shí)地反映問題域,OOD考慮實(shí)現(xiàn)問題,所用語言不支持多繼承,甚至不支持繼承。 1)對(duì)多繼承的調(diào)整 方法一:采用聚合把多繼承轉(zhuǎn)換為單繼承因?yàn)榫酆虾头夯遣煌母拍睿@種方法并不是通用的(按定義)。在大多數(shù)情況下,需要考慮形成多繼承的原因,將本來在特殊類中顯式定義的信息離出來,作為部分對(duì)象,以原來的一般類作為整體對(duì)象。 圖6-3

8、多繼承中的一個(gè)繼承換為聚合示例 圖6-4所示的模型中有一個(gè)多繼承,現(xiàn)假設(shè)編程語言不支持多繼承,僅支持單繼承。 圖6-4多繼承示例 圖6-5采用聚合的方式把多繼承轉(zhuǎn)換為單位繼承示例由于在圖6-4所示的模型是按人員身份對(duì)一本類“人員”進(jìn)行分類,并形成了其下的兩個(gè)特殊類“研究生”和“教職工”,現(xiàn)在用身份作為一個(gè)類,依據(jù)它對(duì)原模型進(jìn)行調(diào)整,如圖6-5所示。圖6-5用類“人員”創(chuàng)建對(duì)象的用意不變。創(chuàng)建類“研究生”的對(duì)象時(shí),使用類“人員”和類“身份”以及自身的信息,類“教職工”也與此類似。創(chuàng)建“在職研究生”的對(duì)象時(shí),使用類圖中的四個(gè)類的信息。 方法二:采用壓平的方式 采用這種方法,使得類“教職工”和“研究

9、生”中的一些特征要在類的“在職研究生”中重復(fù)出現(xiàn),導(dǎo)致信息冗余。圖6-6采用壓平的方式把多繼承轉(zhuǎn)換為單位繼承圖6-7采用壓平和聚合的方式把繼承轉(zhuǎn)換為單位繼承2) 取消繼承方法一:把繼承結(jié)構(gòu)展平圖6-8完全取消繼承示例方法二:采用聚合的方法圖6-9采用聚合的方式取消繼承3) 對(duì)多態(tài)性的調(diào)整 在繼承結(jié)構(gòu)中,具有相同名字的屬性和操作,在不同的類中可以具有不同的類型和行為。這種在繼承結(jié)構(gòu)中對(duì)同一命令具有不同的含義的機(jī)制,就是繼承的多態(tài)。如果編程的語言不支持多態(tài),就需要把多態(tài)有關(guān)的屬性和操作的名字分別賦不同的含義,也即明確把他們是為不同的東西,不但如此,往往還要按實(shí)際要求,重新考慮對(duì)象的分類,并對(duì)屬性和

10、操作進(jìn)行調(diào)整。 屬性“邊數(shù)”、“頂點(diǎn)坐標(biāo)”和操作“繪圖”不能被所有的特殊繼承或不參加修改的繼承,就說明它們只能適合多邊形集合的一個(gè)子集,把這個(gè)子集定義為一個(gè)特殊的類“不規(guī)則多邊形”,并把這些屬性和操作下降到該特殊類中。這樣類“正多邊形”和“矩形”也不能繼承那些不適合自己的屬性和操作,而是要自己進(jìn)行的定義。如圖6-1所示。圖6-10多態(tài)性的調(diào)整示例5、轉(zhuǎn)化復(fù)雜關(guān)聯(lián)決定關(guān)系的實(shí)現(xiàn)方式 (1)對(duì)復(fù)雜關(guān)聯(lián)的轉(zhuǎn)化 1)把多元關(guān)聯(lián)和N元關(guān)聯(lián)轉(zhuǎn)化為二元關(guān)聯(lián) 2)把多對(duì)多關(guān)聯(lián)類轉(zhuǎn)化為一對(duì)多關(guān)聯(lián)圖6-11把多對(duì)關(guān)聯(lián)轉(zhuǎn)化為一對(duì)關(guān)聯(lián) 在圖6-11中類“供需合同”設(shè)立了兩個(gè)屬性“賣方”和“買方”在實(shí)例化后分別用于記錄

11、類“供貨商”和“客戶”的對(duì)象的標(biāo)識(shí)。若不僅僅需要從類“供需合同”的對(duì)象訪問其他對(duì)象,還存在著其他對(duì)象的訪問。(2)關(guān)聯(lián)的實(shí)現(xiàn)方式 對(duì)關(guān)聯(lián)進(jìn)行調(diào)整后,要考慮關(guān)聯(lián)的實(shí)現(xiàn)方式。 A.聚合 決定在整體類中指出部分類時(shí),是用部分類直接作為整體類中的屬性的數(shù)據(jù)類型,還是把部分類用作指針或?qū)ο髽?biāo)識(shí)的基類型,再用這樣的指針或?qū)ο髽?biāo)示定義整體類的屬性。如果是組合,最好用第1種方式,否則就需要在程序中保證整體對(duì)象與部分對(duì)象的生命周期的一致性。 B.關(guān)聯(lián) 通常,通過在對(duì)象中設(shè)立指針或?qū)ο髽?biāo)識(shí)以指向或記錄另一端的對(duì)象的方法,來實(shí)現(xiàn)關(guān)聯(lián)。如果是單向關(guān)聯(lián),就在源端的類中設(shè)立屬性,用來標(biāo)記另一端的類將來創(chuàng)建的對(duì)象。如果是雙

12、向關(guān)聯(lián),就在兩端類中各設(shè)立屬性,用來標(biāo)記對(duì)方將來創(chuàng)建的對(duì)象。如果關(guān)聯(lián)中對(duì)方類的多重性是1,那么可在本方設(shè)立一個(gè)指向?qū)Ψ綄?duì)象的指針,或設(shè)立一個(gè)記錄對(duì)方對(duì)象引用的屬性。 如果對(duì)方類的多重性大于1,那么可在本方設(shè)立一個(gè)指向?qū)Ψ綄?duì)象的指針集合或引用集合。 若關(guān)聯(lián)的某端有角色名,最好把其作為另一端類的屬性名,以訪問與角色名相鄰的類。 6、調(diào)整完備與屬性 按照語法: 可見性 屬性名:類型= 初始值 對(duì)屬性的定義進(jìn)行完善。每一個(gè)屬性或者包含單個(gè)值,或者包含作為一個(gè)整體的密切相關(guān)的一組值。圖6-12對(duì)編輯語言不支持的屬性類型進(jìn)行調(diào)整的示例 若要給出對(duì)屬性的性質(zhì)的約束,如“工齡60”或“0英語成績(jī)100”等,也

13、要看語言是否對(duì)其直接支持,否則要在算法上考慮如何實(shí)現(xiàn)。 為了維護(hù)數(shù)據(jù)的完整性,必須要考慮需要一起更新的多個(gè)相關(guān)聯(lián)的數(shù)據(jù)值。特別是,當(dāng)基本的數(shù)據(jù)發(fā)生變化時(shí),必須更新導(dǎo)出的屬性。通過下列方法可以做到這一點(diǎn): 1)顯式的代碼 因?yàn)槊恳粋€(gè)導(dǎo)出屬性是根據(jù)一個(gè)或多個(gè)基本對(duì)象屬性定義的,更新導(dǎo)出屬性的一種方法是,在更新基本對(duì)象屬性的操作中插入更新導(dǎo)出屬性的代碼。這種附加的代碼將明確地更新依賴基本對(duì)象屬性的導(dǎo)出屬性,使得基本屬性與導(dǎo)出屬性的值同步。 2)批處理性的重計(jì)算 當(dāng)基本數(shù)據(jù)以批處理的方式改變時(shí),可能在所有的基本數(shù)值改變之后,再重新計(jì)算所有的導(dǎo)出屬性的值。 3)觸發(fā)器 凡是依賴基本屬性的屬性,都必須將它

14、自己向基本屬性注冊(cè)。當(dāng)基本屬性的值被更新時(shí),由專門設(shè)置的觸發(fā)器更新導(dǎo)出屬性的值。7、構(gòu)造和優(yōu)化算法 對(duì)于需要設(shè)計(jì)的操作,要從如下幾方面進(jìn)行詳細(xì)地定義: 1)按照定義操作的格式: 可見性 操作名(參數(shù)列表):返回類型 完善操作的定義。 2)從問題域的角度,根據(jù)其責(zé)任,考慮實(shí)現(xiàn)操作的算法,即對(duì)象是怎樣提供操作的。 3)若操作有前后置條件或不變式,考慮編程語言是否予以支持。若不支持,在操作的方法中要予以實(shí)現(xiàn)。 4)建議進(jìn)一步地分析特定類的對(duì)象相關(guān)的所有交互圖,找出其所有與之相關(guān)的消息。一個(gè)對(duì)象所要響應(yīng)的每個(gè)消息都要由該對(duì)象的操作處理,其中的一個(gè)操作也可能要使用其他操作。如果類擁有狀態(tài)圖,還可根據(jù)內(nèi)部

15、轉(zhuǎn)換以及外部轉(zhuǎn)換上的動(dòng)作,設(shè)計(jì)算法的詳細(xì)邏輯。 可用自然語言或進(jìn)行了一定結(jié)構(gòu)化的自然語言描述算法,也可以使用程序框圖或活動(dòng)圖描述算法。 在算法中還要考慮對(duì)例外和特殊情況的處理。如考慮對(duì)輸入錯(cuò)誤、來自中間件或其它軟硬件的錯(cuò)誤的消息以及其它例外情況的處理。 在系統(tǒng)較為復(fù)雜或需要處理大批量的數(shù)據(jù)的情況下,若系統(tǒng)在性能上有要求,就要對(duì)系統(tǒng)的體系結(jié)構(gòu)和算法進(jìn)行優(yōu)化。8、決定對(duì)象間的可訪問性 從類A的對(duì)象到類B的對(duì)象有4種訪問性(1)屬性可見性:B是A的一個(gè)屬性(關(guān)聯(lián)、聚合) class A ;B b;(2)參數(shù)可見性:B的對(duì)象是A的一個(gè)方法的參數(shù)(依賴) A.amethod(B b) /間接地找到一個(gè)對(duì)

16、象,并賦給b(3)局部聲明可見性:B的對(duì)象是在A的一個(gè)方法中聲明的一個(gè)局部變量(依賴) class A:amethod ; B b;(4) 全局可見性:B的對(duì)象在某種程度上全局可見(依賴)聲明B的全局實(shí)例變 量。 對(duì)于后三種情況而言,從類A到類B間存在著依賴關(guān)系,在程序運(yùn)行期間A的對(duì)象與B的對(duì)象存在著臨時(shí)性的連接(臨時(shí)鏈),而第一種情況中的鏈?zhǔn)怯蓮念怉到類B間的關(guān)聯(lián)實(shí)例化而來的。 9、定義對(duì)象實(shí)例 在邏輯上,一個(gè)類是對(duì)一組對(duì)象的抽象描述。在物理上,一個(gè)類所創(chuàng)建的各對(duì)象,要么在內(nèi)存中,要么在外存中。在內(nèi)存中創(chuàng)建的一個(gè)對(duì)象,用一個(gè)變量記錄它的標(biāo)識(shí)。在外存中的對(duì)象,可能保存在一個(gè)文件中,也可能保存在

17、一個(gè)數(shù)據(jù)庫表中。 在OOD中,根據(jù)不同的實(shí)現(xiàn)條件和實(shí)現(xiàn)策略,可以按如下的方式定義對(duì)象: 1) 用相應(yīng)的類定義內(nèi)存中的全局性對(duì)象,包括靜態(tài)聲明和動(dòng)態(tài)創(chuàng)建兩種方式。可以一次針對(duì)一個(gè)對(duì)象定義一個(gè)變量,也可以成批地定義對(duì)象。例如,可以定義一個(gè)數(shù)組,它的每個(gè)元素是一個(gè)對(duì)象變量,以此來成批地定義對(duì)象。 2)當(dāng)系統(tǒng)需要通過從外存讀取數(shù)據(jù)來創(chuàng)建一個(gè)對(duì)象時(shí) ,先創(chuàng)建該對(duì)象,再從外存中讀取這個(gè)對(duì)象數(shù)據(jù),把數(shù)據(jù)賦值給對(duì)象的相應(yīng)屬性。按照一定的策略,內(nèi)存中的永久對(duì)象要保存到外存中,請(qǐng)參看數(shù)據(jù)管理部分。 無論那種方式,都需要在在OOD文檔中加以說明。按如下格式在類描述模板的定義對(duì)象部分進(jìn)行描述:處理機(jī):,;內(nèi)存對(duì)象:(

18、n元數(shù)組);外存對(duì)象:;10 、其他 在OOD的問題域部分應(yīng)該根據(jù)具體問題考慮使用設(shè)計(jì)模式。 在OOD的問題域部分,根據(jù)情況,還有一些其它需要考慮的問題。例如,考慮加入進(jìn)行輸入數(shù)據(jù)驗(yàn)證這樣的類;考慮對(duì)來自中間件或其它軟硬件的錯(cuò)誤進(jìn)行處理的類,以及對(duì)其它例外情況進(jìn)行處理的類。 有些作法是在OOD階段不把這樣的讀寫屬性的操作放在類中,而認(rèn)為這是一種約定,編程人員能理解。 有些作法也不把諸如創(chuàng)建和復(fù)制對(duì)象這樣的操作放在OOD模型中。 第7章 人機(jī)交互部分的設(shè)計(jì)1、 什么是人機(jī)交互部分人機(jī)交互部分是OOD模型的組成部分之一,突出人如何任命系統(tǒng)以及系統(tǒng)如何向用戶提交信息。設(shè)計(jì)人機(jī)交互就是要設(shè)計(jì)輸入與輸出

19、,其中包含的對(duì)象以及其間的關(guān)系構(gòu)成了人機(jī)交互的模型。圖7-1設(shè)計(jì)員與用戶協(xié)作設(shè)計(jì)人機(jī)界面的工作過程把人機(jī)交互部分作為系統(tǒng)中一個(gè)獨(dú)立的組成部分,進(jìn)行分析和設(shè)計(jì),有利于隔離界面支持系統(tǒng)的變化對(duì)問題域部分的影響。二、人機(jī)交互部分的需求分析對(duì)使用系統(tǒng)的人進(jìn)行分析以便設(shè)計(jì)出適合其特點(diǎn)的交互方式和界面表現(xiàn)形式;對(duì)人和機(jī)器的交互過程進(jìn)行分析核心問題是人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。1、分析與系統(tǒng)交互的人人員參與者 人對(duì)界面的需求,不僅在于人機(jī)交互的內(nèi)容,而且在于他們對(duì)界面表現(xiàn)形式、風(fēng)格等方面的愛好。前者是客觀需求,對(duì)誰都一樣;后者是主觀需求,因人而異。(1)列舉所有的人員參與者(2)對(duì)人員參與者進(jìn)

20、行調(diào)查研究(3)區(qū)分人員類型,并了解人員的主主觀需求(4)統(tǒng)計(jì)(或估算)各類人員的比例(5) 按照一定的準(zhǔn)則進(jìn)行折中與均衡2、從用況(use case)分析人機(jī)交互 use case的構(gòu)成 (1)參與者的行為和系統(tǒng)行為按時(shí)序交替出現(xiàn),左右分明。形成交叉排列的段落。 (2)每個(gè)段落至少含有一個(gè)輸入語句或輸出語句; (3)有若干純屬參與者自身或系統(tǒng)自身的行為陳述; (4) 可能包含一些控制語句或括號(hào)。 抽取方法:刪除所有與輸入、輸出無關(guān)的語句和不再包含任何內(nèi)容的控制語句與括號(hào),剩下的就是對(duì)一個(gè)參與者(人)使用一項(xiàng)系統(tǒng)功能時(shí)的人機(jī)交互描述。收款員收款(use case)輸入開始本次收款的命令; 作好

21、收款準(zhǔn)備,應(yīng)收款總數(shù) 置為0,輸出提示信息;for 顧客選購的每種商品 do 輸入商品編號(hào); if 此種商品多于一件 then 輸入商品數(shù)量 end if; 檢索商品名稱及單價(jià); 貨架商品數(shù)減去售出數(shù); if 貨架商品數(shù)低于下限 then 通知供貨員請(qǐng)求上貨 end if; 計(jì)算本種商品總價(jià)并打印編號(hào)、 名稱、數(shù)量、單價(jià)、總價(jià); 總價(jià)累加到應(yīng)收款總數(shù);end for; 打印應(yīng)收款總數(shù);輸入顧客交來的款數(shù); 計(jì)算應(yīng)找回的款數(shù), 打印以上兩個(gè)數(shù)目, 收款數(shù)計(jì)入賬冊(cè)。 (a)一個(gè)use case的例子收款員收款(人機(jī)交互)輸入開始本次收款的命令; 輸出提示信息;for 顧客選購的每種商品 輸入商品編

22、號(hào); if 此種商品多于一件 then 輸入商品數(shù)量 end if; 打印商品編號(hào)、名稱、 數(shù)量、單價(jià)、總價(jià);end for; 打印應(yīng)收款總數(shù) 輸入顧客交來的款數(shù) 打印交款數(shù)及找回款數(shù);(b)人機(jī)交互描述 從use case提取人機(jī)交互描述圖7-2從用況提取人機(jī)交互描述的示例三、如何設(shè)計(jì)人交互部分1、設(shè)計(jì)輸入與輸出(1)設(shè)計(jì)輸入1)確定輸入設(shè)備2)設(shè)計(jì)輸入界面3)輸入步驟的細(xì)化輸入步驟的細(xì)化輸入設(shè)備的選擇輸入信息表現(xiàn)形式的選擇(命令,數(shù)據(jù))(2)設(shè)計(jì)輸出1)確定輸出設(shè)備2)確定輸出的內(nèi)容和形式3)輸出步驟的細(xì)化輸出設(shè)備的選擇輸出信息表現(xiàn)形式的選擇2、命令的組織 不受歡迎的命令組織方式:(1)一

23、條命令含有大量的參數(shù)和任選項(xiàng)(2)系統(tǒng)有大量命令,不加任何組織和引導(dǎo)命令的組織措施分解與組合(1)分解:將一條含有許多參數(shù)和選項(xiàng)的命令分解為若干命令步(2)組合:將基本命令組織成高層命令,從高層命令引向基本命令基本命令:使用一項(xiàng)獨(dú)立的系統(tǒng)功能的命令。(提取后的用況)命令步:在執(zhí)行一條基本命令的交互過程中所包含的具體輸入步驟。高層命令:如果一條命令是在另一條命令的引導(dǎo)下被選用的,則后者稱作前者的高層命令。(a)線性結(jié)構(gòu) (b) 樹型結(jié)構(gòu)(d) 一般網(wǎng)狀結(jié)構(gòu)(c) 半序網(wǎng)狀結(jié)構(gòu) 圖7-3基本命令及其命令的結(jié)構(gòu)圖7-4高層命令及其結(jié)構(gòu) 高層命令按功能組織:如文件下有:創(chuàng)建、打開、關(guān)閉、打印、刪除等。

24、 按子系統(tǒng)組織:如文本編輯子系統(tǒng)、編譯自系統(tǒng)。 在兩個(gè)命令之間通常要輸出信息,如圖7-5所示。圖7-5a表示兩個(gè)命令步之間不存在這輸出信息結(jié)構(gòu)。圖7-4b表示連個(gè)命令步之間可能存在三種輸出信息結(jié)構(gòu)。第一種為反饋信息,在一個(gè)命令需要較長(zhǎng)的時(shí)間執(zhí)行時(shí),應(yīng)該向用戶顯示當(dāng)前命令的情況,給出一個(gè)進(jìn)度;第二中處理結(jié)果,當(dāng)前命令執(zhí)行的結(jié)果可能要向用戶顯示;第三種提示信息,即對(duì)下一步可輸入的命令的提示。圖7-5c表示兩層命令之間的更為復(fù)雜的輸出信息結(jié)構(gòu)。圖7-5命令之間的輸出信息結(jié)構(gòu)在建立命令樹時(shí),應(yīng)遵循如下策略:a.把使用最頻繁的命令放在前面,按照用戶的工作步驟進(jìn)行排列。b.在命令中發(fā)現(xiàn)整體-部分模式,以幫

25、助對(duì)命令的組織與分塊。c.每層命令的個(gè)數(shù)應(yīng)遵循7+2原則,命令的層次深度盡量要控制在三層以內(nèi)。3、 用OO概念表達(dá)所有的界面成分 1)每一種窗口對(duì)應(yīng)于一個(gè)類。2)在窗口中,按照命令的邏輯層次,部署所需要的元素,如菜單、工作區(qū)和對(duì)話 框等。窗口中的部件元素對(duì)應(yīng)窗口類的部分類,部分類與窗口類形成聚合關(guān)系。 3)發(fā)現(xiàn)窗口類間的共性以及部件類間的共性,定義較一般的窗口類和部件類,分別形成窗口類間以及部件 類間的泛化關(guān)系。 4)用類的屬性表示窗口或部件的靜態(tài)特征,如尺寸、位置、顏色和選項(xiàng)等。 5)用操作表示窗口或部件的動(dòng)態(tài)特征,如選中、移動(dòng)和滾屏等。有的操作要涉及到問題域中的類。6)發(fā)現(xiàn)界面類之間的聯(lián)系

26、,在其間建立關(guān)聯(lián)。必要時(shí),進(jìn)一步地繪制用戶與系統(tǒng)會(huì)話的順序圖。7)建立界面類與問題域類之間的聯(lián)系。有些界面對(duì)象要與問題域中的對(duì)象進(jìn)行通訊,故要對(duì)二者之間的通訊進(jìn)行設(shè)計(jì)。 在具體設(shè)計(jì)時(shí),設(shè)計(jì)人員應(yīng)該注意以下幾點(diǎn): (a)人機(jī)界面只負(fù)責(zé)輸入與輸出和窗口更新這樣的工作,并把所有面向問題域部分的請(qǐng)求轉(zhuǎn)發(fā)給問題域部分,即在界面對(duì)象中不應(yīng)該對(duì)業(yè)務(wù)邏輯進(jìn)行處理。 (b)一種常見的作法是,問題域部分的對(duì)象不應(yīng)該主動(dòng)發(fā)起與界面部分對(duì)象之間的通訊,而只能對(duì)界面部分對(duì)象進(jìn)行響應(yīng),也就是說,只有界面部分的對(duì)象才能訪問問題域部分的對(duì)象。通常把界面對(duì)象向問題域部分對(duì)象傳輸?shù)男畔⒒虬l(fā)布命令看作是“請(qǐng)求”,而把從問題域部分對(duì)象向界面部分對(duì)象傳輸?shù)男畔⒖醋魇恰盎貞?yīng)”或“通知”。 (c)盡量減少界面部分與問題域部分的耦合。由于界面是易變的,從易于維護(hù)和易于復(fù)用的角度出發(fā),問題域部分和界面部分應(yīng)該是低

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論