




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
JavaSoftwareSolutions
FoundationsofProgramDesign
SixthEditionby
Lewis&LoftusChapter6:
面向對象設計6-2面向對象設計第6章重點討論:軟件開發(fā)活動靜態(tài)修飾符編寫接口方法設計和方法重載6-3Outline軟件開發(fā)活動靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-4程序開發(fā)軟件開發(fā)項目應包含下述四個基本過程:建立軟件需求軟件設計實現(xiàn)軟件設計軟件測試上述過程是相互重疊和交互的6-5需求軟件需求規(guī)定了一個程序必須完成的功能做什么,而非怎么做通常提供功能說明文檔,但它應當被審閱和擴展初始需求往往是不完整,模糊,甚至可能是矛盾的小心分析軟件需求能夠很顯著的節(jié)約開發(fā)時間和費用6-6設計軟件設計指定了一個程序如何完成它的需求也就是一個軟件設計決定:解決方案如何分解為可管理的多個小塊每個小塊該做什么面向對象設計決定了哪些類和對象是必要的,并且指定它們間如何交互底層設計包括不同方法如何完成它們的功能6-7實現(xiàn)實現(xiàn)是將設計轉化為源代碼的過程程序開發(fā)初學者通常認為寫代碼是軟件開發(fā)的核心,但其實寫代碼應當是最少創(chuàng)造性的步驟幾乎所有重要的決策都在需求和設計階段做出實現(xiàn)應該注重代碼細節(jié),包括風格準則和文檔6-8測試測試是為了保證軟件能夠解決預定的問題,并能夠在滿足性能要求的條件下執(zhí)行任務一個程序應該以找出錯誤為目標進行充分測試調試是找出程序出現(xiàn)問題所在和修正的過程我們將會在本章后面講述測試的細節(jié)6-9Outline軟件開發(fā)活動靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-10識別類和對象 識別可能的類的方法之一是識別軟件需求中所討論的實體對象,對象一般是名詞類代表了一組有類似行為的對象,問題說明中的復數(shù)名詞可能表明需要一個類代表這種事務中的一個個體類識別中的另一個關鍵選擇是要將某一事物表示為對象還是對象的基本屬性識別出程序所需要的類后,要給每個類分配職責6-11靜態(tài)類成員回憶之前所說的靜態(tài)方法能夠直接通過類名而非對象名進行調用例如,Math類的方法都是靜態(tài)的:result=Math.sqrt(25)變量也能定義為靜態(tài)決定一個方法或變量是否應該定義為靜態(tài)是設計過程的一個重要環(huán)節(jié)6-12靜態(tài)修飾符可以通過static修飾符定義靜態(tài)方法和變量靜態(tài)方法與變量是與類關聯(lián)而非與對象關聯(lián)靜態(tài)方法有時也稱為類方法,靜態(tài)變量有時也稱為類變量6-13靜態(tài)變量通常每個對象擁有自己的數(shù)據(jù)空間,但如果一個變量聲明為靜態(tài),則只有一份拷貝存在privatestaticfloatprice;程序第一次引用含有靜態(tài)變量的類時,將為靜態(tài)變量分配存儲空間靜態(tài)變量可以由所有的類實例共享在一個對象中改變靜態(tài)變量的值將直接影響其他所有對象6-14靜態(tài)方法classHelper{publicstaticintcube(intnum){returnnum*num*num;}}因為定義為靜態(tài),方法可以如下方式調用 value=Helper.cube(5);6-15靜態(tài)類成員修飾符的順序可以互換,但習慣將可見性修飾符放在前回憶之前main
方法為靜態(tài)–它由java解釋器直接調用而無需生成一個對象靜態(tài)方法不能引用實例變量,因為實例變量開始并不存在直至對象被創(chuàng)建靜態(tài)方法可以引用靜態(tài)變量或局部變量6-16類間關系 依賴關系:一個類依賴于另一個類,通常體現(xiàn)在一個類的方法調用另一個類的方法同一個類的對象間依賴關系:一個類依賴于本身,即一個類的對象與本類的其他對象交互,也就是將一個類對象作為參數(shù)傳遞給本類的一個方法聚合關系:將其他對象的引用作為自己的實例數(shù)據(jù)的對象,一個對象越復雜,越需要將它表示為聚合對象6-17this引用 this為java的保留字,this對象允許對象引用自己this引用可以當前正在運行的對象this引用也常用于區(qū)分同名的構造方法參數(shù)和實例變量6-18Outline軟件開發(fā)活動靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-19接口Java接口是一組常量和抽象方法的集合抽象方法是沒有實現(xiàn)的方法,即對于抽象方法沒有已定義的實現(xiàn)代碼抽象方法聲明前邊可使用保留字abstract,但在接口中的方法通常不必加上一個類通過實現(xiàn)定義在接口中的每個抽象方法來實現(xiàn)這個接口6-20接口publicinterfaceDoable{publicvoiddoThis();publicintdoThat();publicvoiddoThis2(floatvalue,charch);publicbooleandoTheOther(intnum);}interface
為保留字在接口中的方法都沒有定義(實現(xiàn)代碼)包含參數(shù)列表的方法聲明頭后面僅跟著分號6-21接口接口不能被實例化接口方法的默認可見性是public一個類可以如下方式實現(xiàn)接口:在類頭說明提供接口中每個抽象方法的具體實現(xiàn)如果一個類聲明它要實現(xiàn)某個接口,它就必須提供這個接口中所有方法的實現(xiàn)代碼6-22接口publicclassCanDoimplementsDoable{publicvoiddoThis(){
//whatever}publicvoiddoThat(){
//whatever}
//etc.}implements
為保留字Doable
中的每個方法都要給出定義6-23接口一個類也可以實現(xiàn)多個接口使用implements
子句聲明一個類實現(xiàn)多個接口,接口名用逗號分開這個類應當提供所有接口中的所有方法的實現(xiàn)代碼classManyThingsimplementsinterface1,interface2{
//allmethodsofbothinterfaces}6-24接口Java標準類庫包含很多有用接口Comparable
接口只有一個抽象方法compareTo,用于比較兩個對象我們曾經在第五章的String類中討論過compareTo
方法String
類實現(xiàn)了Comparable,使得我們能夠將字符串以詞典順序排列6-25Outline軟件開發(fā)活動靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-26對象參數(shù)方法設計的一個重要問題是參數(shù)傳遞Java方法通過值進行參數(shù)傳遞實際參數(shù)的一份拷貝被存入形式參數(shù)(定義在方法頭部)因此參數(shù)傳遞類似于賦值語句當一個對象被傳遞到方法時,實際參數(shù)和形式參數(shù)互為對方的別名6-27傳遞對象至方法方法對于參數(shù)的操作可能有永久效果,也可能沒有SeeParameterTester.java
SeeParameterModifier.java
SeeNum.java
注意改變一個對象內部狀態(tài)與改變一個引用指向的對象的區(qū)別6-28Outline軟件開發(fā)活動靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-29方法重載使用具有不同參數(shù)表的相同方法名調用多個方法,這種技術稱為方法重載如果一個方法被重載了,那么僅用方法名不足以確定哪個方法被調用每個重載的方法的識別標志必須是唯一的識別標記包括參數(shù)的個數(shù),類型和參數(shù)的次序6-30方法重載編譯器通過對參數(shù)的分析,決定哪個方法被調用floattryMe(intx){returnx+.375;}floattryMe(intx,floaty){returnx*y;}result=tryMe(25,4.32)Invocation6-31方法重載println方法被重載:println(Strings)println(inti)println(doubled)
等等...下列語句調用了不同版本的println方法:System.out.println("Thetotalis:");System.out.println(total);6-32方法重載方法的返回類型并不作為識別標志的一部分也就是說,方法重載不能僅靠返回值類型不同而實現(xiàn)構造器可以重載構造器重載提供了多種途徑以初始化一個新對象6-33Outline軟件開發(fā)活動靜態(tài)變量和方法接口對象參數(shù)方法重載測試6-34測試測試包含多種不同意思測試當然包括以不同輸入運行完整的程序它也包括通過人工或計算機作出關于訪問質量的任何評估一些測試應該在編碼開始前就開始問題越早發(fā)現(xiàn),則解決問題的成本越小6-35測試測試的目的在于發(fā)現(xiàn)錯誤發(fā)現(xiàn)并且解決多個錯誤后,我們可以預計程序會按照預期執(zhí)行我們絕不能認為所有錯誤都已經消除了我們什么時候停止測試?觀念上的回答:絕不不誠實的回答:當我們沒時間時好一些的回答:當我們能夠承受沒有被發(fā)現(xiàn)的錯誤所帶來的風險時6-36審查審查是用于評價設計和代碼質量的技術它是基于人工測試的常用和有效的方法向他人陳述設計或代碼:使自己更仔細考慮已做的設計和代碼可以吸取他人的建議審查通常稱為排練6-37測試用例一個測試用例由一組輸入數(shù)據(jù)、用戶操作或其他初始條件及期望輸出構成測試用例應該形成規(guī)范的文檔,以便將來需要時能夠重復測試對于中型和大型系統(tǒng),測試過程應該仔細管理許多組織擁有不同的質量保證部門進行測試6-38缺陷和回歸測試缺陷測試的目的在于通過測試用例發(fā)現(xiàn)錯誤一個問題的解決往往會帶來新問題當解決了一系列問題后我們應該執(zhí)行回歸測試—運行以往的測試用例以保證沒有引入新錯誤對程序所有可能的輸入數(shù)據(jù)和用戶操作進行窮盡式的測試是不現(xiàn)實的因此必須設計出具有最大化發(fā)現(xiàn)問題能力的測試用例6-39黑盒測試黑盒測試的測試用例不考慮系統(tǒng)的內部工作方式黑盒測試基于輸入和輸出數(shù)據(jù)輸入被劃分為多個等價類如果一個方法對等價類的一個輸入數(shù)據(jù)能夠處理,那么該方法可以處理等價類中的其他數(shù)據(jù)因此好的測試用例必須覆蓋所有的等價類并且要注意不同種類間的邊界6-40白盒測試白盒測試用于測試一個方法的內部結構和實現(xiàn)白盒測試的目標是保證程序中的每一條路徑至少執(zhí)行一次代碼執(zhí)行的路徑由各種使用條件表達式的流程控制語句控制一個好的測試方案必須包括白盒和黑盒測試GUI設計設計軟件界面應該讓用戶少犯輸入錯誤適應性最廣大型系統(tǒng)的風格一致6-41布局管理器布局管理器是一個對象,負責在容器安排組件每個容器有默認的布局管理器,但可以更換每當要改變容器中組件的視覺外觀時,都會詢問布局管理器邊界、盒式、卡式、流式、網格、網格單元6-42邊框允許在任何Swing組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025行政人事上半年工作總結(4篇)
- 2025銷售簡短個人工作總結(8篇)
- 人教版八年級歷史與社會上冊1.1.1古代埃及教學設計
- 2025年幼兒園小班工作計劃范文(15篇)
- 初三英語教學工作總結2025(16篇)
- Module 10 Unit 2課時教學設計- 2024-2025學年外研版八年級英語上冊
- (二模)2025年汕頭市高三普通高考第二次模擬考試生物試卷
- 教師評高級職稱工作總結(9篇)
- 落實STEAM教育理念為學生高效學習提供支持
- 2025銷售工作計劃書1000字(16篇)
- 自費藥品知情同意書
- 江蘇省書法水平等級證書考試-硬筆書法考試專用紙-(123級)
- 山東省各地市地圖課件
- 全套IATF16949內審核檢查表(含審核記錄)
- 基礎工程量計算表
- 設備報修單表
- 心肺復蘇急救步驟圖例
- 《春夜喜雨》公開課一等獎課件
- 簡易呼吸球囊
- 第一章醫(yī)學統(tǒng)計學方法的基本概念和基本步驟講課課件
- 臨床研究樣本量計算器 CRESS V1.3
評論
0/150
提交評論