版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章軟件詳細(xì)設(shè)計(jì)5.1結(jié)構(gòu)化詳細(xì)設(shè)計(jì)5.2結(jié)構(gòu)化設(shè)計(jì)工具5.3人機(jī)界面設(shè)計(jì)5.4數(shù)據(jù)庫(kù)設(shè)計(jì)5.5面向?qū)ο缶O(shè)計(jì)5.6編
碼.5.1結(jié)構(gòu)化詳細(xì)設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)的理念是在20世紀(jì)60年代由Dijkstra等人提出并加以完善的。結(jié)構(gòu)化的程序一般只需要用3種基本的邏輯結(jié)構(gòu)就能實(shí)現(xiàn),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),如圖5-1所示。.5.2結(jié)構(gòu)化設(shè)計(jì)工具5.2.1程序流程圖程序流程圖又稱(chēng)為“程序框圖”,是Goldstine于1946年首先采用的。它是歷史最悠久,使用最廣泛的描述軟件設(shè)計(jì)的方法,能直觀(guān)地描述過(guò)程的控制流程,便于初學(xué)者掌握。其中較常用的一些符號(hào)如圖5-2所示,方框表示一個(gè)處理步驟,菱形代表一個(gè)邏輯條件,箭頭表示控制流向。注意,程序流程圖中使用的箭頭代表控制流,而不是數(shù)據(jù)流。.5.2.2N-S圖盒圖是由Nassi和Shneiderman提出的,所以又稱(chēng)為“N-S圖”,其基本描述符號(hào)如圖5-3所示。.5.2.3PAD圖PAD圖(ProblemAnalysisDiagram,問(wèn)題分析圖)自1973年由日本日立公司發(fā)明以后,已得到一定程度的推廣。它是由程序流程圖演化而來(lái),用二維樹(shù)形結(jié)構(gòu)的圖表示程序的控制流,將這種圖翻譯成程序代碼比較容易。圖5-4給出PAD圖中的基本描述符號(hào)。.5.2.3PAD圖PAD圖的主要優(yōu)點(diǎn)如下。(1)使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號(hào)設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序。(2)所描繪的程序結(jié)構(gòu)十分清晰,圖中最左邊的豎線(xiàn)是程序的主線(xiàn),即第1層結(jié)構(gòu)。(3)表現(xiàn)的程序邏輯易讀、易懂且易記。PAD圖是二維樹(shù)形結(jié)構(gòu)的圖形,程序從圖中最左豎線(xiàn)上端的節(jié)點(diǎn)開(kāi)始自上而下,從左向右順序執(zhí)行,遍歷所有節(jié)點(diǎn)。(4)容易將PAD圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,這種轉(zhuǎn)換可用軟件工具自動(dòng)完成。從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。(5)既可用于表示程序邏輯,又可用于描繪數(shù)據(jù)結(jié)構(gòu)。.5.2.3PAD圖PAD圖的符號(hào)支持自頂向下,逐步求精方法的使用。開(kāi)始時(shí)設(shè)計(jì)者可以定義一個(gè)抽象的程序,隨著設(shè)計(jì)工作的深入使用def符號(hào)逐步增加細(xì)節(jié),直至完成詳細(xì)設(shè)計(jì),如圖5-5所示。.5.2.4HIPO圖可視目錄表由體系框圖、圖例和描述說(shuō)明3個(gè)部分組成。具體描述如下。(1)體系框圖。(2)圖例。(3)描述說(shuō)明。【案例5.1】盤(pán)存/銷(xiāo)售系統(tǒng)的HIPO圖應(yīng)用HIPO法對(duì)盤(pán)存/銷(xiāo)售系統(tǒng)進(jìn)行分析,得到如圖5-6所示的工作流程圖。.5.2.4HIPO圖分析此工作流程圖,可得如圖5-7所示的可視目錄表,其中圖5-7(a)所示為系統(tǒng)的層次圖;圖5-7(b)所示為后面IPO圖的圖例。.5.2.4HIPO圖描述說(shuō)明如表5-0所示。號(hào)
碼說(shuō)
明1.0.0處理訂貨,維護(hù)盤(pán)存文件,并且產(chǎn)生發(fā)貨單、包裝單、貨運(yùn)單、顧客付款收據(jù)、盤(pán)存與銷(xiāo)售報(bào)表1.1.0顧客訂單檢查,核對(duì)顧客賒欠金額,產(chǎn)生銷(xiāo)售報(bào)表1.1.1用工作文件的盤(pán)存項(xiàng)目號(hào),對(duì)顧客訂單進(jìn)行核對(duì)和排序1.1.2以地區(qū)和人員為單位編制銷(xiāo)售報(bào)表,并計(jì)算銷(xiāo)售傭金1.1.3檢驗(yàn)顧客賒欠金額計(jì)算折扣,確定支付項(xiàng)目1.2.0處理盤(pán)存管理報(bào)表、顧客付款收賬、發(fā)貨、包裝和托運(yùn).5.2.4HIPO圖概要IPO圖用于表達(dá)對(duì)一個(gè)系統(tǒng),或?qū)ζ渲心骋粋€(gè)子系統(tǒng)功能的概略表達(dá),指明在完成某一功能框規(guī)定的功能時(shí)需要哪些輸入、哪些操作和哪些輸出。圖5-8所示為表示銷(xiāo)售/盤(pán)存系統(tǒng)第2層的對(duì)應(yīng)H圖中1.1.0框的概要IPO圖。.5.2.4HIPO圖在概要IPO圖中,沒(méi)有指明輸入―處理―輸出三者之間的關(guān)系,用它進(jìn)行下一步的設(shè)計(jì)是不可能的。所以需要使用詳細(xì)IPO圖用于指明上述三者之間的關(guān)系,其圖形與概要IPO圖一樣,但輸入和輸出最好用具體的介質(zhì)和設(shè)備類(lèi)型的圖形表示。圖5-9所示為銷(xiāo)售/盤(pán)存系統(tǒng)中對(duì)應(yīng)H圖中1.1.2框的詳細(xì)IPO圖。.5.2.5判定表與判定樹(shù)【案例5.2】確定保險(xiǎn)類(lèi)別(1)提取問(wèn)題中的條件,包括年齡、性別和婚姻。(2)標(biāo)出條件的取值,表5-1所示為條件值。條
件
名取
值符
號(hào)取
值
數(shù)
m年齡年齡≤2121<年齡<26年齡≥26CYLm1=3性別男女MFm2=2婚姻未婚已婚SEm3=判定表與判定樹(shù)(3)計(jì)算所有條件的組合數(shù)N。(4)提取可能爭(zhēng)取的動(dòng)作或措施,適用于A類(lèi)保險(xiǎn),B類(lèi)保險(xiǎn),C類(lèi)保險(xiǎn),以及額外收費(fèi)共4種。(5)制做判定表,如表5-2所示。123456789101112年齡CCCCYYYYLLLL性別FFMMFFMMFFMM婚姻SESESESESESEA類(lèi)保險(xiǎn)√√√√B類(lèi)保險(xiǎn)√√√√C類(lèi)保險(xiǎn)√√√√額外收費(fèi)√√√√.5.2.5判定表與判定樹(shù)(6)完善判定表。初步的判定表可能不完善,表現(xiàn)在以下幾個(gè)方面。
缺少判定到中年采取的動(dòng)作,如問(wèn)題陳述中若沒(méi)有“除此之外……導(dǎo)致”第9和第10兩列無(wú)法選取,則應(yīng)該補(bǔ)充完整。
有冗余的列,兩個(gè)或多個(gè)規(guī)則中具有相同的動(dòng)作,并且按所對(duì)應(yīng)的各個(gè)條件組合中有取值無(wú)關(guān)的條件。如第1列和第2列,第5列和第6列,第9列和第10列,第11列和第12列都與第3個(gè)條件“婚姻”沒(méi)有關(guān)系,因此可合并,合并后如表5-3所示。
134578911年齡CCCYYYLL性別FMMFMMFM婚姻—SE—SE——A類(lèi)保險(xiǎn)√√B類(lèi)保險(xiǎn)√√√C類(lèi)保險(xiǎn)√√√額外保險(xiǎn)√√√.5.2.5判定表與判定樹(shù)判定樹(shù)是判定表的變形,一般情況下比判定表更直觀(guān),并且易于理解和使用。與判定表5-3等價(jià)的判定樹(shù)如圖5-10所示。.5.2.6過(guò)程描述語(yǔ)言
外層:用于描述控制結(jié)構(gòu),采用順序、選擇和重復(fù)3種基本結(jié)構(gòu)。
內(nèi)層:一般采用祈使語(yǔ)句的自然語(yǔ)言短語(yǔ),使用數(shù)據(jù)字典中的名詞和有限的自定義詞。其動(dòng)詞含義要具體,盡量不用形容詞和副詞修飾。以下是PDL語(yǔ)言的3種形式。(1)順序結(jié)構(gòu):AseqBlock1Block2Block3Aend.5.2.6過(guò)程描述語(yǔ)言(2)選擇結(jié)構(gòu):Aselectcond1Block1Aorcond2Block2Aorcond3Block3Aend(3)重復(fù)結(jié)構(gòu):AiteruntilcondBlock1Aend
AiterwhilecondBlock1Aend.5.2.6過(guò)程描述語(yǔ)言【案例5.3】統(tǒng)計(jì)單詞數(shù)目以下是一個(gè)用PDL語(yǔ)言描述的統(tǒng)計(jì)單詞數(shù)目的例子:統(tǒng)計(jì)空格
seq打開(kāi)文件讀入字符串Totalsum=0程序體
iteruntil文件結(jié)束…程序體end打印總數(shù)seq打印出空格總數(shù)打印總數(shù)end關(guān)閉文件停止統(tǒng)計(jì)空格end.5.3人機(jī)界面設(shè)計(jì)5.3.1界面分析與設(shè)計(jì)1.美學(xué)規(guī)則在有關(guān)界面設(shè)計(jì)的著作中,TheoMandel創(chuàng)造了3條黃金原則(1)置用戶(hù)于控制之下(2)減少用戶(hù)的記憶負(fù)擔(dān)。(3)保持界面一致。2.人機(jī)界面分析人機(jī)界面的設(shè)計(jì)工作應(yīng)與軟件系統(tǒng)的需求分析工作同步進(jìn)行,主要包括如下幾個(gè)過(guò)程。(1)通過(guò)界面和系統(tǒng)交互的最終用戶(hù)分析。(2)最終用戶(hù)為完成工作要做的任務(wù)分析。(3)確定界面的類(lèi)型。(4)任務(wù)處理的環(huán)境。.5.3.1界面分析與設(shè)計(jì)界面分析的過(guò)程如圖5-11所示。.5.3.1界面分析與設(shè)計(jì)用戶(hù)特性度量與期望的用戶(hù)使用模式,以及觀(guān)測(cè)到的用戶(hù)群體能力有關(guān),主要的衡量標(biāo)準(zhǔn)如下。(1)用戶(hù)使用的頻度:即是否經(jīng)常使用系統(tǒng)。(2)用戶(hù)是否能夠自由選用界面:所有的界面都應(yīng)當(dāng)是良好的。(3)用戶(hù)對(duì)計(jì)算機(jī)的熟悉程度:對(duì)計(jì)算機(jī)的熟悉程度決定了使用戶(hù)達(dá)到熟練程度需要多少訓(xùn)練。(4)用戶(hù)知識(shí):有些用戶(hù)已有相當(dāng)多的計(jì)算機(jī)編程和操作的知識(shí),他們需要一種靈活、可編程或包含命令語(yǔ)言的界面。(5)用戶(hù)思維能力:這是對(duì)用戶(hù)的綜合知識(shí)和智力的衡量。(6)用戶(hù)的生理能力和技能:主要指人的視覺(jué)、聽(tīng)覺(jué)、認(rèn)知及記憶等方面的特點(diǎn),因此應(yīng)該在這一方面去收集信息。.5.3.2界面設(shè)計(jì)步驟界面設(shè)計(jì)過(guò)程的步驟可以簡(jiǎn)述如下。(1)建立任務(wù)的目標(biāo)和意圖。(2)為每個(gè)目標(biāo)和意圖制定特定的動(dòng)作序列。(3)按照在界面上執(zhí)行的方式對(duì)動(dòng)作序列進(jìn)行規(guī)約。(4)指明系統(tǒng)狀態(tài),即執(zhí)行動(dòng)作時(shí)的界面表現(xiàn)。(5)定義控制機(jī)制,即用戶(hù)可用的用于改變系統(tǒng)狀態(tài)的設(shè)備和動(dòng)作。(6)指明控制機(jī)制如何影響系統(tǒng)狀態(tài)。(7)指明用戶(hù)如何通過(guò)界面上的信息解釋系統(tǒng)狀態(tài)。.5.3.3界面設(shè)計(jì)指南1.交互界面的設(shè)計(jì)指南(1)各種交互形式應(yīng)使用一致的格式。(2)提供有意義的反饋信息。(3)在執(zhí)行有較大破壞性的動(dòng)作前要求確認(rèn)。(4)允許取消大多數(shù)操作,即支持undo和redo功能。(5)減少在動(dòng)作間必須記憶的信息數(shù)量。(6)提高交互的效率。(7)允許錯(cuò)誤。(8)按功能對(duì)動(dòng)作分類(lèi)并設(shè)置屏幕布局。(9)提供語(yǔ)境相關(guān)的幫助機(jī)制。(10)用簡(jiǎn)單的動(dòng)詞或動(dòng)詞短語(yǔ)命名命令。.5.3.3界面設(shè)計(jì)指南2.信息顯示的設(shè)計(jì)指南(1)可以采用多種不同的方式顯示界面信息,如文字、圖形、聲音、顏色、分辨率、大小和位置等。(2)只顯示與當(dāng)前語(yǔ)境有關(guān)的信息。(3)不要用信息將用戶(hù)包圍。(4)使用一致的標(biāo)記、標(biāo)準(zhǔn)的縮寫(xiě)和可預(yù)測(cè)的顏色。(5)允許用戶(hù)維持可視化的語(yǔ)境。(6)產(chǎn)生有意義的出錯(cuò)信息。(7)使用格式化的文本幫助理解。(8)使用窗口分隔不同類(lèi)型的信息。(9)優(yōu)先采用“模擬”的方式顯示信息。(10)有高效的顯示空間。.5.3.3界面設(shè)計(jì)指南3.?dāng)?shù)據(jù)輸入的設(shè)計(jì)指南(1)減少用戶(hù)輸入動(dòng)作數(shù)量。(2)消除冗余輸入。(3)維護(hù)數(shù)據(jù)輸入和信息顯示的一致性。(4)交互應(yīng)該是靈活的。(5)在當(dāng)前動(dòng)作的語(yǔ)境中使不適合的命令不起作用。(6)讓用戶(hù)控制交互流。(7)允許用戶(hù)自定義輸入。(8)為所有的輸入動(dòng)作提供幫助。.5.3.3界面設(shè)計(jì)指南【案例5.4】CAD系統(tǒng)中繪制圓弧的操作命令序列設(shè)計(jì)圓弧繪制的基本參數(shù)包括圓心(Center)、半徑(Radius)、圓心角(Angle)、弦長(zhǎng)(chordoflength)、切線(xiàn)方向(direction)、起點(diǎn)(start)和終點(diǎn)(end),根據(jù)參數(shù)的不同和次序,繪制圓弧可以有如下10種方法。(1)3點(diǎn)繪制圓弧。(2)起點(diǎn)—圓心—終點(diǎn)。(3)起點(diǎn)—圓心—圓心角。(4)起點(diǎn)—圓心—弦長(zhǎng)。(5)起點(diǎn)—終點(diǎn)—圓心角。(6)起點(diǎn)—終點(diǎn)—切線(xiàn)方向。(7)起點(diǎn)—終點(diǎn)—半徑。(8)圓心—起點(diǎn)—終點(diǎn)。(9)圓心—起點(diǎn)—圓心角。(10)圓心—起點(diǎn)—弦長(zhǎng)。.5.3.3界面設(shè)計(jì)指南因此設(shè)計(jì)繪制圓弧的操作命令序列如下:Command:ARC或通過(guò)菜單或工具選擇繪制圓弧命令。提示:指定圓弧起點(diǎn),或[圓心]:(給定起點(diǎn))。提示:指定圓弧第2點(diǎn),或[圓心/圓弧終點(diǎn)]:(給定第2點(diǎn))。提示:指定圓弧的終點(diǎn):(給定第3點(diǎn))。上述是通過(guò)3點(diǎn)繪制圓弧,若要通過(guò)起點(diǎn)和圓心繪制圓弧,則命令序列如下。Command:ARC或通過(guò)菜單或工具選擇繪制圓弧命令。提示:指定圓弧起點(diǎn),或[圓心]:(指定起點(diǎn))。提示:指定圓弧第2點(diǎn),或[圓心/圓弧終點(diǎn)]:(指定圓心)提示:指定圓弧的圓心點(diǎn):(指定圓心點(diǎn))。提示:指定終點(diǎn),或[圓心角/弦長(zhǎng)]:(指定弦長(zhǎng))。提示:指定圓弧的弦長(zhǎng):(給定弦長(zhǎng))。.5.3.3界面設(shè)計(jì)指南若要以圓心開(kāi)始繪制圓弧,則用下列的操作命令序列。Command:ARC或通過(guò)菜單或工具選擇繪制圓弧命令。提示:指定圓弧起點(diǎn),或[圓心]:(指定圓心)。提示:指定圓弧的圓心點(diǎn):(給定圓心點(diǎn))。提示:指定圓弧的起點(diǎn):(給定第3點(diǎn))。提示:指定圓弧的終點(diǎn),或[圓心角/弦長(zhǎng)]:(指定圓心角)。提示:指定圓心角:(給定圓心角)。.5.4數(shù)據(jù)庫(kù)設(shè)計(jì)1.需求分析2.概念設(shè)計(jì)(1)數(shù)據(jù)庫(kù)設(shè)計(jì)各階段的任務(wù)相對(duì)單一化,設(shè)計(jì)復(fù)雜程度得到降低,便于組織管理。(2)概念模式不受特定DBMS的限制,也獨(dú)立于存儲(chǔ)安排,所以比通過(guò)邏輯設(shè)計(jì)得到的模式更為穩(wěn)定。(3)概念模式不包含具體的DBMS所附加的技術(shù)細(xì)節(jié),更容易為用戶(hù)所理解,所以能準(zhǔn)確地反映用戶(hù)的信息需求。3.邏輯設(shè)計(jì).5.4數(shù)據(jù)庫(kù)設(shè)計(jì)4.物理設(shè)計(jì)物理設(shè)計(jì)可分如下5步完成,前3步涉及物理結(jié)構(gòu)設(shè)計(jì);后兩步涉及約束和具體的程序設(shè)計(jì)。(1)存儲(chǔ)記錄結(jié)構(gòu)設(shè)計(jì)(2)確定數(shù)據(jù)存放位置(3)存取方法的設(shè)計(jì)(4)完整性和安全性考慮(5)程序設(shè)計(jì).5.4數(shù)據(jù)庫(kù)設(shè)計(jì)5.實(shí)施階段(1)建立實(shí)際數(shù)據(jù)庫(kù)結(jié)構(gòu)。(2)裝入試驗(yàn)數(shù)據(jù)對(duì)應(yīng)用程序進(jìn)行調(diào)試,試驗(yàn)數(shù)據(jù)可以是實(shí)際數(shù)據(jù),也可由手工,或隨機(jī)數(shù)發(fā)生器生成。(3)裝入實(shí)際數(shù)據(jù),進(jìn)入試運(yùn)行狀態(tài)。6.?dāng)?shù)據(jù)庫(kù)運(yùn)行與維護(hù)(1)維護(hù)數(shù)據(jù)庫(kù)的安全性與完整性(2)監(jiān)測(cè)并改善數(shù)據(jù)庫(kù)運(yùn)行性能(3)根據(jù)用戶(hù)要求對(duì)數(shù)據(jù)庫(kù)現(xiàn)有功能進(jìn)行擴(kuò)充。(4)及時(shí)改正運(yùn)行中發(fā)現(xiàn)的系統(tǒng)錯(cuò)誤。.5.5面向?qū)ο缶O(shè)計(jì)5.5.1設(shè)計(jì)模型精化1.泛化關(guān)系泛化是在多個(gè)概念中識(shí)別共性,以及定義超類(lèi)(普遍概念)與子類(lèi)(具體概念)關(guān)系的活動(dòng),此活動(dòng)對(duì)概念類(lèi)進(jìn)行層次分類(lèi)。例如,在POS機(jī)系統(tǒng)中的CashPayment,CreditPayment和ChequePayment的概念很相似,這時(shí)就可以將它們組織成泛化-特化層次結(jié)構(gòu),如圖5-12所示。.5.5.1設(shè)計(jì)模型精化通過(guò)以上原則對(duì)POS機(jī)系統(tǒng)的Payment類(lèi)進(jìn)行劃分,結(jié)果如圖5-13所示。.5.5.1設(shè)計(jì)模型精化2.關(guān)聯(lián)類(lèi)可以使用一個(gè)關(guān)聯(lián)類(lèi)ServiceContract用于擁有屬性merchantID,如圖5-14所示。Store和AuthorizationService類(lèi)都與ServiceContract相關(guān)聯(lián),這就表示ServiceContract類(lèi)依賴(lài)于兩者之間的關(guān)系,可以將merchantID看做是與Store類(lèi)和AuthorizationService類(lèi)之間的關(guān)聯(lián)所相關(guān)的屬性。
.5.5.1設(shè)計(jì)模型精化3.聚合關(guān)系和組合關(guān)系在POS機(jī)系統(tǒng)中,SalesLineItems可以被視為Sale的組成部分;同樣ProductCatalog是ProductDescriptions的一個(gè)組成,如圖5-15所示。.5.5.1設(shè)計(jì)模型精化4.時(shí)間間隔例如,POS機(jī)系統(tǒng)在初始設(shè)計(jì)時(shí),SalesLineItems與ProductDescriptions關(guān)聯(lián),記錄了銷(xiāo)售項(xiàng)的價(jià)格。在精化過(guò)程中,需要關(guān)注與信息和合同等相關(guān)的時(shí)間間隔問(wèn)題。可以采用兩種方法解決此問(wèn)題,一是可以在ProductDescriptions中保存當(dāng)前價(jià)格,僅將銷(xiāo)售發(fā)生時(shí)的價(jià)格寫(xiě)入SalesLineItem;二是將一組ProductPrices與ProductDescriptions關(guān)聯(lián),每個(gè)ProductPrices關(guān)聯(lián)適用的時(shí)間間隔。這樣就可以記錄所有的歷史價(jià)格和未來(lái)計(jì)劃的價(jià)格,如圖5-16所示。.5.5.1設(shè)計(jì)模型精化5.使用包例如,在POS機(jī)系統(tǒng)領(lǐng)域模型中包的結(jié)構(gòu)如圖5-18所示。.5.5.1設(shè)計(jì)模型精化Products包如圖5-18所示。.5.5.2邏輯架構(gòu)精化1.層次模型依賴(lài)線(xiàn)可以由一個(gè)包發(fā)出,如在POS機(jī)系統(tǒng)中從Sale包指向POSRuleEngineFacade類(lèi),從Domain包指向Log4J包,如圖5-19所示。.5.5.2邏輯架構(gòu)精化2.層次模型中的設(shè)計(jì)模式架構(gòu)性的層次模型用于指導(dǎo)定義大尺度的分塊,諸如外觀(guān)、控制器和觀(guān)察者這樣的微觀(guān)架構(gòu)設(shè)計(jì)模式,則用于設(shè)計(jì)層和包之間的連接。某些包和層不僅是感觀(guān)上的一組事物,事實(shí)上它們是具有行為和接口的子系統(tǒng)。Pricing包不是一個(gè)子系統(tǒng),它僅把定價(jià)時(shí)用到的工廠(chǎng)和策略組織在一起。然而Persistence、POSRuleEngineFacade和Jess包是子系統(tǒng),它們具有內(nèi)聚職責(zé)的獨(dú)立引擎。子系統(tǒng)可以用構(gòu)造型標(biāo)志,如圖5-20所示。.5.5.2邏輯架構(gòu)精化(1)外觀(guān)和控制器。例如,在POS機(jī)系統(tǒng)中既可以通過(guò)外觀(guān)模式,又可以用控制器模式實(shí)現(xiàn)ProcessSaleFrame對(duì)象和領(lǐng)域?qū)訉?duì)象的交互,如圖5-21所示。.5.5.2邏輯架構(gòu)精化(2)模型-視圖分離和“向上”通信。例如,在POS機(jī)系統(tǒng)中如圖5-22所示,在UI層中增加了UIFacade。從而為GUI對(duì)象增加了一層間接性的普通對(duì)象,用于在GUI變化時(shí)提供防止變異,并且當(dāng)需要從下面向上推的通信模型時(shí)也使用UIFacade。.5.5.3包設(shè)計(jì)1.將不相關(guān)的類(lèi)型分離出去例如,假定在包c(diǎn)om.foo.service.persistence中定義了持久服務(wù)子系統(tǒng),在此包中有兩個(gè)非常通用的工具JDBCUtilties和SQLCommand。如果它們是與JDBC一起工作的通用工具,則可以在任何使用JDBC的場(chǎng)景且獨(dú)立于持久性服務(wù)子系統(tǒng)使用這些類(lèi)。因此最好的設(shè)計(jì)是將這些類(lèi)型放入單獨(dú)的包中,如圖5-23所示。
.5.5.3包設(shè)計(jì)2.使用工廠(chǎng)模式減少對(duì)具體包的依賴(lài)減少對(duì)其他包中具體類(lèi)的依賴(lài)是提高包的穩(wěn)定性的一個(gè)途徑。例如,在POS機(jī)系統(tǒng)中Sales、Payment和Persistence包之間的依賴(lài),如圖5-24所示。.5.5.3包設(shè)計(jì)為提高Sales和Persistence包的長(zhǎng)期穩(wěn)定性,不能顯式地創(chuàng)建定義于其他包中的具體類(lèi),如圖5-25中Payments包中的CreditPayment類(lèi)。例如,可以使用工廠(chǎng)對(duì)象創(chuàng)建實(shí)例用于減少對(duì)具體包的依賴(lài)程度。.5.5.4精化交互圖以POS機(jī)系統(tǒng)中的處理銷(xiāo)售用例為例設(shè)計(jì)makeNewSale操作,如圖5-26所示。.5.5.4精化交互圖本例包括貨號(hào)id和數(shù)量qty,所以這次操作為enterItem(id,qty),如圖5-27所示。.5.5.4精化交互圖商品輸入完成后就可以進(jìn)行結(jié)束商品輸入操作,本例用到系統(tǒng)操作endSale(),如圖5-28所示。結(jié)束銷(xiāo)售后就要執(zhí)行獲取總額的操作,由控制器發(fā)出getTotal()操作并要求返回總額tot。方法的具體實(shí)現(xiàn)如圖5-29中的注釋所示。.5.5.4精化交互圖總額計(jì)算得出后就可以進(jìn)行makePayment()操作,如圖5-30所示。.5.5.4精化交互圖最后是計(jì)算找零的系統(tǒng)操作,將Sale對(duì)象與Payment對(duì)象相結(jié)合,如圖5-31所示。.5.5.5精化類(lèi)圖1.可見(jiàn)性設(shè)計(jì)例如,在POS機(jī)系統(tǒng)中控制器類(lèi)Register中有ProductCalatog類(lèi)的對(duì)象,如下所示: classRegister{ …… privateProductCalatogcatalog; publicvoidenterItem(itemID,qty){ …… desc=catalog.getProductDesc(itemID); …… } …… }.5.5.5精化類(lèi)圖參數(shù)可見(jiàn)性是指一個(gè)對(duì)象是另一個(gè)對(duì)象中方法的參數(shù)。例如,在Sale類(lèi)中makeLineItem方法的參數(shù)中有ProductDescription對(duì)象作為參數(shù),如下所示: classSale{ …… publicvoidmakeLineItem(ProductDescriptiondesc,intqty){ …… sl=newSalesLineItem(desc,qty); …… } …… }.5.5.5精化類(lèi)圖局部可見(jiàn)性是指在一個(gè)類(lèi)對(duì)象的方法中有另一個(gè)類(lèi)的對(duì)象作為其方法的局部變量。例如,在控制器類(lèi)Register中的enterItem方法中有ProductDescription的對(duì)象作為其局部變量,如下所示: classRegister{ …… publicvoidenterItem(itemID,qty){ …… ProductDescriptiondesc; desc=catalog.getProductDesc(itemID); …… } …… }.5.5.5精化類(lèi)圖2.類(lèi)圖的細(xì)化類(lèi)圖的設(shè)計(jì)是以交互圖的設(shè)計(jì)為基礎(chǔ)的,其中的元素也是從交互圖中抽象提取出來(lái)的。通過(guò)交互圖中對(duì)象之間的交互,找出對(duì)象所屬的類(lèi)及類(lèi)之間的關(guān)系。例如,交互圖的分析得到如圖5-32所示的類(lèi)圖。.5.5.5精化類(lèi)圖通過(guò)對(duì)交互圖中對(duì)象之間消息的交互進(jìn)行分析和細(xì)化,可以得到類(lèi)圖中的屬性和方法。例如,圖5-33中隨著通過(guò)各個(gè)對(duì)象之間具體消息的交互實(shí)現(xiàn)enterItem的系統(tǒng)操作,可以細(xì)化Register類(lèi)和Sale類(lèi)中的方法。.5.5.5精化類(lèi)圖當(dāng)然,對(duì)類(lèi)圖進(jìn)行分析的時(shí)候,也必須理解類(lèi)圖和類(lèi)之間的關(guān)系是如何通過(guò)映射得到具體的實(shí)現(xiàn)類(lèi)的,這樣更加有利于類(lèi)圖的正確細(xì)化。Register映射的代碼為:publicclassRegister{ privateProductCatalogcatalog; privateSalecurrentSale; publicRegister(ProductCatalogpc){…} publicvoidendSale(){…} publicvoidenterItem(ItemIDid,intqty){…} publicvoidmakeNewSale(){…} publicvoidmakePayment(MoneycashTendered){…} }.5.5.5精化類(lèi)圖【案例5.5】ATM系統(tǒng)精化設(shè)計(jì)下面對(duì)ATM系統(tǒng)的類(lèi)進(jìn)一步精化,將ATM系統(tǒng)分為3個(gè)邏輯部分,即ATMClient、ATMServer和AccountService。定義了兩個(gè)接口ITransactionManager和IAccount,用于支持這3個(gè)部分相互分離和依賴(lài)關(guān)系,如圖5-34所示。.5.5.5精化類(lèi)圖進(jìn)一步細(xì)化3個(gè)邏輯部分的類(lèi)圖,構(gòu)建它們的方法,當(dāng)然也可以通過(guò)順序圖分析得到。ATMClient部分精化的類(lèi)圖如圖5-35所示。.5.5.5精化類(lèi)圖ATMServer部分精化的類(lèi)圖如圖5-36所示。.5.5.5精化類(lèi)圖AccountService部分精化的類(lèi)圖如圖5-37所示。.5.5.5精化類(lèi)圖進(jìn)一步利用精化的類(lèi)建立取款順序圖,分析實(shí)現(xiàn)中還需要補(bǔ)充哪些類(lèi),以及每個(gè)類(lèi)需要提供什么樣的職責(zé),即方法。ATMClient部分精化后的取款順
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年及未來(lái)5年市場(chǎng)數(shù)據(jù)中國(guó)武漢市寫(xiě)字樓行業(yè)市場(chǎng)競(jìng)爭(zhēng)格局及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025年高職(財(cái)務(wù)分析實(shí)務(wù))案例解讀測(cè)試試題及答案
- 2025年大學(xué)大一(人力資源規(guī)劃)人力配置期中測(cè)試試題及答案
- 2025年高職經(jīng)濟(jì)林培育與利用(果樹(shù)栽培技術(shù))試題及答案
- 2025年高職(機(jī)電一體化技術(shù))機(jī)電設(shè)備綜合技能測(cè)試試題及答案
- 2025年大學(xué)土壤肥料(施用技術(shù))試題及答案
- 2025年高職軟件技術(shù)(軟件技術(shù))試題及答案
- 2025年高職藥物使用(急救護(hù)理)試題及答案
- 2025年高職礦山機(jī)電技術(shù)(礦山設(shè)備運(yùn)維)試題及答案
- 2026年質(zhì)量管理教學(xué)(質(zhì)量管理方法)試題及答案
- 2026貴州省省、市兩級(jí)機(jī)關(guān)遴選公務(wù)員357人考試備考題庫(kù)及答案解析
- 兒童心律失常診療指南(2025年版)
- 北京通州產(chǎn)業(yè)服務(wù)有限公司招聘?jìng)淇碱}庫(kù)必考題
- 2026南水北調(diào)東線(xiàn)山東干線(xiàn)有限責(zé)任公司人才招聘8人筆試模擬試題及答案解析
- 伊利實(shí)業(yè)集團(tuán)招聘筆試題庫(kù)2026
- 2026年基金從業(yè)資格證考試題庫(kù)500道含答案(完整版)
- 動(dòng)量守恒定律(教學(xué)設(shè)計(jì))-2025-2026學(xué)年高二物理上冊(cè)人教版選擇性必修第一冊(cè)
- 網(wǎng)絡(luò)素養(yǎng)與自律主題班會(huì)
- 波形護(hù)欄工程施工組織設(shè)計(jì)方案
- 非靜脈曲張性上消化道出血管理指南解讀課件
- GB/T 10922-202555°非密封管螺紋量規(guī)
評(píng)論
0/150
提交評(píng)論