版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章詳細(xì)設(shè)計(jì)6.1詳細(xì)設(shè)計(jì)的目標(biāo)與任務(wù)
概要設(shè)計(jì)確定了軟件系統(tǒng)的總體結(jié)構(gòu),詳細(xì)設(shè)計(jì)則對(duì)概要設(shè)計(jì)結(jié)果進(jìn)一步細(xì)化,給出目標(biāo)系統(tǒng)的精確描述,以便在編碼階段直接翻譯成計(jì)算機(jī)上能夠運(yùn)行的程序代碼。
在詳細(xì)設(shè)計(jì)階段,結(jié)構(gòu)化設(shè)計(jì)和面向?qū)ο笤O(shè)計(jì)沒(méi)有本質(zhì)區(qū)別,都是確定算法和數(shù)據(jù)結(jié)構(gòu)。
詳細(xì)設(shè)計(jì)的結(jié)果“軟件詳細(xì)規(guī)格”(相當(dāng)于工程施工圖紙),與編程思想、方法和風(fēng)格等密切相關(guān)。6.1.1詳細(xì)設(shè)計(jì)的目標(biāo)
詳細(xì)設(shè)計(jì)階段具體地設(shè)計(jì)所要求的系統(tǒng),得出新系統(tǒng)的軟件詳細(xì)規(guī)格。同時(shí),要求設(shè)計(jì)出的規(guī)格簡(jiǎn)明易懂,便于下一階段用某種程序設(shè)計(jì)語(yǔ)言在計(jì)算機(jī)上實(shí)現(xiàn)。
如何高質(zhì)量地完成詳細(xì)設(shè)計(jì)是提高軟件質(zhì)量的關(guān)鍵。6.1.2詳細(xì)設(shè)計(jì)的任務(wù)
算法過(guò)程的設(shè)計(jì);數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì);數(shù)據(jù)庫(kù)物理設(shè)計(jì);信息編碼設(shè)計(jì);測(cè)試用例的設(shè)計(jì);編寫(xiě)“詳細(xì)設(shè)計(jì)說(shuō)明書(shū)”。6.2詳細(xì)設(shè)計(jì)圖形描述工具
詳細(xì)設(shè)計(jì)中用于過(guò)程設(shè)計(jì)的圖形工具,包括程序流程圖、盒圖、問(wèn)題分析圖和協(xié)作圖。實(shí)際上,除此之外的其它工具,如IPO圖、判定表/判定樹(shù)以及偽代碼語(yǔ)言等均可用于對(duì)過(guò)程設(shè)計(jì)的描述。每種工具都有它自己的優(yōu)缺點(diǎn),在設(shè)計(jì)時(shí)可以針對(duì)不同的情況選用,甚至可以同時(shí)采用多種工具來(lái)描述詳細(xì)設(shè)計(jì)的結(jié)果。
6.2.1程序流程圖
開(kāi)始統(tǒng)計(jì)時(shí)間輸入統(tǒng)計(jì)收發(fā)文情況顯示結(jié)果打印否?打印輸出返回上層菜單結(jié)束FT優(yōu)缺點(diǎn)主要優(yōu)點(diǎn):直觀、靈活、易使用,便于初學(xué)者掌握。缺點(diǎn):程序流程圖本質(zhì)上并不是逐步求精的好工具,它誘使程序設(shè)計(jì)人員過(guò)早考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu);另一方面,用箭頭表示控制流方向,可以實(shí)現(xiàn)控制流的任意轉(zhuǎn)移,如果使用得當(dāng)則簡(jiǎn)單易懂且靈活,否則非結(jié)構(gòu)化的程序流程圖可能非常難理解,無(wú)法進(jìn)行修改和維護(hù)。同時(shí),程序流程圖也不便于表示數(shù)據(jù)結(jié)構(gòu)。
6.2.2盒圖
數(shù)組A的第一個(gè)元素A(1)MAXFORi=2TONTMAX<A(i)F
MAX=A(i)優(yōu)缺點(diǎn)主要優(yōu)點(diǎn):它強(qiáng)制設(shè)計(jì)人員使用結(jié)構(gòu)化技術(shù),從而可以保證設(shè)計(jì)的質(zhì)量。同時(shí),從盒圖上可以直觀地看出某一特定控制結(jié)構(gòu)的作用范圍,為理解設(shè)計(jì)意圖、編程實(shí)現(xiàn)、選擇測(cè)試用例等帶來(lái)了方便。在使用時(shí)還可附上一個(gè)描述數(shù)據(jù)結(jié)構(gòu)的盒子,使得盒圖更加適用于詳細(xì)設(shè)計(jì)。缺點(diǎn):盒圖的修改比較麻煩,且結(jié)構(gòu)嵌套層次較多時(shí)不太容易繪制,以致盒圖的使用至今仍不流行。
6.2.3問(wèn)題分析圖
def冒泡排序輸入n個(gè)數(shù)至數(shù)組Ai=1whilei<=n-1進(jìn)行第i趟排序輸出數(shù)組A中的n個(gè)數(shù)max=A(i),且j=i+1A(i)=max,且i=i+1進(jìn)行第i趟排序whilej<=n交換A(j)與max的值j=j+1TFdef特點(diǎn)問(wèn)題分析圖強(qiáng)制設(shè)計(jì)人員采用結(jié)構(gòu)化技術(shù)。采用樹(shù)形結(jié)構(gòu),既克服了程序流程圖不能清晰表現(xiàn)程序?qū)哟谓Y(jié)構(gòu)的缺點(diǎn),又不同于盒圖將處理約束在一個(gè)盒子里而使修改麻煩,并且這種結(jié)構(gòu)為軟件的自動(dòng)生成提供了有力的幫助(樹(shù)遍歷)。
6.2.4協(xié)作圖
publicvoidenterItem(int
upc,intqty){if(isNewSale()){sale=newSale;}ProductSpecificationspec=productCatalog.specification(upc);sale.makeLineItem(spec,qty);}:POST1[isNewSale()]sale:=newSale():Sale3makeLineItem(spec,qty)sale:SaleenterItem(upc,qty)productCatalog:ProductCatalog2:spec:=specification(upc)特點(diǎn)協(xié)作圖和順序圖都可用來(lái)表示對(duì)象之間的交互關(guān)系,兩種形式之間可以相互轉(zhuǎn)換。順序圖突出執(zhí)行的時(shí)序,能更方便地看出事情發(fā)生的次序。而協(xié)作圖的布局方法能更清楚地表示出對(duì)象之間的靜態(tài)的連接關(guān)系。與順序圖相比,協(xié)作圖的繪圖空間也要節(jié)省一些。
6.3Jackson程序設(shè)計(jì)方法
Jackson結(jié)構(gòu)程序設(shè)計(jì)方法(JacksonStructuredProgramming,JSP)是英國(guó)人M.A.Jackson首先提出來(lái)的,是一種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化程序設(shè)計(jì)方法。該方法通過(guò)分析問(wèn)題的輸入、輸出數(shù)據(jù)結(jié)構(gòu)(用Jackson圖表示)的對(duì)應(yīng)關(guān)系,按一定的映射規(guī)則將其映射成軟件的過(guò)程描述,用Jackson偽代碼表示。
6.3.1Jackson圖
ABCDABoCoDoAB*順序選擇循環(huán)S(j)I(j)6.3.2Jackson偽代碼
AseqBCDend
AA
selectconditionS(j)B
or
condition1C
or
condition2D
endAAiter
until(orwhile)conditionI(j)B
end
A順序選擇循環(huán)6.3.3Jackson程序設(shè)計(jì)方法的步驟
分析并確定問(wèn)題的輸入和輸出數(shù)據(jù)結(jié)構(gòu),并用Jackson圖表示。
找出輸入和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。
將數(shù)據(jù)結(jié)構(gòu)映射為程序結(jié)構(gòu)。列出完成程序結(jié)構(gòu)圖中各處理框功能的全部操作,以及有關(guān)條件,并將它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。
用Jackson偽代碼寫(xiě)出與程序結(jié)構(gòu)圖相對(duì)應(yīng)的過(guò)程性表示。
例子編號(hào)名稱數(shù)量操作類型0130內(nèi)角線50入0131九夾板20出0130內(nèi)角線40出×××裝修公司構(gòu)件周報(bào)表編號(hào)變化量0130+100131-20......
某裝修公司的倉(cāng)庫(kù)存放有多種裝修構(gòu)件,每種構(gòu)件的每次進(jìn)貨、出貨都有相應(yīng)的記錄(包括構(gòu)件編號(hào)、名稱、數(shù)量、入/出庫(kù)操作類型)存于構(gòu)件記錄表中。裝修公司每周根據(jù)構(gòu)件記錄表打印一張周報(bào)表,報(bào)表的每行列出某種構(gòu)件本周變化的數(shù)量,以便根據(jù)報(bào)表及時(shí)訂貨,有關(guān)表格如:分析并確定輸入輸出數(shù)據(jù)結(jié)構(gòu)構(gòu)件記錄表構(gòu)件記錄*編號(hào)操作類型出庫(kù)o入庫(kù)o數(shù)量I(1)S(2)裝修構(gòu)件周報(bào)表表頭表體行*編號(hào)變化量I(3)I(1)表示“while構(gòu)件記錄表未空”;S(2)表示“是出庫(kù)還是入庫(kù)”;I(3)表示“while所有構(gòu)件類型”。
找出輸入輸出數(shù)據(jù)結(jié)構(gòu)中的對(duì)應(yīng)單元
所謂有對(duì)應(yīng)關(guān)系是指有直接的因果關(guān)系,在程序中可以或需要同時(shí)處理的單元。對(duì)于重復(fù)出現(xiàn)的數(shù)據(jù)單元必須是重復(fù)的次序和次數(shù)在輸入與輸出數(shù)據(jù)結(jié)構(gòu)中都相同才可能有對(duì)應(yīng)關(guān)系。
操作類型出庫(kù)o入庫(kù)o構(gòu)件記錄表構(gòu)件記錄*編號(hào)數(shù)量構(gòu)件組記錄*裝修構(gòu)件周報(bào)表表頭表體行*編號(hào)變化量I(1)I(2)I(1)S(3)I(1)表示“while所有構(gòu)件類型”;I(2)表示“while某一構(gòu)件類型(組)的所有構(gòu)件”;S(3)表示“是出庫(kù)還是入庫(kù)”。
利用映射規(guī)則導(dǎo)出程序結(jié)構(gòu)
對(duì)每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按其在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖相應(yīng)層次畫(huà)一個(gè)處理框。如果這對(duì)數(shù)據(jù)單元在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中處于不同的層次,則與它們對(duì)應(yīng)的處理框在程序結(jié)構(gòu)圖中的層次同它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中層次低的對(duì)應(yīng)(高層在上,低層在下)。對(duì)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的數(shù)據(jù)單元,根據(jù)其所在的層次在程序結(jié)構(gòu)圖相應(yīng)層次分別畫(huà)上處理框。對(duì)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的數(shù)據(jù)單元,根據(jù)其所在的層次在程序結(jié)構(gòu)圖相應(yīng)層次分別畫(huà)上處理框。
列出并分配操作與條件
(1)輸入構(gòu)件記錄庫(kù)文件名
(2)打開(kāi)構(gòu)件記錄庫(kù)文件名(3)對(duì)構(gòu)件記錄庫(kù)文件按編號(hào)索引(4)創(chuàng)建報(bào)表文件(5)生成表頭字符串至報(bào)表文件
(6)送換行符至報(bào)表文件(7)變化量change=0(8)ID置為當(dāng)前構(gòu)件記錄的編號(hào)(9)讀構(gòu)件記錄庫(kù)文件的編號(hào)至ID(10)讀構(gòu)件記錄庫(kù)文件的數(shù)量至data(11)change=change-data(12)change=change+data(13)指向構(gòu)件記錄庫(kù)文件的下一條記錄
(14)生成編號(hào)ID字符串至報(bào)表文件
(15)生成變化量change串至報(bào)表文件(16)關(guān)閉構(gòu)件記錄庫(kù)文件(17)關(guān)閉報(bào)表文件
I(1):構(gòu)件記錄庫(kù)文件未到文件尾
I(2):當(dāng)前構(gòu)件記錄的編號(hào)不等于IDS(3):當(dāng)前構(gòu)件記錄的操作類型是出庫(kù)
用Jackson偽代碼表示程序處理過(guò)程生成裝修構(gòu)件周報(bào)表
seq輸入構(gòu)件記錄庫(kù)文件名打開(kāi)構(gòu)件記錄庫(kù)文件對(duì)構(gòu)件記錄庫(kù)文件按編號(hào)索引創(chuàng)建報(bào)表文件生成表頭seq生成表頭字符串至報(bào)表文件end
生成表頭生成表體iter
while
構(gòu)件記錄庫(kù)文件未到文件尾由構(gòu)件組記錄生成表行seq
送換行符至報(bào)表文件
………6.4Warnier程序設(shè)計(jì)方法
Warnier程序設(shè)計(jì)方法由法國(guó)人J.D.Warnier提出的一種LCP(LogicalConstructionofPrograms,邏輯構(gòu)造程序)程序設(shè)計(jì)方法。在Warnier程序設(shè)計(jì)方法中,首先要分析輸入和輸出數(shù)據(jù)結(jié)構(gòu),用Warnier圖表示;然后,從數(shù)據(jù)結(jié)構(gòu)(主要是根據(jù)輸入數(shù)據(jù)結(jié)構(gòu),輸出數(shù)據(jù)結(jié)構(gòu)可用來(lái)完善輸入數(shù)據(jù)結(jié)構(gòu))導(dǎo)出程序結(jié)構(gòu),同樣用Warnier圖表示;再將程序結(jié)構(gòu)改用程序流程圖來(lái)表示;最后,根據(jù)程序流程圖寫(xiě)出程序的詳細(xì)過(guò)程性描述。
6.4.1Wariner圖
6.4.2Warnier程序設(shè)計(jì)步驟
分析和確定問(wèn)題的輸入和輸出數(shù)據(jù)結(jié)構(gòu),并用Warnier圖來(lái)表示;從數(shù)據(jù)結(jié)構(gòu)(特別是輸入數(shù)據(jù)結(jié)構(gòu))導(dǎo)出程序的處理結(jié)構(gòu),用Warnier圖表示;將程序結(jié)構(gòu)改用程序流程圖表示;根據(jù)上一步得出的程序流程圖,寫(xiě)出程序的詳細(xì)過(guò)程性描述:
例子-----報(bào)表生成系統(tǒng)
分析并確定問(wèn)題的輸入和輸出數(shù)據(jù)結(jié)構(gòu)
導(dǎo)出程序處理的層次結(jié)構(gòu)
畫(huà)出和程序處理的層次結(jié)構(gòu)相對(duì)應(yīng)的程序流程圖
根據(jù)程序流程圖寫(xiě)出程序的詳細(xì)過(guò)程性描述
①自上而下給流程圖每個(gè)處理框統(tǒng)一編號(hào);②列出每個(gè)處理框所需要的指令,冠以處理框的序號(hào),并對(duì)指令分成如下幾類:
A、輸入和輸入準(zhǔn)備指令;
B、分支和分支準(zhǔn)備指令;
C、計(jì)算指令;
D、子程序調(diào)用指令;
E、輸出和輸出準(zhǔn)備指令。
③將上述“分類指令表”中的指令全部按處理框序號(hào)重新排序,序號(hào)相同則基本按“輸入/處理/輸出”的順序排列,從而得到了程序的詳細(xì)過(guò)程性描述。
6.5面向?qū)ο蟪绦虻脑敿?xì)設(shè)計(jì)
面向?qū)ο笤O(shè)計(jì)在詳細(xì)設(shè)計(jì)階段主要完成對(duì)象的屬性和方法的設(shè)計(jì),稱之為面向?qū)ο蟪绦虻脑敿?xì)設(shè)計(jì)。
面向?qū)ο蟪绦虻脑敿?xì)設(shè)計(jì)與結(jié)構(gòu)化程序的詳細(xì)設(shè)計(jì)相似,但也有特殊之處,在設(shè)計(jì)時(shí)要認(rèn)真考慮才能體現(xiàn)面向?qū)ο蟮膬?yōu)越性。6.5.1面向?qū)ο蟪绦虻奶匦?/p>
封裝性:類的封裝性使得數(shù)據(jù)和操縱數(shù)據(jù)的算法(函數(shù)或過(guò)程)緊密地捆綁在一起,這樣就可以使得操縱數(shù)據(jù)的函數(shù)或過(guò)程的作用域和可視性限制在軟件系統(tǒng)的局部區(qū)域內(nèi)。
//定義日期字符串類型string80typedefcharString80[80];//定義日期類CDateclassCDate{//類的實(shí)現(xiàn)private:intyear,month,day;//類的接口public:CDate(intmonth,intday,intyear);CDateoperator+(intdays);voidGetDateString(String80&DateString);//…};//部分成員函數(shù)的實(shí)現(xiàn)voidCDate::GetDateString(String80&DateString){sprintf(DateString,"%d-%d-%d",month,day,year%100);}繼承性
在面向?qū)ο蟪绦蛟O(shè)計(jì)中,允許某個(gè)類繼承其它類的成員函數(shù)或數(shù)據(jù)成員。被繼承的類稱為基類、父類或超類,繼承的類稱為派生類或子類。
classCBaseClass{…
…};若要從CBaseClass派生一個(gè)新的類,其語(yǔ)法是:classCDerivedClass:存取權(quán)限標(biāo)識(shí)
CBaseClass{…
…};
多態(tài)性
多態(tài)性使得相關(guān)的類可有同名的函數(shù),這個(gè)同名的函數(shù)根據(jù)不同類產(chǎn)生不同的結(jié)果。換言之,不同類的對(duì)象可以具有相同的接口,這些相同的接口自然會(huì)呈現(xiàn)出不同的行為。通過(guò)多態(tài)性程序設(shè)計(jì),可以編寫(xiě)并編譯代碼以處理未知類型的對(duì)象。
在C++中,多態(tài)性是通過(guò)虛擬函數(shù)實(shí)現(xiàn)的。
//定義日期字符串類型string80typedefcharString80[80];
//定義日期類CDateclassCDate{protected:intyear,month,day;public:CDate(intmonth,intday,intyear);CDateoperator+(intdays);
virtualvoidGetDateString(String80&DateString);voidDisplayDateString(void);//將調(diào)用GetDateString
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省聊城市陽(yáng)谷縣陽(yáng)谷四校2024-2025學(xué)年八年級(jí)上學(xué)期1月期末考試道德與法治試卷(含答案)
- 海南省省直轄縣級(jí)行政區(qū)劃文昌市2024-2025學(xué)年八年級(jí)上學(xué)期期末物理考試(無(wú)答案)
- 09合同考試練習(xí)題1-6
- 2024船舶代理與貨運(yùn)代理合同
- 2024年風(fēng)電場(chǎng)砌體塔基工程合同3篇
- 2024食用油原料采購(gòu)及質(zhì)量把控服務(wù)合同3篇
- 福建省南平市舊縣中學(xué)高二化學(xué)模擬試卷含解析
- 福建省南平市建州高級(jí)中學(xué)2021年高三數(shù)學(xué)文下學(xué)期期末試卷含解析
- 2024租賃豬場(chǎng)合同
- 互聯(lián)網(wǎng)知識(shí)經(jīng)濟(jì)時(shí)代的重要標(biāo)志
- 道士述職報(bào)告
- 綠色貸款培訓(xùn)課件
- 2024年七年級(jí)語(yǔ)文上學(xué)期期末作文題目及范文匯編
- 云南省昆明市五華區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末英語(yǔ)試卷+
- 2023年生產(chǎn)運(yùn)營(yíng)副總經(jīng)理年度總結(jié)及下一年計(jì)劃
- 2023年中考語(yǔ)文標(biāo)點(diǎn)符號(hào)(頓號(hào))練習(xí)(含答案)
- 施工圖審查招標(biāo)文件范文
- 新課標(biāo)人教版數(shù)學(xué)三年級(jí)上冊(cè)第八單元《分?jǐn)?shù)的初步認(rèn)識(shí)》教材解讀
- 布袋式除塵器制造工序檢驗(yàn)規(guī)定
- 艾滋病、梅毒和乙肝檢測(cè)方法介紹及選擇
- 水資源稅納稅申報(bào)表附表
評(píng)論
0/150
提交評(píng)論