![自頂向下與自底向上實(shí)現(xiàn)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/9/61469830-6023-43ad-a085-b3c67106c756/61469830-6023-43ad-a085-b3c67106c7561.gif)
![自頂向下與自底向上實(shí)現(xiàn)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/9/61469830-6023-43ad-a085-b3c67106c756/61469830-6023-43ad-a085-b3c67106c7562.gif)
![自頂向下與自底向上實(shí)現(xiàn)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/9/61469830-6023-43ad-a085-b3c67106c756/61469830-6023-43ad-a085-b3c67106c7563.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、自頂向下與自底向上實(shí)現(xiàn)自頂向下與自底向上實(shí)現(xiàn)沃德軟件 2013 年 04 月 22 日 剛開(kāi)始程序設(shè)計(jì)的學(xué)生和程序員一般采用“大突擊”方法建造 軟件,其中每個(gè)模塊均獨(dú)立編碼。 一旦整個(gè)系統(tǒng)均已被編碼, 將各單個(gè)模塊包裝集成在一起,并觀察運(yùn)行情況。這種情況 帶來(lái)災(zāi)難性的失敗。在采用“大突擊”方法建造的軟件中尋找 錯(cuò)誤,如果不是不可能的,那也是極端困難的?!按笸粨簟狈?法不值得推薦,應(yīng)該避免使用。 在自頂向下實(shí)現(xiàn)中,從模 塊層次的頂層開(kāi)始,逐步往下層進(jìn)行。一旦論及面向?qū)ο笙?統(tǒng),自頂向下意味著實(shí)現(xiàn)執(zhí)行開(kāi)始的那個(gè)類(lèi)(包括 main () 或 init ()方法的類(lèi)) 。在實(shí)現(xiàn)該類(lèi)當(dāng)中,開(kāi)始于 mai
2、n ()或 init ()方法本身,一個(gè)樁程序( stub )是虛方法( dummy methok )或虛擬類(lèi)( dummy class )。所謂樁程序就是簡(jiǎn)化 模擬較低層次模塊功能的虛擬子程序。一個(gè)虛擬方法是這樣 的一種方法,其實(shí)體未編碼,尚未完全發(fā)揮作用。一個(gè)虛擬 類(lèi)包含了所有必需的構(gòu)造函數(shù),伴隨著別的必要的虛擬方法, 來(lái)測(cè)試初始類(lèi),其中方法體是不完整的。 例如,假設(shè)決定 待實(shí)現(xiàn)的圖書(shū)館管理系統(tǒng) LMS 的第一段是一個(gè)小應(yīng)用程序, 它允許鍵入圖書(shū)館已獲得的新資源對(duì)象的相關(guān)信息。為實(shí)現(xiàn) 這樣的一個(gè)簡(jiǎn)單的小應(yīng)用程序, 需要三個(gè)類(lèi),如圖 7.2 所示。NewSourceApp 類(lèi)是該小應(yīng)用程序的
3、子類(lèi);后者是 Java 的 標(biāo)準(zhǔn)部分,其主要目的是為進(jìn)入新資源信息提供一個(gè)圖形用 戶界面( GUI )。執(zhí)行開(kāi)始于該類(lèi),接著實(shí)現(xiàn)也從此處開(kāi)始。 一個(gè) Resource 對(duì)象由 NewSourceApp 創(chuàng)建, 所需信息是由 用戶進(jìn)入時(shí)通過(guò) GUI 提供的。一旦成功創(chuàng)建了 Resource 對(duì) 象,將此加入到 Library Database 對(duì)象中永久存儲(chǔ)。為了開(kāi) 始實(shí)現(xiàn) LMS 的此項(xiàng)功能,為這三個(gè)類(lèi)編碼賦予所需要的并 且熟悉的實(shí)例變量和方法。這些方法實(shí)際上仍無(wú)指令。例如 Library Database 類(lèi)的 CheckDuplicates ()方法是: 這些 方法是樁程序。 NewSou
4、rceApp 類(lèi)的細(xì)節(jié)留待下一步實(shí)現(xiàn)。 開(kāi)始于 init ()方法中 GUI 的建造,測(cè)試 GUI 以保證看起來(lái) 是想要的。 然后, 運(yùn)行 NewSourceApp 類(lèi)的其他方法。 這種 情形僅有一個(gè)其他方法 actionperformed (),正是此方 法創(chuàng)建了 Resource 對(duì)象,調(diào)用適當(dāng)?shù)姆椒ㄒ詫⒋思尤氲?Library Database ,一旦完成 NewSourceApp 類(lèi)的編碼,最 后編碼和測(cè)試 Library Database 類(lèi)。本例中,以自頂向下模 式進(jìn)行實(shí)現(xiàn)(和測(cè)試) 。 在自底向上實(shí)現(xiàn)中,建造軟件開(kāi)始 于類(lèi)繼承層次的底層,當(dāng)然不必是自頂向下順序的嚴(yán)格逆轉(zhuǎn)。 首先編
5、碼和測(cè)試的類(lèi)是那些僅分配或調(diào)用原始類(lèi)或已定義 類(lèi)的類(lèi)。先編碼的類(lèi)接近完成,只是目前仍未編寫(xiě)應(yīng)用它們 的那些類(lèi)。因此必須創(chuàng)建調(diào)用底層模塊的驅(qū)動(dòng)程序或方法以 測(cè)試他們。實(shí)現(xiàn)過(guò)程通過(guò)較高層類(lèi)的實(shí)現(xiàn)向上進(jìn)行。這里定 義較高層類(lèi)未分配或調(diào)用原始類(lèi)型、已定義類(lèi)或已測(cè)試過(guò)的 類(lèi)。這個(gè)過(guò)程不斷進(jìn)行直至實(shí)現(xiàn)和測(cè)試了所有的類(lèi)。 如果 想以自底向上的方式實(shí)現(xiàn)一個(gè)用戶添加新資源的能力,也許 會(huì)首先實(shí)現(xiàn)和測(cè)試 Resource 類(lèi)。這個(gè)類(lèi)的測(cè)試需要寫(xiě)一個(gè) 驅(qū)動(dòng)程序類(lèi),附帶創(chuàng)建 Resource 對(duì)象的方法。該驅(qū)動(dòng)程序 類(lèi)必須展示 Resource 對(duì)象,確定是否真正被創(chuàng)建。一旦拋 開(kāi)了驅(qū)動(dòng)程序類(lèi),便認(rèn)為 Resourc
6、e 類(lèi)已真正被編碼。一旦 已編碼和測(cè)試 Resource 類(lèi),便開(kāi)始實(shí)現(xiàn) Library Database 類(lèi),又一次為測(cè)試創(chuàng)建一個(gè)驅(qū)動(dòng)類(lèi)。最后,實(shí)現(xiàn)和測(cè)試 NewSourceApp 類(lèi)。 不幸的是,自底向上實(shí)現(xiàn)和測(cè)試并不 總是與自頂向下過(guò)程一樣得到良好定義。存在如下這種情形: 下一個(gè)待實(shí)現(xiàn)的類(lèi)不僅需要一個(gè)驅(qū)動(dòng)程序類(lèi),而且還需要一 個(gè)或多個(gè)樁程序。因?yàn)轭?lèi)間的相互引用,所以出現(xiàn)了這種需 求。圖 7.3 給出了這種類(lèi)間相互引用的例子,由于需要?jiǎng)?chuàng)建 樁程序而導(dǎo)致編碼類(lèi)序列的復(fù)雜化。 注意:在圖中, 類(lèi) M1、 M2 和 M3 中每一個(gè)類(lèi)均包含對(duì)其他兩個(gè)類(lèi)的引用。因此, 對(duì)第一個(gè)類(lèi)進(jìn)行編碼需要兩個(gè)樁程序類(lèi),第二個(gè)類(lèi)需要一個(gè) 樁程序類(lèi),最后一個(gè)不需要程序類(lèi)。實(shí)際次序隨意,但可能 受到各種實(shí)現(xiàn)類(lèi)難易程度的影響。 當(dāng)軟件自頂向下實(shí)現(xiàn)時(shí), 測(cè)試高層模塊需要?jiǎng)?chuàng)建代表低層模塊的樁程序。樁程序的使 用意味著測(cè)試以自頂向下方式進(jìn)行。如果軟件由自底向上實(shí) 現(xiàn),測(cè)試低層模塊需要?jiǎng)?chuàng)建代表高層模塊的驅(qū)動(dòng)程序。驅(qū)動(dòng) 程序的使用意味著測(cè)試以自底向上方式進(jìn)行。是以自頂向下 方式還是自底向上方式實(shí)現(xiàn)系統(tǒng)的決策影響系統(tǒng)模塊的實(shí) 現(xiàn)和測(cè)試順序。 不論是自頂向下方式還是自底向上方式, 均是增量開(kāi)發(fā)( incremental development )的例子。系統(tǒng)是 一點(diǎn)一點(diǎn)地
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度幼兒園兒童安全教育教材及課程開(kāi)發(fā)協(xié)議
- 2025年度城市綜合體物業(yè)管理服務(wù)合同協(xié)議范本
- 2025年產(chǎn)品質(zhì)量保證協(xié)議文本
- 2025年倉(cāng)儲(chǔ)場(chǎng)地續(xù)租合同樣本
- 2025年市場(chǎng)擴(kuò)張戰(zhàn)略策劃咨詢(xún)協(xié)議
- 市場(chǎng)調(diào)研與分析服務(wù)框架協(xié)議
- 2025年飲料酒項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 2025年中藥材市場(chǎng)分析與采購(gòu)服務(wù)合同
- 2025年滌綸短纖項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 2025年鼻毛修剪器項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模稿
- 項(xiàng)目考勤表(模板)
- 《鍋爐原理》試題庫(kù)及參考答案(學(xué)習(xí)資料)
- 防呆防錯(cuò)十大原理及案例分析
- 區(qū)塊鏈金融發(fā)展的現(xiàn)狀、挑戰(zhàn)與前景
- 《我是班級(jí)的主人翁》的主題班會(huì)
- 產(chǎn)品報(bào)價(jià)單(5篇)
- GB/T 43153-2023居家養(yǎng)老上門(mén)服務(wù)基本規(guī)范
- 不銹鋼欄桿施工工藝
- 陜西演藝集團(tuán)有限公司招聘筆試題庫(kù)2023
- 部編人教版二年級(jí)道德與法治下冊(cè)同步練習(xí)(全冊(cè))
- 人教部編道德與法治五年級(jí)下冊(cè)單元計(jì)劃
評(píng)論
0/150
提交評(píng)論