第6單元對(duì)象和類(實(shí)驗(yàn)2)變量的作用域和this關(guān)鍵字_第1頁
第6單元對(duì)象和類(實(shí)驗(yàn)2)變量的作用域和this關(guān)鍵字_第2頁
第6單元對(duì)象和類(實(shí)驗(yàn)2)變量的作用域和this關(guān)鍵字_第3頁
第6單元對(duì)象和類(實(shí)驗(yàn)2)變量的作用域和this關(guān)鍵字_第4頁
第6單元對(duì)象和類(實(shí)驗(yàn)2)變量的作用域和this關(guān)鍵字_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6單元對(duì)象和類主講人:龔迅煒Java程序設(shè)計(jì)實(shí)踐教程實(shí)驗(yàn)2變量的作用域和this關(guān)鍵字目錄2實(shí)驗(yàn)?zāi)繕?biāo)4拓展訓(xùn)練3實(shí)驗(yàn)內(nèi)容1

知識(shí)要點(diǎn)變量作用域、this引用成員變量成員變量的作用域是類內(nèi);編譯器自動(dòng)對(duì)成員變量進(jìn)行初始化;成員變量的定義位置可以在類內(nèi)的任意位置;局部變量語句塊內(nèi)聲明的變量、方法內(nèi)聲明的變量;這些變量都需要程序員初始化;變量有效范圍從定義位置開始到變量所在的語句塊結(jié)束。成員變量和局部變量同名時(shí),遵循局部變量?jī)?yōu)先的原則,程序員也可以在局部使用this顯示使用成員變量。this可以指代構(gòu)造方法,僅可以出現(xiàn)在構(gòu)造方法中,并且要求是構(gòu)造方法的首句。不可變類和單例類創(chuàng)建一個(gè)對(duì)象后不希望被改變,則需要生成它的類為不可變類。不可變類的所有實(shí)例數(shù)據(jù)都是私有的,而且不能包含針對(duì)任何一個(gè)數(shù)據(jù)域的公共設(shè)置方法。例如銀行卡一旦創(chuàng)建就不允許更改其信息。importjava.util.Date;publicclassBankCard{ privateStringbankName; privateStringcardID; privateDatecreateTime; publicBankCard(StringbankName,StringcardID,DatecreateTime){ super(); this.bankName=bankName; this.cardID=cardID; this.createTime=createTime; } publicStringgetBankName(){ returnbankName; } publicStringgetCardID(){ returncardID; } publicDategetCreateTime(){ returncreateTime; }}不可變類和單例類在某些場(chǎng)景下,不允許自由創(chuàng)建類對(duì)象,僅能在一個(gè)應(yīng)用中創(chuàng)建一個(gè)實(shí)例對(duì)象。為了避免程序員隨意創(chuàng)建這種類的對(duì)象,應(yīng)該把該類的構(gòu)造器設(shè)置為私有的。同時(shí)提供一個(gè)公有的靜態(tài)方法用于創(chuàng)建對(duì)象。publicclassMonitor{ privatestaticMonitorinstance; privateMonitor(){} publicstaticMonitorgetInstance(){ if(instance==null){ instance=newMonitor(); } returninstance; }}知識(shí)目標(biāo):掌握this關(guān)鍵字的使用;掌握初始化塊的作用和使用;組合類的定義和使用;理解單例類的實(shí)現(xiàn)。能力目標(biāo):能夠合理使用this關(guān)鍵字,能夠建立符合業(yè)務(wù)需求的對(duì)成員屬性的訪問控制方式;綜合運(yùn)用靜態(tài)、訪問控制方式等類設(shè)計(jì)的細(xì)節(jié)元素,理解類封裝的保護(hù)和開放的辯證關(guān)系,能夠在不同業(yè)務(wù)場(chǎng)景下,設(shè)計(jì)出符合要求的類;能夠處理多類間的關(guān)系和理解特殊類設(shè)計(jì)模式。素質(zhì)目標(biāo):培養(yǎng)自律自學(xué)能力,明確職業(yè)發(fā)展目標(biāo),構(gòu)建合理的發(fā)展路徑。123驗(yàn)證性實(shí)驗(yàn)--三角形類Triangle的定義和使用(1)定義名為Point的點(diǎn)類,該類中包括橫坐標(biāo)x和和縱坐標(biāo)y,提供包含x,y的構(gòu)造方法;(2)定義名為Triangle的類,其中包含p1,p2,p3表示三角形的三個(gè)頂點(diǎn);(3)顯示聲明Triangle的默認(rèn)構(gòu)造方法,聲明Triangle的帶參構(gòu)造方法;(4)觀察p1,p2,p3的構(gòu)造和Triangle對(duì)象的構(gòu)造之間的先后關(guān)系;(5)提供判斷這個(gè)三點(diǎn)能都構(gòu)成三角形的方法isTriangle;(6)提供計(jì)算這個(gè)三角形的周長(zhǎng)的方法perimeter和面積的方法area;(7)編寫應(yīng)用程序讓用戶輸入三個(gè)點(diǎn)的坐標(biāo),生成Triangle對(duì)象,判斷這三個(gè)點(diǎn)能否構(gòu)成三角形,如果可以輸出他們的周長(zhǎng)和面積;如果不可以請(qǐng)用戶重新輸入三個(gè)點(diǎn)。思考:如果要求三角形的一個(gè)點(diǎn)必須是原點(diǎn),這個(gè)類又該如何設(shè)計(jì)?驗(yàn)證性實(shí)驗(yàn)--三角形類Triangle的定義和使用根據(jù)題目要求繪制UML類圖1驗(yàn)證性實(shí)驗(yàn)--三角形類Triangle的定義和使用根據(jù)UML類圖實(shí)現(xiàn)Java代碼2根據(jù)題目要求繪制UML類圖1原點(diǎn)0xy驗(yàn)證性實(shí)驗(yàn)--三角形類Triangle的定義和使用3編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試根據(jù)UML類圖實(shí)現(xiàn)Java代碼2根據(jù)題目要求繪制UML類圖1publicclassTriangleDemo{ publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{ //TODOAuto-generatedmethodstub Scannerinput=newScanner(System.in,"UTF-8"); PrintStreamout=newPrintStream(System.out,false,"UTF-8"); out.println("請(qǐng)輸入三角形的三個(gè)頂點(diǎn)坐標(biāo):"); double[]coord=newdouble[6]; for(intidx=0;idx<3;idx++){ out.print("第"+idx+"個(gè)頂點(diǎn)的橫坐標(biāo)是:"); coord[2*idx]=input.nextDouble(); out.print("第"+idx+"個(gè)頂點(diǎn)的縱坐標(biāo)是:"); coord[2*idx+1]=input.nextDouble(); } Pointp1=newPoint(coord[0],coord[1]); Pointp2=newPoint(coord[2],coord[3]); Pointp3=newPoint(coord[4],coord[5]); Trianglet=newTriangle(p1,p2,p3); if(t.isTriangle()){ out.println("三角形的周長(zhǎng)是:"+t.perimeter()); out.println("三角形的面積是:"+t.area()); } else out.println("這三個(gè)點(diǎn)無法組成三角形。"); }}驗(yàn)證性實(shí)驗(yàn)--學(xué)生類的定義和使用國內(nèi)某高校iUniversity要設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理系統(tǒng),其中需要設(shè)計(jì)學(xué)生類:(1)該學(xué)生類(Student),需要包含學(xué)號(hào)(Stringsno)、姓名(Stringname)、學(xué)分(doublecredit)屬性,學(xué)生具備聽voidlisten(Stringmsg)、說voidsay()、讀voidread(Stringmsg)、寫voidwrite(Stringmsg)的能力。(2)使用默認(rèn)的構(gòu)造方法創(chuàng)建Student的類對(duì)象,然后對(duì)其成員屬性進(jìn)行賦值;重載構(gòu)造方法,在創(chuàng)建Student類對(duì)象時(shí)同步設(shè)置其成員屬性的值。(3)增加國籍屬性(Stringnationality)。同時(shí)注意到該校招收的大部分學(xué)生都來自中國。為此,我們?cè)谠擃愔刑峁┏跏蓟瘔K,以便后期使用該類時(shí)減少該屬性的頻繁設(shè)置。結(jié)合上面的要求和測(cè)試代碼完成Student類的實(shí)現(xiàn),并補(bǔ)充完成test02和test03兩個(gè)方法的實(shí)現(xiàn)。下面提供測(cè)試程序,其實(shí)例化來自中國的學(xué)生zhangsan、lisi和來自美國的學(xué)生mike,分別調(diào)用他們的聽、說、讀、寫和顯示學(xué)生的個(gè)人信息進(jìn)行測(cè)試。驗(yàn)證性實(shí)驗(yàn)--學(xué)生類的定義和使用根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試驗(yàn)證性實(shí)驗(yàn)--學(xué)生類的定義和使用根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試驗(yàn)證性實(shí)驗(yàn)--學(xué)生類的定義和使用根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試驗(yàn)證性實(shí)驗(yàn)--單例Scanner工具類的設(shè)計(jì)與實(shí)現(xiàn)某系統(tǒng)要求所有的輸入動(dòng)作都必須要求由一個(gè)Sacnner對(duì)象進(jìn)行操作,為此需要為系統(tǒng)設(shè)計(jì)一個(gè)Scanner類對(duì)象的唯一獲取入口。驗(yàn)證性實(shí)驗(yàn)--單例Scanner工具類的設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)性實(shí)驗(yàn)--加法器類Calculator的設(shè)計(jì)和使用該加法器能提供如下特性:(1)包含一個(gè)number表示本位值,包含一個(gè)carry表示進(jìn)位;(2)再提供一個(gè)add運(yùn)算,能夠?qū)崿F(xiàn)兩個(gè)一位二進(jìn)制數(shù)的加運(yùn)算,結(jié)果存放在number和carry中;(3)提供一個(gè)clear方法,能夠?qū)崿F(xiàn)number和carry清零;(4)提供isDisplay屬性和display方法,當(dāng)isDisplay為true時(shí),display方法用于顯示一位二進(jìn)制運(yùn)算的工作示意圖;當(dāng)isDisplay為false時(shí),display方法不工作;(5)利用初始化塊實(shí)現(xiàn)二進(jìn)制一位加法器的初始化工作。編寫這個(gè)Calculator類,能夠滿足下面應(yīng)用程序測(cè)試要求。測(cè)試程序?qū)崿F(xiàn)了加一個(gè)一位二進(jìn)制數(shù)運(yùn)算和使用設(shè)計(jì)好的一位二進(jìn)制加法器實(shí)現(xiàn)一個(gè)兩位二進(jìn)制數(shù)加法器。設(shè)計(jì)性實(shí)驗(yàn)--加法器類Calculator的設(shè)計(jì)和使用二進(jìn)制的一位加法器是計(jì)算機(jī)硬件邏輯的基礎(chǔ),本題要求我們使用軟件模擬該加法器。Ai、Bi為兩個(gè)加數(shù),Ci-1為低位來的進(jìn)位;Si為本位值,Ci為本位產(chǎn)生的進(jìn)位值。加法器是由邏輯電路構(gòu)成,邏輯電路只會(huì)做與、或、非。我們給出它們之間的邏輯關(guān)系如下:Si=Ai^Bi^Ci-1Ci=Ai&Ci-1|Bi&Ci-1|Ai&Bi設(shè)計(jì)性實(shí)驗(yàn)--加法器類Calculator的設(shè)計(jì)和使用根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試設(shè)計(jì)性實(shí)驗(yàn)--加法器類Calculator的設(shè)計(jì)和使用根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試設(shè)計(jì)性實(shí)驗(yàn)--加法器類Calculator的設(shè)計(jì)和使用根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試設(shè)計(jì)性實(shí)驗(yàn)--產(chǎn)品類Product的設(shè)計(jì)和實(shí)現(xiàn)(1)Product包含與業(yè)務(wù)無關(guān)的id,id是一個(gè)13位數(shù)字組成的字符串;產(chǎn)品名稱Stringname;產(chǎn)品類型編號(hào)Stringpid;產(chǎn)品的狀態(tài)intstatus;(2)Product包含產(chǎn)品的生產(chǎn)日期MyDatedateInProduced,其中MyDate類需要自行定義一個(gè)包含年、月、日、時(shí)、分、秒屬性的日期類,并提供構(gòu)造方法、getter、setter方法和toString方法,并根據(jù)各個(gè)時(shí)間要素檢查設(shè)置時(shí)參數(shù)的邏輯性是否正確;(3)Product提供方法構(gòu)造方法、getter、setter方法、toString方法;(4)完成測(cè)試程序,驗(yàn)證各個(gè)功能點(diǎn)是否達(dá)到設(shè)計(jì)要求。設(shè)計(jì)性實(shí)驗(yàn)--產(chǎn)品類Product的設(shè)計(jì)和實(shí)現(xiàn)根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試設(shè)計(jì)性實(shí)驗(yàn)--產(chǎn)品類Product的設(shè)計(jì)和實(shí)現(xiàn)根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試設(shè)計(jì)性實(shí)驗(yàn)--產(chǎn)品類Product的設(shè)計(jì)和實(shí)現(xiàn)根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試設(shè)計(jì)性實(shí)驗(yàn)--產(chǎn)品類Product的設(shè)計(jì)和實(shí)現(xiàn)根據(jù)題目要求繪制UML類圖1根據(jù)UML類圖實(shí)現(xiàn)Java代碼23編寫測(cè)試代碼,對(duì)實(shí)現(xiàn)的類進(jìn)行測(cè)試(1)構(gòu)造方法和setter方法都需要檢查賦值參數(shù)是否符合賦值規(guī)范要求;(2)產(chǎn)品的toString方法需要將pid和status轉(zhuǎn)換為對(duì)于的中文含義,而不是簡(jiǎn)單輸出值;(3)MyDate類中,如果只有年月日信息時(shí),輸出僅包含年月日信息;如果有時(shí)分秒,則輸出年月日時(shí)分秒。設(shè)計(jì)性實(shí)驗(yàn)--Tea茶葉類的設(shè)計(jì)與實(shí)現(xiàn)某茶廠,需要利用信息化來管理茶葉的生產(chǎn)過程,為此需要設(shè)計(jì)一個(gè)名為Tea的類來代表茶葉。這個(gè)類包括:(1)茶分類綠茶(GREENTEA,0)、紅茶(BLACKTEA,1)、烏龍茶(OOLONGTEA,2)、白茶(WHITETEA,3)、黃茶(YELLOWTEA,4)、黑茶(DARKGREENTEA,5),設(shè)置為靜態(tài)常量;(2)茶葉的類型、生產(chǎn)日期、保質(zhì)期、品牌、價(jià)格等屬性,設(shè)置為私有的;要求類型只能選擇a)中提到的分類類型;生產(chǎn)日期為Date類型;保質(zhì)期為long類型,表示多少天;品牌為String類型。(3)提供上述參數(shù)的設(shè)置和獲取方法。(4)茶廠出廠的茶葉的參數(shù)需要通過初始化塊進(jìn)行初始化,同時(shí)提供給經(jīng)銷商時(shí),允許經(jīng)銷商通過

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論