




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目5面向?qū)ο蠡A(chǔ)——助農(nóng)超市購(gòu)物程序《Java程序設(shè)計(jì)案例教程(微課版)(第2版)》項(xiàng)目導(dǎo)入
利用Java編寫程序模擬消費(fèi)者在超市購(gòu)買農(nóng)產(chǎn)品的需求,以幫助農(nóng)民更有效地銷售其產(chǎn)品。從而增強(qiáng)學(xué)生對(duì)農(nóng)村經(jīng)濟(jì)發(fā)展的關(guān)注和責(zé)任感,激勵(lì)他們?cè)诮窈蟮膶W(xué)習(xí)和工作中,積極為社會(huì)發(fā)展貢獻(xiàn)自己的力量。學(xué)習(xí)目標(biāo)?熟悉面向?qū)ο缶幊痰?個(gè)特征。?掌握類的定義,以及對(duì)象的創(chuàng)建與使用。?掌握構(gòu)造方法,以及this和static關(guān)鍵字的使用。?掌握繼承的概念、方法的重寫、super關(guān)鍵字。
?培養(yǎng)社會(huì)責(zé)任感和服務(wù)意識(shí),積極為社會(huì)發(fā)展做出貢獻(xiàn)。(素養(yǎng)目標(biāo))目錄CONTENTS任務(wù)5.1面向?qū)ο蟮奶卣魅蝿?wù)5.2類與對(duì)象任務(wù)5.3
繼承項(xiàng)目實(shí)施
助農(nóng)超市購(gòu)物程序項(xiàng)目實(shí)訓(xùn)
網(wǎng)上點(diǎn)餐系統(tǒng)任務(wù)5.1面向?qū)ο蟮奶卣髅嫦驅(qū)ο蟮奶卣髦饕梢愿爬榉庋b性、繼承性和多態(tài)性。1.封裝性將對(duì)象的屬性和行為封裝起來,盡可能地隱藏內(nèi)部的細(xì)節(jié),只保留一些對(duì)外的接口,使之與外部發(fā)生聯(lián)系,這就是封裝的思想。2.繼承性繼承性主要描述的是類與類之間的關(guān)系。繼承也是一種代碼復(fù)用的手段,通過繼承,可以在無須重新編寫原有類的情況下對(duì)原有類的功能進(jìn)行擴(kuò)展。3.多態(tài)性多態(tài)性指的是在程序中允許出現(xiàn)重名的現(xiàn)象。在父類中定義的屬性和方法被子類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為,這使得同一個(gè)屬性或方法在父類及其各個(gè)子類中具有不同的含義。目錄CONTENTS任務(wù)5.1面向?qū)ο蟮奶卣魅蝿?wù)5.2類與對(duì)象任務(wù)5.3
繼承項(xiàng)目實(shí)施
助農(nóng)超市購(gòu)物程序項(xiàng)目實(shí)訓(xùn)
網(wǎng)上點(diǎn)餐系統(tǒng)目錄CONTENTS任務(wù)5.2類與對(duì)象5.2.1類的定義5.2.2對(duì)象的創(chuàng)建與使用5.2.3構(gòu)造方法5.2.4this關(guān)鍵字5.2.5static關(guān)鍵字5.2.6訪問權(quán)限修飾符新課導(dǎo)入類與對(duì)象是面向?qū)ο缶幊讨休^重要、核心的兩個(gè)基本概念。其中,類是對(duì)某一類事物的抽象描述,而對(duì)象用于表示現(xiàn)實(shí)中該類事物的個(gè)體。5.2.1類的定義在類中可以定義成員變量和成員方法,其中成員變量用于描述對(duì)象的特征,也叫作屬性;成員方法用于描述對(duì)象的行為,可簡(jiǎn)稱為方法。在Java中定義一個(gè)類,語(yǔ)法格式如下:[修飾符]class類名{成員變量的定義;成員方法的定義;}
說明:修飾符包括public、final、abstract等,關(guān)于這些修飾符的含義后文有詳細(xì)介紹,目前在定義類的時(shí)候可不加。5.2.1類的定義【例5-1】定義學(xué)生類。classStudent{ Stringname; intage; voidstudy(){ System.out.println(name+"同學(xué)正在學(xué)習(xí)中。。。。");}}5.2.2對(duì)象的創(chuàng)建與使用Java中,創(chuàng)建類的實(shí)例對(duì)象的語(yǔ)法格式如下:類名對(duì)象名稱=new類名();例如,創(chuàng)建一個(gè)Student類的實(shí)例對(duì)象,代碼如下:Studentstu=newStudent();創(chuàng)建Student類的對(duì)象后,便可以通過對(duì)象的引用來訪問對(duì)象的成員了,語(yǔ)法格式如下:對(duì)象引用.成員publicclassExample5_2{publicstaticvoidmain(String[]args){Studentstu1=newStudent(); ="張三"; stu1.age=20; stu1.study(); Studentstu2=newStudent(); ="李四"; stu2.age=25; stu2.study(); }}5.2.2對(duì)象的創(chuàng)建與使用【例5-2】創(chuàng)建對(duì)象并訪問對(duì)象的成員。任務(wù)實(shí)踐5-1購(gòu)買火車票【任務(wù)描述】在寒暑假期間,學(xué)生購(gòu)買火車票可以享受半價(jià)優(yōu)惠。而如果是普通旅客(兒童、軍人等特殊群體除外),則需要全價(jià)購(gòu)買。設(shè)計(jì)一個(gè)購(gòu)買火車票程序,旅客購(gòu)票時(shí)在控制臺(tái)輸出旅客的姓名、類別、是否全價(jià)購(gòu)票等信息?!救蝿?wù)分析】1.通過任務(wù)描述可知需要定義一個(gè)旅客類Passenger。2.旅客類具有屬性:名字(name)、類別(kind)。3.旅客類具有購(gòu)票功能:定義一個(gè)購(gòu)票(buyTickets())的方法。4.測(cè)試類中創(chuàng)建幾個(gè)旅客對(duì)象并進(jìn)行購(gòu)票。任務(wù)實(shí)踐5-2智能電視機(jī)的使用【任務(wù)描述】智能電視機(jī)是一種具備互聯(lián)網(wǎng)功能的電視機(jī),成為現(xiàn)代家庭娛樂的重要組成部分。編寫一個(gè)程序,模擬智能電視機(jī)的使用。包括顯示電視機(jī)的配置信息、收看電視節(jié)目、播放視頻、投屏、玩游戲等。【任務(wù)分析】1.通過任務(wù)描述可知需要定義一個(gè)智能電視機(jī)類SmartTV。2.智能電視機(jī)具有的屬性:品牌(brand)、型號(hào)(model)、屏幕尺寸(size)。因此,需要在類中定義對(duì)應(yīng)的成員變量。3.智能電視機(jī)具有的功能:顯示配置信息(displayInfo())、收看節(jié)目(watchTV())、播放視頻(showVideo())、投屏(screenProjection()))、玩游戲(playGame())),因此可把這些功能定義為對(duì)應(yīng)的成員方法。4.測(cè)試類創(chuàng)建兩個(gè)智能電視對(duì)象并測(cè)試其各項(xiàng)功能。任務(wù)實(shí)踐5-3游戲賬號(hào)的充值與消費(fèi)【任務(wù)描述】編寫一個(gè)游戲賬號(hào)充值和消費(fèi)程序,實(shí)現(xiàn)充值和消費(fèi)功能。【任務(wù)分析】1.通過任務(wù)描述可知,需要定義一個(gè)游戲帳戶類GameAccount實(shí)現(xiàn)游戲帳戶的概念。2.賬戶的屬性包括賬號(hào)和存款余額,所以需要在類中定義兩個(gè)成員變量:“帳號(hào)”(accountNum)和“游戲幣余額”(leftMoney)。3.對(duì)賬戶的操作包括充值、消費(fèi)、查詢余額,所以在類中再定義三個(gè)成員方法:“充值”(saveMoney())、“消費(fèi)”(getMoney())、“查詢余額”(getleftMoney())。需要注意:消費(fèi)的方法中需要先判斷要消費(fèi)的游戲幣數(shù)額是否小于等于余額,如果是則能消費(fèi),如果不是則給出提示:“當(dāng)前賬戶余額不夠”。4.編寫測(cè)試類,在main()方法中創(chuàng)建一個(gè)GameAccount類的對(duì)象ga,假設(shè)ga的賬號(hào)為:123456,初始的存款余額為1000游戲幣。首先向該賬戶充值800游戲幣,再消費(fèi)出600游戲幣,繼續(xù)再消費(fèi)2000游戲幣。5.2.3構(gòu)造方法構(gòu)造方法是類的一種特殊方法,可用來初始化類的一個(gè)實(shí)例對(duì)象。它在創(chuàng)建對(duì)象(使用new關(guān)鍵字)之后自動(dòng)調(diào)用。構(gòu)造方法有以下特點(diǎn)。(1)方法名與類名相同。(2)沒有任何返回值,連void關(guān)鍵字都不需要。(3)只能與new關(guān)鍵字結(jié)合使用。5.2.3構(gòu)造方法【例5-4】在Student類中定義構(gòu)造方法。classStudent{ Stringname; intage; Student(Stringn,inta){//定義構(gòu)造方法 name=n; age=a; } voidstudy(){ System.out.println(name+"同學(xué)
年齡"+age+"正在學(xué)習(xí)中。。。。"); }}publicclassExample5_4{ publicstaticvoidmain(String[]args){ Studentstu1=newStudent("張三",18); stu1.study(); Studentstu2=newStudent("李四",20); stu2.study(); }}5.2.3構(gòu)造方法說明:如果開發(fā)者沒有為一個(gè)類定義任何構(gòu)造方法,那么Java會(huì)自動(dòng)為每個(gè)類創(chuàng)建一個(gè)默認(rèn)的構(gòu)造方法。這個(gè)默認(rèn)的構(gòu)造方法沒有任何參數(shù),在其方法體中也沒有任何代碼,即什么也不做。一旦為該類定義了構(gòu)造方法,系統(tǒng)就不再提供默認(rèn)的構(gòu)造方法了。為了避免出現(xiàn)錯(cuò)誤,在一個(gè)類中如果定義了有參的構(gòu)造方法,最好再定義一個(gè)無參的構(gòu)造方法。一般情況下,構(gòu)造方法是用來在創(chuàng)建對(duì)象時(shí)為對(duì)象的屬性賦初始值的。一個(gè)類中可以定義多個(gè)構(gòu)造方法,這叫作構(gòu)造方法的重載,在后文中會(huì)有詳細(xì)的介紹。5.2.4this關(guān)鍵字Java提供了一個(gè)關(guān)鍵字this,它指代當(dāng)前對(duì)象,可用于表示訪問這個(gè)對(duì)象的成員。對(duì)例5-4定義的構(gòu)造方法進(jìn)行修改,代碼如下:classStudent{ Stringname; intage; Student(Stringname,intage){ =name; this.age=age; }…//Student類的其他方法}5.2.4this關(guān)鍵字this這個(gè)關(guān)鍵字還有第二種用法。一個(gè)類中可以在一個(gè)構(gòu)造方法中使用“this([參數(shù)1,參數(shù)2,…])”的形式來調(diào)用其他的構(gòu)造方法。【例5-5】構(gòu)造方法的調(diào)用。classStudent{ Stringname; intage; Student(Stringname){ =name; } Student(Stringname,intage){ this(name); this.age=age; } voidstudy(){ System.out.println(name+"同學(xué)
年齡"+age+"正在學(xué)習(xí)中。。。。"); }}publicclassExample5_5{ publicstaticvoidmain(String[]args){ Studentstu1=newStudent("張三"); stu1.study(); Studentstu2=newStudent("李四",20); stu2.study(); }}5.2.4this關(guān)鍵字在一個(gè)構(gòu)造方法中使用this調(diào)用另一個(gè)構(gòu)造方法時(shí),需要注意以下幾點(diǎn)。(1)不能在成員方法中使用this來調(diào)用構(gòu)造方法。(2)在構(gòu)造方法中,使用this調(diào)用另外一個(gè)構(gòu)造方法的語(yǔ)句必須位于第一行,且只能出現(xiàn)一次。(3)不能在兩個(gè)構(gòu)造方法中使用this互相調(diào)用。5.2.5static關(guān)鍵字static是Java中的一個(gè)關(guān)鍵字或者修飾符,它表示靜態(tài),可用于修飾類中的成員變量、成員方法以及代碼塊。1.靜態(tài)變量在Java中,可以通過static關(guān)鍵字來修飾類的成員變量,該變量稱為靜態(tài)變量。靜態(tài)變量被該類所有的實(shí)例對(duì)象共享。在訪問時(shí),可以通過“對(duì)象名.靜態(tài)變量名”的形式來訪問,還可以通過“類名.靜態(tài)變量名”的形式來訪問。5.2.5static關(guān)鍵字【例5-6】靜態(tài)變量的使用。classPerson{ staticStringcountry; }publicclassExample5_5{publicstaticvoidmain(String[]args){ Personp1=newPerson();p1.country="中國(guó)"; Personp2=newPerson();System.out.println(p2.country);Person.country="中華人民共和國(guó)"; System.out.println(p1.country);System.out.println(p2.country);}}5.2.5static關(guān)鍵字2.靜態(tài)方法在實(shí)際開發(fā)中,有時(shí)希望在不創(chuàng)建對(duì)象的情況下就可以調(diào)用某個(gè)方法,換句話說,該方法不必和對(duì)象綁在一起。要達(dá)到這樣的效果,只需要在類中定義的方法前加上static關(guān)鍵字即可,通常稱這種方法為靜態(tài)方法。同靜態(tài)變量一樣,靜態(tài)方法可以使用“類名.靜態(tài)方法名”的方式來訪問,也可以通過“對(duì)象名.靜態(tài)方法名”來訪問。5.2.5static關(guān)鍵字【例5-7】靜態(tài)方法的使用。classStudent{ staticvoidsayHello(){ System.out.println("你好!我是一名學(xué)生!");}}publicclassExample5_7{publicstaticvoidmain(String[]args){ Student.sayHello();Studentstu=newStudent();stu.sayHello();}}注意:靜態(tài)方法中只能訪問static修飾的成員。5.2.5static關(guān)鍵字3.靜態(tài)代碼塊代碼塊就是用花括號(hào)將多行代碼封裝在一起,形成的獨(dú)立代碼區(qū)。用static關(guān)鍵字修飾的代碼塊叫作靜態(tài)代碼塊。當(dāng)類被加載時(shí),靜態(tài)代碼塊會(huì)執(zhí)行。由于類只被加載一次,因此靜態(tài)代碼塊只執(zhí)行一次。5.2.5static關(guān)鍵字【例5-8】靜態(tài)代碼塊的使用。classStudent{ Stringname; Student(Stringname){ =name; System.out.println("構(gòu)造方法被調(diào)用了"); } voidstudy(){ System.out.println(name+"同學(xué)正在學(xué)習(xí)中。。。。"); } static{ System.out.println("初始化操作"); }}publicclassExample5_8{publicstaticvoidmain(String[]args){ Studentstu1=newStudent("張三"); stu1.study(); Studentstu2=newStudent("李四"); stu2.study(); }} 【任務(wù)描述】編寫程序模擬兩個(gè)村莊共用同一口井水。任意一個(gè)村莊都可以取用井里的水,也都可以查看井里的水量?!救蝿?wù)分析】1.通過任務(wù)描述可知,需要定義一個(gè)村莊類Village。2.Village類有一個(gè)成員變量num表示村莊的人數(shù),一個(gè)成員變量waterAmount用于模擬井水的水量,該成員變量是靜態(tài)的;還有一個(gè)方法setWaterAmount()用于設(shè)置井水的初始水量、一個(gè)方法lookWaterAmount()用于查看井水水量,這兩個(gè)方法都是靜態(tài)的,還有一個(gè)非靜態(tài)方法drinkWater()用于表示該村莊的人取用水(喝水)。3.測(cè)試類中創(chuàng)建兩個(gè)村莊,一個(gè)村莊改變了waterAmount的值,另一個(gè)村莊查看waterAmount的值。任務(wù)實(shí)踐5-4共飲同井水5.2.6訪問權(quán)限修飾符Java采用訪問權(quán)限修飾符來控制類及類中成員的訪問權(quán)限,分為以下4種級(jí)別:(1)private(類訪問級(jí)別):如果類的成員被private訪問權(quán)限修飾符修飾,那么這個(gè)成員只能被該類的其他成員訪問,其他類無法直接訪問。(2)default(包訪問級(jí)別):如果一個(gè)類或者類的成員不使用任何訪問權(quán)限修飾符修飾,那么稱這個(gè)類的訪問權(quán)限級(jí)別為默認(rèn)訪問權(quán)限級(jí)別(包訪問級(jí)別),表示這個(gè)類或者類的成員只能被本包中的類訪問。(3)protected(子類訪問級(jí)別):如果一個(gè)類的成員被protected訪問權(quán)限修飾符修飾,那么這個(gè)成員既能被同一包下的類訪問,也能被不同包中該類的子類訪問。(4)public(公共訪問級(jí)別):如果一個(gè)類或者類的成員被public訪問權(quán)限修飾符修飾,那么這個(gè)類或者類的成員能被所有的類訪問,無論訪問類與被訪問類是否在同一個(gè)包中。5.2.6訪問權(quán)限修飾符訪問范圍訪問權(quán)限修飾符privatedefaultprotectedpublic同一類√√√√同一包中的類
√√√不同包中的子類
√√其他包中的類
√目錄CONTENTS任務(wù)5.1面向?qū)ο蟮奶卣魅蝿?wù)5.2類與對(duì)象任務(wù)5.3繼承項(xiàng)目實(shí)施
助農(nóng)超市購(gòu)物程序項(xiàng)目實(shí)訓(xùn)
網(wǎng)上點(diǎn)餐系統(tǒng)目錄CONTENTS任務(wù)5.3繼承5.3.1繼承的概念5.3.2方法的重寫5.3.3super關(guān)鍵字繼承在已經(jīng)存在的類的基礎(chǔ)上進(jìn)行擴(kuò)展,從而產(chǎn)生新的類。已經(jīng)存在的類稱為父類、基類或超類,而新產(chǎn)生的類稱為子類或派生類。在子類中,不僅包含父類的屬性和方法,還可以增加新的屬性和方法。Java中子類繼承父類的語(yǔ)法格式如下:修飾符classSubClassextendsSuperClass{//類的主體}5.3.1繼承的概念5.3.1繼承的概念【例5-9】繼承的使用。classPet{Stringname;
voideat(){
System.out.println(name+"寵物吃東西");}}classDogextendsPet{
publicvoidprintName(){
System.out.println("name="+name);}}publicclassExample5_8{
publicstaticvoidmain(String[]args){Dogdog=newDog();
="小黑";
dog.printName();
dog.eat();
}}5.3.1繼承的概念在類的繼承中,需要注意一些問題,具體如下。(1)在Java中,類只支持單繼承,不允許多重繼承,也就是說,一個(gè)類只能有一個(gè)直接父類。(2)多個(gè)類可以繼承一個(gè)父類。(3)在Java中,多層繼承是可以的,即一個(gè)類的父類可以再去繼承另外的父類。(4)在Java中,子類和父類是一種相對(duì)概念,也就是說,一個(gè)類是某個(gè)類的父類的同時(shí)也可以是另一個(gè)類的子類。5.3.2方法的重寫在繼承關(guān)系中,子類會(huì)自動(dòng)繼承父類中定義的方法,但有時(shí)子類并不想原封不動(dòng)地繼承父類的方法,而想做一定的修改,這就需要對(duì)父類的方法進(jìn)行重寫。注意:(1)在子類中重寫的方法需要和父類中被重寫的方法具有相同的方法名、參數(shù)列表以及返回值類型。(2)子類在重寫父類方法時(shí),不能使用比父類中被重寫的方法更嚴(yán)格的訪問權(quán)限。5.3.2方法的重寫【例5-10】方法的重寫。classPet{ voideat(){ System.out.println("寵物吃東西");}}classDogextendsPet{ voideat(){ System.out.println("狗吃骨頭");}}publicclassExample5_9{ publicstaticvoidmain(String[]args){Dogdog=newDog(); dog.eat(); }}5.3.3super關(guān)鍵字當(dāng)子類重寫父類的方法后,子類對(duì)象將無法訪問父類被重寫的方法。為了解決這一問題,在Java中專門提供了一個(gè)super關(guān)鍵字。它可用于在子類中訪問父類的成員(成員變量、成員方法和構(gòu)造方法)。super關(guān)鍵字的用法如下:(1)super關(guān)鍵字可以用來引用父類的實(shí)例變量、調(diào)用父類方法(2)super()可以用來調(diào)用父類的構(gòu)造方法。5.3.3super關(guān)鍵字【例5-10】super關(guān)鍵字的使用。classPet{
Stringname="寵物";
voideat(){
System.out.println("寵物吃東西");}}classDogextendsPet{
Stringname="犬類"; voideat(){
System.out.println("狗吃骨頭");super.eat();
} voidprintName(){
System.out.println("name="+name); System.out.println("="+); }}publicclassExample5_10{
publicstaticvoidmain(String[]args){Dogdog=newDog();
dog.eat();
dog.printName();
}}5.3.3super關(guān)鍵字【例5-11】super關(guān)鍵字的使用。classPet{
publicPet(Stringname){
System.out.println("我是一只"+name);}}classDogextendsPet{
publicDog(){super("沙皮狗");
}}publicclassExample5_11{
publicstaticvoidmain(String[]args){Dogdog=newDog();
}}注意:通過super()調(diào)用父類構(gòu)造方法的代碼,必須位于子類構(gòu)造方法體的第一行,且只能出現(xiàn)一次。5.3.3super關(guān)鍵字在例5-11中,如果將“super("沙皮狗");”這一行代碼注釋掉,程序編譯后將報(bào)錯(cuò),會(huì)提示“父類構(gòu)造方法Pet()沒有被定義,必須顯式地調(diào)用另一個(gè)構(gòu)造方法”。這里出錯(cuò)的原因是,在子類的構(gòu)造方法中一定會(huì)調(diào)用父類的某個(gè)構(gòu)造方法,可以在子類的構(gòu)造方法中通過super()指定調(diào)用父類的哪個(gè)構(gòu)造方法,如果沒有指定,在子類的構(gòu)造方法中會(huì)自動(dòng)調(diào)用父類無參的構(gòu)造方法。而在上面的代碼中,因?yàn)槎x了有參的構(gòu)造方法“Pet(Stringname)”,而沒有定義無參的構(gòu)造方法Pet(),所以報(bào)錯(cuò)。為了解決上述程序的編譯錯(cuò)誤,可以在子類中調(diào)用父類已有的構(gòu)造方法,當(dāng)然也可以選擇在父類中定義無參的構(gòu)造方法。5.3.3super關(guān)鍵字【例5-12】在Pet類中定義無參構(gòu)造方法classPet{
publicPet(){
System.out.println("我是一只寵物");} publicPet(Stringname){
System.out.println("我是一只"+name);}}classDogextendsPet{
publicDog(){super("沙皮狗");
}}publicclassExample5_12{
publicstaticvoidmain(String[]args){Dogdog=newDog();
}}【任務(wù)描述】在物流運(yùn)輸領(lǐng)域,卡車和火車是兩種常見的運(yùn)輸方式,它們的計(jì)費(fèi)方式也不同。下面列出了卡車和火車不同的計(jì)費(fèi)方式:卡車:運(yùn)費(fèi)=重量x距離x120,當(dāng)距離大于1000(km)或者重量大于60(t)的時(shí)候拒載?;疖嚕寒?dāng)距離在900(km)內(nèi)(包含900)時(shí),運(yùn)費(fèi)=重量x距離X250,大于900(km)時(shí),運(yùn)費(fèi)=重量x距離x300?!救蝿?wù)分析】1.通過任務(wù)描述可知,需要定義一個(gè)卡車類和火車類,卡車類中有屬性:重量、距離,方法:計(jì)費(fèi),同樣火車類中也有屬性:重量、距離,方法:計(jì)費(fèi)??紤]到這兩個(gè)類之間的聯(lián)系以及代碼的重用性,可定義一個(gè)車類作為這兩個(gè)類的父類。車類中具有的屬性為重量和距離,具有方法為計(jì)費(fèi)。2.定義子類卡車類、火車類,在這兩個(gè)類中分別重寫計(jì)費(fèi)的方法。3.編寫測(cè)試類,創(chuàng)建卡車和火車類對(duì)象,調(diào)用計(jì)算運(yùn)費(fèi)方法。任務(wù)實(shí)踐5-5卡車與火車的運(yùn)費(fèi)目錄CONTENTS任務(wù)5.1面向?qū)ο蟮奶卣魅蝿?wù)5.2類與對(duì)象任務(wù)5.3繼承項(xiàng)目實(shí)施助農(nóng)超市購(gòu)物程序項(xiàng)目實(shí)訓(xùn)
網(wǎng)上點(diǎn)餐系統(tǒng)項(xiàng)目實(shí)施項(xiàng)目分析本項(xiàng)目使用所學(xué)知識(shí)編寫一個(gè)助農(nóng)超市購(gòu)物程序。購(gòu)物時(shí),如果購(gòu)物者所要購(gòu)買的農(nóng)產(chǎn)品在超市中有,則提示購(gòu)物者買到了某產(chǎn)品;如果超市中沒有購(gòu)物者所需要的農(nóng)產(chǎn)品,則提示購(gòu)物者白跑了一塌,在超市中什么都沒有買到。1.通過任務(wù)的描述可知,此程序中包含了超市、農(nóng)產(chǎn)品和購(gòu)物者3個(gè)對(duì)象。既然是去購(gòu)買農(nóng)產(chǎn)品,那么可以先定義農(nóng)產(chǎn)品對(duì)象,農(nóng)產(chǎn)品對(duì)象需要有自己的名稱屬性。2.由于所有的農(nóng)產(chǎn)品是在超市中賣的,所以還需要定義一個(gè)超市對(duì)象。每個(gè)超市都會(huì)有自己的名稱和用于存放農(nóng)產(chǎn)品的倉(cāng)庫(kù)。由于倉(cāng)庫(kù)中會(huì)有很多農(nóng)產(chǎn)品,所以這里的倉(cāng)庫(kù)可以用數(shù)組表示,超市的主要功能是賣農(nóng)產(chǎn)品,還要有個(gè)賣貨的方法。3.由于購(gòu)物者是人,所以還需要定義一個(gè)Person對(duì)象,該對(duì)象需要有名稱屬性,還要有一個(gè)購(gòu)物的方法。4.最后編寫測(cè)試類,在其main方法中,需要?jiǎng)?chuàng)建最后編寫測(cè)試類,在其main方法中,需要?jiǎng)?chuàng)建商品對(duì)象、超市對(duì)象以及人,并使用這些對(duì)象中定義的方法實(shí)現(xiàn)購(gòu)物程序?qū)ο?、超市?duì)象以及人,并使用這些對(duì)象中定義的方法實(shí)現(xiàn)購(gòu)物程序。項(xiàng)目實(shí)施項(xiàng)目實(shí)施關(guān)鍵代碼如下://定義超市類publicclassSupermarket{
。。。。。。 //2.定義貨架數(shù)組 publicvoidsetProductArr(Product[]productArr){ ductArr=productArr; } //3.賣貨方法 Productsell(Stringname){//傳入要購(gòu)買的農(nóng)產(chǎn)品名稱 for(inti=0;i<productArr.length;i++){//遍歷農(nóng)產(chǎn)品數(shù)組 if(productArr[i].getProductName()==name){ returnproductArr[i]; } } returnnull; }}項(xiàng)目實(shí)施項(xiàng)目實(shí)施關(guān)鍵代碼如下://定義購(gòu)物者類publicclassPerson{
。。。。。。 //2.購(gòu)買方法 Productshopping(Supermarketmarket,Stringname){ returnmarket.sell(name); }}項(xiàng)目實(shí)施項(xiàng)目實(shí)施關(guān)鍵代碼如下://測(cè)試類中部分代碼 Productp1=newProduct("土豆"); Productp2=newProduct("玉米"); Productp3=newProduct("地瓜"); Productp4=newProduct("花生"); Productp5=newProduct("大白菜"); Productp6=newProduct("油菜"); Productp7=newProduct("
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園小班數(shù)學(xué)教案《找圓形》
- 2025年中小學(xué)心理健康教育教師考試試題及答案
- 保密協(xié)議、競(jìng)業(yè)禁止協(xié)議與培訓(xùn)
- 針灸科胃痛病例分享
- 小學(xué)教育教學(xué)知識(shí)
- 2025年工程管理與咨詢能力測(cè)試卷及答案
- 2025年教育技術(shù)學(xué)期末考試試題及答案
- 2025年社會(huì)調(diào)查與統(tǒng)計(jì)分析考試試卷及解答
- 2025年社區(qū)護(hù)理認(rèn)證考試試題及答案
- 2025屆北京市101中學(xué)英語(yǔ)七下期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含答案
- 70歲以上的換領(lǐng)駕駛證三力測(cè)試題答案
- 藥品售后服務(wù)承諾書
- 露天礦防火安全知識(shí)講座
- 2024年山東煙臺(tái)財(cái)金集團(tuán)招聘筆試參考題庫(kù)含答案解析
- GB/T 43234-2023成型模斜導(dǎo)柱
- 馬工程版《中國(guó)經(jīng)濟(jì)史》各章思考題答題要點(diǎn)及詳解
- 中建公路工程10T龍門吊安拆方案
- 2023年石獅市國(guó)企招聘考試基礎(chǔ)題庫(kù)
- OBE理念下的一流專業(yè)和課程建設(shè)
- 游戲俱樂部群公告范本
- 國(guó)家玩具安全技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論