Java程序設計(第3版)課件 單元2-任務2 借書卡程序設計_第1頁
Java程序設計(第3版)課件 單元2-任務2 借書卡程序設計_第2頁
Java程序設計(第3版)課件 單元2-任務2 借書卡程序設計_第3頁
Java程序設計(第3版)課件 單元2-任務2 借書卡程序設計_第4頁
Java程序設計(第3版)課件 單元2-任務2 借書卡程序設計_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

任務二:借書卡程序設計單元二:面向對象程序設計教學目標知識目標類的方法組成部分;定義和使用類的方法;變量作用域;定義包和導入包的關鍵字;構造方法實現(xiàn)對象成員的初始化;方法重載;對構造方法進行重載。能力目標能會定義和使用類的方法;能會正確理解變量的作用域;能會使用包組織Java工程;運用構造方法完成對象實例化;能會正確區(qū)分和使用方法重載。教學內(nèi)容4任務陳述123知識準備任務實施任務拓展任務實訓5任務描述:借書卡是學生日常生活重要組成部分。每張借書卡信息包含賬號、持卡人姓名、身份證號碼、地址、已借書數(shù)、可借書數(shù)、本次借書數(shù)、本次還書數(shù)。使用借書卡還可以借書、還書和查詢。要求:根據(jù)持卡人不同操作,顯示不同信息。當借書操作后,顯示本次借書數(shù)及已借書數(shù);當還書操作時,顯示本次還書數(shù)和已借書數(shù)。運行結果:1.任務陳述2.知識準備2.4類的方法2.4.1定義類的方法Java類中方法的聲明采用以下格式:[訪問修飾符]<修飾符>返回值類型方法名稱([參數(shù)列表]){方法體}1.返回值類型:表示方法返回值的類型。如果方法不返回任何值,它必須聲明為void(空)。對于有返回值的方法,方法中一定有return語句,方法的返回值類型和return語句后面的類型一樣。例如,如果一個方法中含有代碼return“aaaa”;那么包含該句的方法返回值是字符型。接收方法返回值的變量也必須與指定方法返回值的類型相兼容。2.方法名稱:可以是任何合法標識符,但具有意義,第一個字母小寫。3.參數(shù)列表:允許將參數(shù)值傳遞到方法中。列舉的元素由逗號分開,而每一個元素包含一個類型和一個標識符,也稱之為形參。2.知識準備2.1.2使用類的方法對象創(chuàng)建以后,使用“.”操作符實現(xiàn)對其方法調用,方法中的局部變量被分配內(nèi)存空間,方法執(zhí)行完畢,局部變量即刻釋放內(nèi)存。1.無參方法的調用類的方法在使用時一般要先創(chuàng)建類的對象,再通過對象調用方法。

例如,定義Person類的對象zhangsan: Personzhangsan=newPerson();然后通過對象調用類的方法。例如調用學習方法:zhangsan.study();//study方法返回值為String類型如果需要利用study()方法的返回值,可以將返回結果賦給同一類型的變量。例如:Strings1=zhangsan.study();2.知識準備2.有參方法的調用同樣在定義了類的對象后調用,并需要傳入實際的參數(shù),此時的參數(shù)稱為實際參數(shù),簡稱實參。實參必須與方法定義中的形參一致,所謂的一致是要求參數(shù)個數(shù)、參數(shù)類型、參數(shù)的排列順序一致。

例如,定義Person類的對象zhangsan,通過對象調用類的play方法,play方法中含有一個String類型的變量:zhangsan.play(“football”); //對象名.

play方法

同樣如果需要利用方法的返回值,可以將返回結果賦給同一類型變量。2.知識準備3.靜態(tài)方法的調用靜態(tài)方法的調用無需定義對象,可以通過類名直接使用,我們也稱這種方法為類方法。

定義格式:[public]static返回值方法名([參數(shù)列表]){…}

調用格式:類名.方法名(實參1,實參2,……);

例如,在類Person中定義一個靜態(tài)方法eat(): publicstaticvoideat(){ …… }那么,靜態(tài)方法的調用:Person.eat();

注意:靜態(tài)方法內(nèi)部只能調用靜態(tài)方法和靜態(tài)變量。

【實例2-2】計算立方體的體積程序設計2.知識準備2.5構造方法創(chuàng)建類的對象時,使用new關鍵字和一個與類名相同的方法來完成,這個方法是在實例化過程中被調用的,稱之為構造方法。構造方法區(qū)別于普通的方法,有幾個明顯的特點:它的名字必須與它所在的類的名字完全相同。不返回任何數(shù)據(jù)類型,也不需要使用void聲明。它的作用是創(chuàng)建對象并初始化成員變量。在創(chuàng)建對象時,系統(tǒng)會自動調用類的構造方法。構造方法一般都用public來聲明,這樣才能在程序任意位置創(chuàng)建對象。每個類至少有一個構造方法。如果不寫構造方法,Java將提供一個默認的不帶參的方法體為空的構造方法。格式:

