版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
JavaSoftwareSolutions
FoundationsofProgramDesign
SixthEditionby
Lewis&LoftusChapter6:
面向?qū)ο笤O(shè)計(jì)6-2面向?qū)ο笤O(shè)計(jì)第6章重點(diǎn)討論:軟件開發(fā)活動(dòng)靜態(tài)修飾符編寫接口方法設(shè)計(jì)和方法重載6-3Outline軟件開發(fā)活動(dòng)靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-4程序開發(fā)軟件開發(fā)項(xiàng)目應(yīng)包含下述四個(gè)基本過程:建立軟件需求軟件設(shè)計(jì)實(shí)現(xiàn)軟件設(shè)計(jì)軟件測試上述過程是相互重疊和交互的6-5需求軟件需求規(guī)定了一個(gè)程序必須完成的功能做什么,而非怎么做通常提供功能說明文檔,但它應(yīng)當(dāng)被審閱和擴(kuò)展初始需求往往是不完整,模糊,甚至可能是矛盾的小心分析軟件需求能夠很顯著的節(jié)約開發(fā)時(shí)間和費(fèi)用6-6設(shè)計(jì)軟件設(shè)計(jì)指定了一個(gè)程序如何完成它的需求也就是一個(gè)軟件設(shè)計(jì)決定:解決方案如何分解為可管理的多個(gè)小塊每個(gè)小塊該做什么面向?qū)ο笤O(shè)計(jì)決定了哪些類和對象是必要的,并且指定它們間如何交互底層設(shè)計(jì)包括不同方法如何完成它們的功能6-7實(shí)現(xiàn)實(shí)現(xiàn)是將設(shè)計(jì)轉(zhuǎn)化為源代碼的過程程序開發(fā)初學(xué)者通常認(rèn)為寫代碼是軟件開發(fā)的核心,但其實(shí)寫代碼應(yīng)當(dāng)是最少創(chuàng)造性的步驟幾乎所有重要的決策都在需求和設(shè)計(jì)階段做出實(shí)現(xiàn)應(yīng)該注重代碼細(xì)節(jié),包括風(fēng)格準(zhǔn)則和文檔6-8測試測試是為了保證軟件能夠解決預(yù)定的問題,并能夠在滿足性能要求的條件下執(zhí)行任務(wù)一個(gè)程序應(yīng)該以找出錯(cuò)誤為目標(biāo)進(jìn)行充分測試調(diào)試是找出程序出現(xiàn)問題所在和修正的過程我們將會(huì)在本章后面講述測試的細(xì)節(jié)6-9Outline軟件開發(fā)活動(dòng)靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-10識別類和對象 識別可能的類的方法之一是識別軟件需求中所討論的實(shí)體對象,對象一般是名詞類代表了一組有類似行為的對象,問題說明中的復(fù)數(shù)名詞可能表明需要一個(gè)類代表這種事務(wù)中的一個(gè)個(gè)體類識別中的另一個(gè)關(guān)鍵選擇是要將某一事物表示為對象還是對象的基本屬性識別出程序所需要的類后,要給每個(gè)類分配職責(zé)6-11靜態(tài)類成員回憶之前所說的靜態(tài)方法能夠直接通過類名而非對象名進(jìn)行調(diào)用例如,Math類的方法都是靜態(tài)的:result=Math.sqrt(25)變量也能定義為靜態(tài)決定一個(gè)方法或變量是否應(yīng)該定義為靜態(tài)是設(shè)計(jì)過程的一個(gè)重要環(huán)節(jié)6-12靜態(tài)修飾符可以通過static修飾符定義靜態(tài)方法和變量靜態(tài)方法與變量是與類關(guān)聯(lián)而非與對象關(guān)聯(lián)靜態(tài)方法有時(shí)也稱為類方法,靜態(tài)變量有時(shí)也稱為類變量6-13靜態(tài)變量通常每個(gè)對象擁有自己的數(shù)據(jù)空間,但如果一個(gè)變量聲明為靜態(tài),則只有一份拷貝存在privatestaticfloatprice;程序第一次引用含有靜態(tài)變量的類時(shí),將為靜態(tài)變量分配存儲(chǔ)空間靜態(tài)變量可以由所有的類實(shí)例共享在一個(gè)對象中改變靜態(tài)變量的值將直接影響其他所有對象6-14靜態(tài)方法classHelper{publicstaticintcube(intnum){returnnum*num*num;}}因?yàn)槎x為靜態(tài),方法可以如下方式調(diào)用 value=Helper.cube(5);6-15靜態(tài)類成員修飾符的順序可以互換,但習(xí)慣將可見性修飾符放在前回憶之前main
方法為靜態(tài)–它由java解釋器直接調(diào)用而無需生成一個(gè)對象靜態(tài)方法不能引用實(shí)例變量,因?yàn)閷?shí)例變量開始并不存在直至對象被創(chuàng)建靜態(tài)方法可以引用靜態(tài)變量或局部變量6-16類間關(guān)系 依賴關(guān)系:一個(gè)類依賴于另一個(gè)類,通常體現(xiàn)在一個(gè)類的方法調(diào)用另一個(gè)類的方法同一個(gè)類的對象間依賴關(guān)系:一個(gè)類依賴于本身,即一個(gè)類的對象與本類的其他對象交互,也就是將一個(gè)類對象作為參數(shù)傳遞給本類的一個(gè)方法聚合關(guān)系:將其他對象的引用作為自己的實(shí)例數(shù)據(jù)的對象,一個(gè)對象越復(fù)雜,越需要將它表示為聚合對象6-17this引用 this為java的保留字,this對象允許對象引用自己this引用可以當(dāng)前正在運(yùn)行的對象this引用也常用于區(qū)分同名的構(gòu)造方法參數(shù)和實(shí)例變量6-18Outline軟件開發(fā)活動(dòng)靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-19接口Java接口是一組常量和抽象方法的集合抽象方法是沒有實(shí)現(xiàn)的方法,即對于抽象方法沒有已定義的實(shí)現(xiàn)代碼抽象方法聲明前邊可使用保留字abstract,但在接口中的方法通常不必加上一個(gè)類通過實(shí)現(xiàn)定義在接口中的每個(gè)抽象方法來實(shí)現(xiàn)這個(gè)接口6-20接口publicinterfaceDoable{publicvoiddoThis();publicintdoThat();publicvoiddoThis2(floatvalue,charch);publicbooleandoTheOther(intnum);}interface
為保留字在接口中的方法都沒有定義(實(shí)現(xiàn)代碼)包含參數(shù)列表的方法聲明頭后面僅跟著分號6-21接口接口不能被實(shí)例化接口方法的默認(rèn)可見性是public一個(gè)類可以如下方式實(shí)現(xiàn)接口:在類頭說明提供接口中每個(gè)抽象方法的具體實(shí)現(xiàn)如果一個(gè)類聲明它要實(shí)現(xiàn)某個(gè)接口,它就必須提供這個(gè)接口中所有方法的實(shí)現(xiàn)代碼6-22接口publicclassCanDoimplementsDoable{publicvoiddoThis(){
//whatever}publicvoiddoThat(){
//whatever}
//etc.}implements
為保留字Doable
中的每個(gè)方法都要給出定義6-23接口一個(gè)類也可以實(shí)現(xiàn)多個(gè)接口使用implements
子句聲明一個(gè)類實(shí)現(xiàn)多個(gè)接口,接口名用逗號分開這個(gè)類應(yīng)當(dāng)提供所有接口中的所有方法的實(shí)現(xiàn)代碼classManyThingsimplementsinterface1,interface2{
//allmethodsofbothinterfaces}6-24接口Java標(biāo)準(zhǔn)類庫包含很多有用接口Comparable
接口只有一個(gè)抽象方法compareTo,用于比較兩個(gè)對象我們曾經(jīng)在第五章的String類中討論過compareTo
方法String
類實(shí)現(xiàn)了Comparable,使得我們能夠?qū)⒆址栽~典順序排列6-25Outline軟件開發(fā)活動(dòng)靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-26對象參數(shù)方法設(shè)計(jì)的一個(gè)重要問題是參數(shù)傳遞Java方法通過值進(jìn)行參數(shù)傳遞實(shí)際參數(shù)的一份拷貝被存入形式參數(shù)(定義在方法頭部)因此參數(shù)傳遞類似于賦值語句當(dāng)一個(gè)對象被傳遞到方法時(shí),實(shí)際參數(shù)和形式參數(shù)互為對方的別名6-27傳遞對象至方法方法對于參數(shù)的操作可能有永久效果,也可能沒有SeeParameterTester.java
SeeParameterModifier.java
SeeNum.java
注意改變一個(gè)對象內(nèi)部狀態(tài)與改變一個(gè)引用指向的對象的區(qū)別6-28Outline軟件開發(fā)活動(dòng)靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-29方法重載使用具有不同參數(shù)表的相同方法名調(diào)用多個(gè)方法,這種技術(shù)稱為方法重載如果一個(gè)方法被重載了,那么僅用方法名不足以確定哪個(gè)方法被調(diào)用每個(gè)重載的方法的識別標(biāo)志必須是唯一的識別標(biāo)記包括參數(shù)的個(gè)數(shù),類型和參數(shù)的次序6-30方法重載編譯器通過對參數(shù)的分析,決定哪個(gè)方法被調(diào)用floattryMe(intx){returnx+.375;}floattryMe(intx,floaty){returnx*y;}result=tryMe(25,4.32)Invocation6-31方法重載println方法被重載:println(Strings)println(inti)println(doubled)
等等...下列語句調(diào)用了不同版本的println方法:System.out.println("Thetotalis:");System.out.println(total);6-32方法重載方法的返回類型并不作為識別標(biāo)志的一部分也就是說,方法重載不能僅靠返回值類型不同而實(shí)現(xiàn)構(gòu)造器可以重載構(gòu)造器重載提供了多種途徑以初始化一個(gè)新對象6-33Outline軟件開發(fā)活動(dòng)靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-34測試測試包含多種不同意思測試當(dāng)然包括以不同輸入運(yùn)行完整的程序它也包括通過人工或計(jì)算機(jī)作出關(guān)于訪問質(zhì)量的任何評估一些測試應(yīng)該在編碼開始前就開始問題越早發(fā)現(xiàn),則解決問題的成本越小6-35測試測試的目的在于發(fā)現(xiàn)錯(cuò)誤發(fā)現(xiàn)并且解決多個(gè)錯(cuò)誤后,我們可以預(yù)計(jì)程序會(huì)按照預(yù)期執(zhí)行我們絕不能認(rèn)為所有錯(cuò)誤都已經(jīng)消除了我們什么時(shí)候停止測試?觀念上的回答:絕不不誠實(shí)的回答:當(dāng)我們沒時(shí)間時(shí)好一些的回答:當(dāng)我們能夠承受沒有被發(fā)現(xiàn)的錯(cuò)誤所帶來的風(fēng)險(xiǎn)時(shí)6-36審查審查是用于評價(jià)設(shè)計(jì)和代碼質(zhì)量的技術(shù)它是基于人工測試的常用和有效的方法向他人陳述設(shè)計(jì)或代碼:使自己更仔細(xì)考慮已做的設(shè)計(jì)和代碼可以吸取他人的建議審查通常稱為排練6-37測試用例一個(gè)測試用例由一組輸入數(shù)據(jù)、用戶操作或其他初始條件及期望輸出構(gòu)成測試用例應(yīng)該形成規(guī)范的文檔,以便將來需要時(shí)能夠重復(fù)測試對于中型和大型系統(tǒng),測試過程應(yīng)該仔細(xì)管理許多組織擁有不同的質(zhì)量保證部門進(jìn)行測試6-38缺陷和回歸測試缺陷測試的目的在于通過測試用例發(fā)現(xiàn)錯(cuò)誤一個(gè)問題的解決往往會(huì)帶來新問題當(dāng)解決了一系列問題后我們應(yīng)該執(zhí)行回歸測試—運(yùn)行以往的測試用例以保證沒有引入新錯(cuò)誤對程序所有可能的輸入數(shù)據(jù)和用戶操作進(jìn)行窮盡式的測試是不現(xiàn)實(shí)的因此必須設(shè)計(jì)出具有最大化發(fā)現(xiàn)問題能力的測試用例6-39黑盒測試黑盒測試的測試用例不考慮系統(tǒng)的內(nèi)部工作方式黑盒測試基于輸入和輸出數(shù)據(jù)輸入被劃分為多個(gè)等價(jià)類如果一個(gè)方法對等價(jià)類的一個(gè)輸入數(shù)據(jù)能夠處理,那么該方法可以處理等價(jià)類中的其他數(shù)據(jù)因此好的測試用例必須覆蓋所有的等價(jià)類并且要注意不同種類間的邊界6-40白盒測試白盒測試用于測試一個(gè)方法的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)白盒測試的目標(biāo)是保證程序中的每一條路徑至少執(zhí)行一次代碼執(zhí)行的路徑由各種使用條件表達(dá)式的流程控制語句控制一個(gè)好的測試方案必須包括白盒和黑盒測試GUI設(shè)計(jì)設(shè)計(jì)軟件界面應(yīng)該讓用戶少犯輸入錯(cuò)誤適應(yīng)性最廣大型系統(tǒng)的風(fēng)格一致6-41布局管理器布局管理器是一個(gè)對象,負(fù)責(zé)在容器安排組件每個(gè)容器有默認(rèn)的布局管理器,但可以更換每當(dāng)要改變?nèi)萜髦薪M件的視覺外觀時(shí),都會(huì)詢問布局管理器邊界、盒式、卡式、流式、網(wǎng)格、網(wǎng)格單元6-42邊框允許在任何Swing組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 青島航空科技職業(yè)學(xué)院《新媒體時(shí)代網(wǎng)紅經(jīng)濟(jì)營銷與創(chuàng)新創(chuàng)業(yè)》2023-2024學(xué)年第一學(xué)期期末試卷
- 青島工程職業(yè)學(xué)院《建筑制圖與CAD技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2022年加強(qiáng)學(xué)生養(yǎng)成教育系列活動(dòng)方案范文
- 2022年大學(xué)光棍節(jié)活動(dòng)策劃方案范文
- XX產(chǎn)品設(shè)計(jì)與用戶體驗(yàn)優(yōu)化探討
- 工業(yè)產(chǎn)品設(shè)計(jì)中的概念開發(fā)技巧
- 人力資源在創(chuàng)新型企業(yè)中的角色
- 幼兒親子綜合課程設(shè)計(jì)
- 《MOFs增強(qiáng)聚乙烯醇基燃料電池傳導(dǎo)復(fù)合膜制備及性能研究》
- 《基于新能源的北方農(nóng)村供熱系統(tǒng)優(yōu)化運(yùn)行模式研究》
- 抽水水施工方案
- 幼兒園保育員培訓(xùn)記錄(21篇)
- 班會(huì)尊重與理解(共32張PPT)
- 2023年四川省公需科目(數(shù)字經(jīng)濟(jì)與驅(qū)動(dòng)發(fā)展)考試題庫及答案
- 涉農(nóng)法律法規(guī)和會(huì)
- 防疫員技師考試題庫及答案
- 蘇教六年級數(shù)學(xué)上冊百分?jǐn)?shù)整理與復(fù)習(xí)課件
- 軟件工程項(xiàng)目實(shí)踐教程第四版課后參考答案
- 流行性感冒病人的護(hù)理
- 0-6歲智障兒童康復(fù)教育發(fā)展性課程評量
- 八年級英語上冊動(dòng)詞形專練
評論
0/150
提交評論