




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaSoftwareSolutions
FoundationsofProgramDesign
SixthEditionby
Lewis&LoftusChapter6:
面向?qū)ο笤O(shè)計(jì)6-2面向?qū)ο笤O(shè)計(jì)第6章重點(diǎn)討論:軟件開(kāi)發(fā)活動(dòng)靜態(tài)修飾符編寫(xiě)接口方法設(shè)計(jì)和方法重載6-3Outline軟件開(kāi)發(fā)活動(dòng)靜態(tài)變量和方法接口對(duì)象參數(shù)方法重載測(cè)試6-4程序開(kāi)發(fā)軟件開(kāi)發(fā)項(xiàng)目應(yīng)包含下述四個(gè)基本過(guò)程:建立軟件需求軟件設(shè)計(jì)實(shí)現(xiàn)軟件設(shè)計(jì)軟件測(cè)試上述過(guò)程是相互重疊和交互的6-5需求軟件需求規(guī)定了一個(gè)程序必須完成的功能做什么,而非怎么做通常提供功能說(shuō)明文檔,但它應(yīng)當(dāng)被審閱和擴(kuò)展初始需求往往是不完整,模糊,甚至可能是矛盾的小心分析軟件需求能夠很顯著的節(jié)約開(kāi)發(fā)時(shí)間和費(fèi)用6-6設(shè)計(jì)軟件設(shè)計(jì)指定了一個(gè)程序如何完成它的需求也就是一個(gè)軟件設(shè)計(jì)決定:解決方案如何分解為可管理的多個(gè)小塊每個(gè)小塊該做什么面向?qū)ο笤O(shè)計(jì)決定了哪些類(lèi)和對(duì)象是必要的,并且指定它們間如何交互底層設(shè)計(jì)包括不同方法如何完成它們的功能6-7實(shí)現(xiàn)實(shí)現(xiàn)是將設(shè)計(jì)轉(zhuǎn)化為源代碼的過(guò)程程序開(kāi)發(fā)初學(xué)者通常認(rèn)為寫(xiě)代碼是軟件開(kāi)發(fā)的核心,但其實(shí)寫(xiě)代碼應(yīng)當(dāng)是最少創(chuàng)造性的步驟幾乎所有重要的決策都在需求和設(shè)計(jì)階段做出實(shí)現(xiàn)應(yīng)該注重代碼細(xì)節(jié),包括風(fēng)格準(zhǔn)則和文檔6-8測(cè)試測(cè)試是為了保證軟件能夠解決預(yù)定的問(wèn)題,并能夠在滿足性能要求的條件下執(zhí)行任務(wù)一個(gè)程序應(yīng)該以找出錯(cuò)誤為目標(biāo)進(jìn)行充分測(cè)試調(diào)試是找出程序出現(xiàn)問(wèn)題所在和修正的過(guò)程我們將會(huì)在本章后面講述測(cè)試的細(xì)節(jié)6-9Outline軟件開(kāi)發(fā)活動(dòng)靜態(tài)變量和方法接口對(duì)象參數(shù)方法重載測(cè)試6-10識(shí)別類(lèi)和對(duì)象 識(shí)別可能的類(lèi)的方法之一是識(shí)別軟件需求中所討論的實(shí)體對(duì)象,對(duì)象一般是名詞類(lèi)代表了一組有類(lèi)似行為的對(duì)象,問(wèn)題說(shuō)明中的復(fù)數(shù)名詞可能表明需要一個(gè)類(lèi)代表這種事務(wù)中的一個(gè)個(gè)體類(lèi)識(shí)別中的另一個(gè)關(guān)鍵選擇是要將某一事物表示為對(duì)象還是對(duì)象的基本屬性識(shí)別出程序所需要的類(lèi)后,要給每個(gè)類(lèi)分配職責(zé)6-11靜態(tài)類(lèi)成員回憶之前所說(shuō)的靜態(tài)方法能夠直接通過(guò)類(lèi)名而非對(duì)象名進(jìn)行調(diào)用例如,Math類(lèi)的方法都是靜態(tài)的:result=Math.sqrt(25)變量也能定義為靜態(tài)決定一個(gè)方法或變量是否應(yīng)該定義為靜態(tài)是設(shè)計(jì)過(guò)程的一個(gè)重要環(huán)節(jié)6-12靜態(tài)修飾符可以通過(guò)static修飾符定義靜態(tài)方法和變量靜態(tài)方法與變量是與類(lèi)關(guān)聯(lián)而非與對(duì)象關(guān)聯(lián)靜態(tài)方法有時(shí)也稱(chēng)為類(lèi)方法,靜態(tài)變量有時(shí)也稱(chēng)為類(lèi)變量6-13靜態(tài)變量通常每個(gè)對(duì)象擁有自己的數(shù)據(jù)空間,但如果一個(gè)變量聲明為靜態(tài),則只有一份拷貝存在privatestaticfloatprice;程序第一次引用含有靜態(tài)變量的類(lèi)時(shí),將為靜態(tài)變量分配存儲(chǔ)空間靜態(tài)變量可以由所有的類(lèi)實(shí)例共享在一個(gè)對(duì)象中改變靜態(tài)變量的值將直接影響其他所有對(duì)象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)類(lèi)成員修飾符的順序可以互換,但習(xí)慣將可見(jiàn)性修飾符放在前回憶之前main
方法為靜態(tài)–它由java解釋器直接調(diào)用而無(wú)需生成一個(gè)對(duì)象靜態(tài)方法不能引用實(shí)例變量,因?yàn)閷?shí)例變量開(kāi)始并不存在直至對(duì)象被創(chuàng)建靜態(tài)方法可以引用靜態(tài)變量或局部變量6-16類(lèi)間關(guān)系 依賴(lài)關(guān)系:一個(gè)類(lèi)依賴(lài)于另一個(gè)類(lèi),通常體現(xiàn)在一個(gè)類(lèi)的方法調(diào)用另一個(gè)類(lèi)的方法同一個(gè)類(lèi)的對(duì)象間依賴(lài)關(guān)系:一個(gè)類(lèi)依賴(lài)于本身,即一個(gè)類(lèi)的對(duì)象與本類(lèi)的其他對(duì)象交互,也就是將一個(gè)類(lèi)對(duì)象作為參數(shù)傳遞給本類(lèi)的一個(gè)方法聚合關(guān)系:將其他對(duì)象的引用作為自己的實(shí)例數(shù)據(jù)的對(duì)象,一個(gè)對(duì)象越復(fù)雜,越需要將它表示為聚合對(duì)象6-17this引用 this為java的保留字,this對(duì)象允許對(duì)象引用自己this引用可以當(dāng)前正在運(yùn)行的對(duì)象this引用也常用于區(qū)分同名的構(gòu)造方法參數(shù)和實(shí)例變量6-18Outline軟件開(kāi)發(fā)活動(dòng)靜態(tài)變量和方法接口對(duì)象參數(shù)方法重載測(cè)試6-19接口Java接口是一組常量和抽象方法的集合抽象方法是沒(méi)有實(shí)現(xiàn)的方法,即對(duì)于抽象方法沒(méi)有已定義的實(shí)現(xiàn)代碼抽象方法聲明前邊可使用保留字abstract,但在接口中的方法通常不必加上一個(gè)類(lèi)通過(guò)實(shí)現(xiàn)定義在接口中的每個(gè)抽象方法來(lái)實(shí)現(xiàn)這個(gè)接口6-20接口publicinterfaceDoable{publicvoiddoThis();publicintdoThat();publicvoiddoThis2(floatvalue,charch);publicbooleandoTheOther(intnum);}interface
為保留字在接口中的方法都沒(méi)有定義(實(shí)現(xiàn)代碼)包含參數(shù)列表的方法聲明頭后面僅跟著分號(hào)6-21接口接口不能被實(shí)例化接口方法的默認(rèn)可見(jiàn)性是public一個(gè)類(lèi)可以如下方式實(shí)現(xiàn)接口:在類(lèi)頭說(shuō)明提供接口中每個(gè)抽象方法的具體實(shí)現(xiàn)如果一個(gè)類(lèi)聲明它要實(shí)現(xiàn)某個(gè)接口,它就必須提供這個(gè)接口中所有方法的實(shí)現(xiàn)代碼6-22接口publicclassCanDoimplementsDoable{publicvoiddoThis(){
//whatever}publicvoiddoThat(){
//whatever}
//etc.}implements
為保留字Doable
中的每個(gè)方法都要給出定義6-23接口一個(gè)類(lèi)也可以實(shí)現(xiàn)多個(gè)接口使用implements
子句聲明一個(gè)類(lèi)實(shí)現(xiàn)多個(gè)接口,接口名用逗號(hào)分開(kāi)這個(gè)類(lèi)應(yīng)當(dāng)提供所有接口中的所有方法的實(shí)現(xiàn)代碼classManyThingsimplementsinterface1,interface2{
//allmethodsofbothinterfaces}6-24接口Java標(biāo)準(zhǔn)類(lèi)庫(kù)包含很多有用接口Comparable
接口只有一個(gè)抽象方法compareTo,用于比較兩個(gè)對(duì)象我們?cè)?jīng)在第五章的String類(lèi)中討論過(guò)compareTo
方法String
類(lèi)實(shí)現(xiàn)了Comparable,使得我們能夠?qū)⒆址栽~典順序排列6-25Outline軟件開(kāi)發(fā)活動(dòng)靜態(tài)變量和方法接口對(duì)象參數(shù)方法重載測(cè)試6-26對(duì)象參數(shù)方法設(shè)計(jì)的一個(gè)重要問(wèn)題是參數(shù)傳遞Java方法通過(guò)值進(jìn)行參數(shù)傳遞實(shí)際參數(shù)的一份拷貝被存入形式參數(shù)(定義在方法頭部)因此參數(shù)傳遞類(lèi)似于賦值語(yǔ)句當(dāng)一個(gè)對(duì)象被傳遞到方法時(shí),實(shí)際參數(shù)和形式參數(shù)互為對(duì)方的別名6-27傳遞對(duì)象至方法方法對(duì)于參數(shù)的操作可能有永久效果,也可能沒(méi)有SeeParameterTester.java
SeeParameterModifier.java
SeeNum.java
注意改變一個(gè)對(duì)象內(nèi)部狀態(tài)與改變一個(gè)引用指向的對(duì)象的區(qū)別6-28Outline軟件開(kāi)發(fā)活動(dòng)靜態(tài)變量和方法接口對(duì)象參數(shù)方法重載測(cè)試6-29方法重載使用具有不同參數(shù)表的相同方法名調(diào)用多個(gè)方法,這種技術(shù)稱(chēng)為方法重載如果一個(gè)方法被重載了,那么僅用方法名不足以確定哪個(gè)方法被調(diào)用每個(gè)重載的方法的識(shí)別標(biāo)志必須是唯一的識(shí)別標(biāo)記包括參數(shù)的個(gè)數(shù),類(lèi)型和參數(shù)的次序6-30方法重載編譯器通過(guò)對(duì)參數(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)
等等...下列語(yǔ)句調(diào)用了不同版本的println方法:System.out.println("Thetotalis:");System.out.println(total);6-32方法重載方法的返回類(lèi)型并不作為識(shí)別標(biāo)志的一部分也就是說(shuō),方法重載不能僅靠返回值類(lèi)型不同而實(shí)現(xiàn)構(gòu)造器可以重載構(gòu)造器重載提供了多種途徑以初始化一個(gè)新對(duì)象6-33Outline軟件開(kāi)發(fā)活動(dòng)靜態(tài)變量和方法接口對(duì)象參數(shù)方法重載測(cè)試6-34測(cè)試測(cè)試包含多種不同意思測(cè)試當(dāng)然包括以不同輸入運(yùn)行完整的程序它也包括通過(guò)人工或計(jì)算機(jī)作出關(guān)于訪問(wèn)質(zhì)量的任何評(píng)估一些測(cè)試應(yīng)該在編碼開(kāi)始前就開(kāi)始問(wèn)題越早發(fā)現(xiàn),則解決問(wèn)題的成本越小6-35測(cè)試測(cè)試的目的在于發(fā)現(xiàn)錯(cuò)誤發(fā)現(xiàn)并且解決多個(gè)錯(cuò)誤后,我們可以預(yù)計(jì)程序會(huì)按照預(yù)期執(zhí)行我們絕不能認(rèn)為所有錯(cuò)誤都已經(jīng)消除了我們什么時(shí)候停止測(cè)試?觀念上的回答:絕不不誠(chéng)實(shí)的回答:當(dāng)我們沒(méi)時(shí)間時(shí)好一些的回答:當(dāng)我們能夠承受沒(méi)有被發(fā)現(xiàn)的錯(cuò)誤所帶來(lái)的風(fēng)險(xiǎn)時(shí)6-36審查審查是用于評(píng)價(jià)設(shè)計(jì)和代碼質(zhì)量的技術(shù)它是基于人工測(cè)試的常用和有效的方法向他人陳述設(shè)計(jì)或代碼:使自己更仔細(xì)考慮已做的設(shè)計(jì)和代碼可以吸取他人的建議審查通常稱(chēng)為排練6-37測(cè)試用例一個(gè)測(cè)試用例由一組輸入數(shù)據(jù)、用戶操作或其他初始條件及期望輸出構(gòu)成測(cè)試用例應(yīng)該形成規(guī)范的文檔,以便將來(lái)需要時(shí)能夠重復(fù)測(cè)試對(duì)于中型和大型系統(tǒng),測(cè)試過(guò)程應(yīng)該仔細(xì)管理許多組織擁有不同的質(zhì)量保證部門(mén)進(jìn)行測(cè)試6-38缺陷和回歸測(cè)試缺陷測(cè)試的目的在于通過(guò)測(cè)試用例發(fā)現(xiàn)錯(cuò)誤一個(gè)問(wèn)題的解決往往會(huì)帶來(lái)新問(wèn)題當(dāng)解決了一系列問(wèn)題后我們應(yīng)該執(zhí)行回歸測(cè)試—運(yùn)行以往的測(cè)試用例以保證沒(méi)有引入新錯(cuò)誤對(duì)程序所有可能的輸入數(shù)據(jù)和用戶操作進(jìn)行窮盡式的測(cè)試是不現(xiàn)實(shí)的因此必須設(shè)計(jì)出具有最大化發(fā)現(xiàn)問(wèn)題能力的測(cè)試用例6-39黑盒測(cè)試黑盒測(cè)試的測(cè)試用例不考慮系統(tǒng)的內(nèi)部工作方式黑盒測(cè)試基于輸入和輸出數(shù)據(jù)輸入被劃分為多個(gè)等價(jià)類(lèi)如果一個(gè)方法對(duì)等價(jià)類(lèi)的一個(gè)輸入數(shù)據(jù)能夠處理,那么該方法可以處理等價(jià)類(lèi)中的其他數(shù)據(jù)因此好的測(cè)試用例必須覆蓋所有的等價(jià)類(lèi)并且要注意不同種類(lèi)間的邊界6-40白盒測(cè)試白盒測(cè)試用于測(cè)試一個(gè)方法的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)白盒測(cè)試的目標(biāo)是保證程序中的每一條路徑至少執(zhí)行一次代碼執(zhí)行的路徑由各種使用條件表達(dá)式的流程控制語(yǔ)句控制一個(gè)好的測(cè)試方案必須包括白盒和黑盒測(cè)試GUI設(shè)計(jì)設(shè)計(jì)軟件界面應(yīng)該讓用戶少犯輸入錯(cuò)誤適應(yīng)性最廣大型系統(tǒng)的風(fēng)格一致6-41布局管理器布局管理器是一個(gè)對(duì)象,負(fù)責(zé)在容器安排組件每個(gè)容器有默認(rèn)的布局管理器,但可以更換每當(dāng)要改變?nèi)萜髦薪M件的視覺(jué)外觀時(shí),都會(huì)詢問(wèn)布局管理器邊界、盒式、卡式、流式、網(wǎng)格、網(wǎng)格單元6-42邊框允許在任何Swing組
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 4420-2022勞務(wù)派遣單位信用等級(jí)評(píng)價(jià)規(guī)范
- DB32/T 4252-2021民用建筑燃?xì)獍踩?guī)范
- DB32/T 4122-2021開(kāi)發(fā)區(qū)地質(zhì)災(zāi)害危險(xiǎn)性區(qū)域評(píng)估規(guī)范
- DB32/T 4040.6-2021政務(wù)大數(shù)據(jù)數(shù)據(jù)元規(guī)范第6部分:電子證照數(shù)據(jù)元
- DB32/T 3985-2021河湖岸坡植物防護(hù)技術(shù)規(guī)范
- DB32/T 3134-2016瀝青路面就地?zé)嵩偕┕ぜ夹g(shù)規(guī)范
- DB32/T 1261-2020壽眉茶加工技術(shù)規(guī)程
- DB31/T 948-2015地下空間安全使用管理基本要求
- 【正版授權(quán)】 ISO/IEC 18584-1:2025 EN Information technology - Test methods for on-card biometric comparison applications - Part 1: General principles and specifications
- 水電站收購(gòu)分析報(bào)告
- 水泥粉助磨劑項(xiàng)目可行性研究報(bào)告發(fā)改委立項(xiàng)模板
- 濟(jì)南公共交通集團(tuán)有限公司招聘筆試題庫(kù)2025
- 工貿(mào)行業(yè)重大安全生產(chǎn)事故隱患判定標(biāo)準(zhǔn)解讀課件
- 委托裝訂合同協(xié)議
- 無(wú)氟防水劑研發(fā)及在紡織品中的實(shí)際應(yīng)用研究
- 水泥長(zhǎng)期購(gòu)銷(xiāo)合同范本
- 2025-2030年中國(guó)制罐行業(yè)現(xiàn)狀調(diào)研分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 體檢醫(yī)學(xué)知識(shí)科普
- 2025年臨床帶教老師心得感想(7篇)
- 新北師版一年級(jí)數(shù)學(xué)下冊(cè)教案教學(xué)設(shè)計(jì)全冊(cè)
評(píng)論
0/150
提交評(píng)論