[訪問權限]類名稱([參數(shù)1,參數(shù)2,……]){ //程序語句; //構造方法沒有返回值 }

注意:構造方法不能像成員方法那樣直接被對象調用,只能在new運算符實例化對象時,被系統(tǒng)自動調用。2.知識準備2.知識準備構造方法分類構造方法根據(jù)參數(shù)進行了分類:無參構造方法和有參構造方法。1.無參構造方法

例如:publicclassPeople{ publicPeople(){ ……//使用固定值初始化成員變量}}

那么在含有main方法的測試類中實例化People對象時:Peoplep1=newPeople();注意:無參構造方法可以不寫,類中默認含有一個無參構造方法,并且該構造方法的方法體內(nèi)沒有語句。而使用默認值初始化對象成員變量,數(shù)值型變量初始為0,布爾型初始為false,字符型初始為“\0”,字符串初始為null;

2.知識準備2.有參構造方法

例如:publicclassPeople{ intage; Stringname; publicPeople(intmyAge,StringmyName){ age=myAge;name=myName;}} 那么在含有main方法的測試類中實例化People對象時:Peoplep1=newPeople(20,”zhangsan”);上面的實例化就可以看出是把成員變量進行了動態(tài)的賦值。注意:當定義了有參的構造方法后,無參構造方法將不再存在,如果還想使用無參的構造方法進行實例化對象,就需要顯性的寫出無參構造方法。

2.知識準備2.3方法重載2.3.1方法重載的概念方法重載是指多個方法享有相同的名字,但是這些方法的參數(shù)必須不同,所謂的不同是指:參數(shù)的個數(shù)不同,參數(shù)類型不同,參數(shù)的順序不同。返回類型不能用來區(qū)分重載的方法。在這種情況下,該方法就叫被重載了,這個過程稱為方法的重載。當一個重載方法被調用時方法名是一樣的,因此Java用參數(shù)的類型、(或)數(shù)量、(或)順序來選擇實際調用的重載方法。例如:System.out.println();里面的println這個方法就是重載方法。注意:方法的重載要使用恰當,當一個動作(方法)分別接受不同的指令(參數(shù))產(chǎn)生不同的效果,可以使用。但過度的使用將會降低程序的可讀性。參數(shù)不同是區(qū)分重載方法的關鍵因素,參數(shù)不同主要包括以下方面的不同:參數(shù)類型不同。例如:publicvoidmethod(Strings);publicvoidmethod(ints);參數(shù)個數(shù)不同。例如:publicvoidmethod(Strings,inti);publicvoidmethod(Strings);參數(shù)順序不同。例如:publicvoidmethod(Strings,inti);publicvoidmethod(inti,Strings);2.知識準備【實例2-4】求圓形的面積,要求用戶輸入任何類型的數(shù)據(jù)后都要能得到最終的面積值。publicclassMethodOverloading{ finalfloatPI=3.14; doublecalArea(doubler){ returnPI*r*r; } floatcalArea(floatr){ returnPI*r*r; } floatcalArea(intr){ returnPI*r*r; } folatcalArea(Stringr){ floati=Float.parseInt(r); returnPI*r*r;

}}可以發(fā)現(xiàn)方法重載主要目的是為了滿足在不同輸入的情況下依然可以得到進行相同或相似的處理。在編程上有些麻煩,但是在使用性和靈活性得到了加強。由于實現(xiàn)了Java在編譯時的方法的多種狀態(tài),所以有時也成為靜態(tài)多態(tài)。2.知識準備構造方法重載不僅普通方法可以重載,構造方法也可以重載。只要構造方法的參數(shù)個數(shù)不同,或是類型不同,便可定義多個名稱相同的構造方法?!緦嵗?-5】利用構造函數(shù)重載創(chuàng)建對不同變量初始化的對象publicclassRectangle{ doublewidth; doublelength; Rectangle(){//直接初始化為數(shù)值 width=1; length=5; }

Rectangle(doublex){//把兩個變量初始化為相同傳入值

width=x; length=x; }

Rectangle(doublew,doublelen){//分別對兩個屬性初始化不同的值

width=w;

length=len; }

}}2.知識準備2.6變量的作用域變量聲明的位置決定變量作用域。Java變量的范圍有四個級別:類級、對象實例級、方法級、塊級。

類級變量又稱全局級變量,在對象產(chǎn)生之前就已經(jīng)存在,就是static

修飾的靜態(tài)變量。

對象實例級,就是成員變量,它可以使用在整個類和對象中。

方法級:就是在方法內(nèi)部定義的變量,就是局部變量。塊級:就是定義在一個塊內(nèi)部的變量,變量的生存周期就是這個塊,

出了這個塊就消失了,比如if、for語句的塊。注意:后面兩個級別變量作用域的判斷只需要記住:在變量聲明的地方找到離它最近的一對大括號就是它的作用域,出了這對大括號就不能用了。2.知識準備2.5定義包和導入包的關鍵字包是Java提供的文件組織形式,采用類似于文件夾的形式。包提供了訪問級別控制和命名空間管理。不同的包中允許出現(xiàn)相同名字的文件。1.定義包格式:package<頂層包名>[.子包名1][.子包名2]…[.子包名n];例如:依照地域范圍+制作人+功能分類來定義包

package.can.dao2.導入包

格式:package<頂層包名>[.子包名1][.子包名2]…[.類名|*];

例如:導入系統(tǒng)類庫中的Date表示日期的類。

importjava.util.Date;

注意:在Java中,java.lang包不需要使用import手動導入,系統(tǒng)自動位置導入,因此在該保內(nèi)存放了很多常用的基礎的類,例如Math。1.解決步驟本任務中行為有借書、還書和查詢。在BookCard類分別定義了3個方法borrow(int);TheReturn(int);query()。打開Eclipse,創(chuàng)建BookCard類;在類大括號內(nèi)進行屬性定義;在類的大括號內(nèi)定義3個方法,表示借書、還書和查詢;在BookCard類的main方法中,創(chuàng)建一個BookCard類的對象;利用創(chuàng)建的BookCard對象,使用對象名.方法的形式調用方法,完成具體的功能;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論