Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目6 面向?qū)ο蟪绦蛟O(shè)計(jì)_第1頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目6 面向?qū)ο蟪绦蛟O(shè)計(jì)_第2頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目6 面向?qū)ο蟪绦蛟O(shè)計(jì)_第3頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目6 面向?qū)ο蟪绦蛟O(shè)計(jì)_第4頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì) 課件 項(xiàng)目6 面向?qū)ο蟪绦蛟O(shè)計(jì)_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目6面向?qū)ο蟪绦蛟O(shè)計(jì)學(xué)習(xí)目標(biāo)知識(shí)技能目標(biāo):能正確定義類和對(duì)象能正確使用數(shù)組和集合能正確使用異常處理語句職業(yè)素養(yǎng)目標(biāo):具備嚴(yán)謹(jǐn)細(xì)致、規(guī)范編碼的職業(yè)素養(yǎng),提高問題解決與創(chuàng)新能力具備較強(qiáng)的職業(yè)道德和責(zé)任心,提高代碼審查和質(zhì)量控制的能力課證融通學(xué)習(xí)內(nèi)容與“大數(shù)據(jù)應(yīng)用開發(fā)(Java)”職業(yè)技能等級(jí)標(biāo)準(zhǔn)(初級(jí))對(duì)應(yīng)關(guān)系工作任務(wù)職業(yè)技能要求1.2面向過程代碼編寫(初級(jí))1.2.5能熟練運(yùn)用數(shù)組存取數(shù)據(jù);1.3面向?qū)ο蟠a編寫(初級(jí))1.3.1理解類和對(duì)象機(jī)制,熟練運(yùn)用Java的面向?qū)ο髾C(jī)制,用“類”的語法封裝對(duì)象的行為和狀態(tài);1.3.4能熟練運(yùn)用Java的包和訪問控制機(jī)制提升代碼安全性。1.1Java高級(jí)API編程(中級(jí))1.1.1能對(duì)數(shù)據(jù)進(jìn)行結(jié)構(gòu)化和非結(jié)構(gòu)化分析,熟練運(yùn)用List、Set、Map等接口及其子類存取復(fù)雜數(shù)據(jù)對(duì)象;1.2Java高級(jí)機(jī)制編程(中級(jí))1.2.3能運(yùn)用Java異常處理機(jī)制編寫更健壯的Java程序;任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1在學(xué)生管理系統(tǒng)中,可以查看學(xué)生和班級(jí)的基本信息,學(xué)生信息包括學(xué)號(hào)、姓名、年齡、電話號(hào)碼等。班級(jí)信息包含班級(jí)ID,班級(jí)名稱等信息。本任務(wù)要求:識(shí)別學(xué)生管理系統(tǒng)中的類,并完成學(xué)生類的定義。任務(wù)詳解任務(wù)描述任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1技能點(diǎn)1:根據(jù)需求定義類語法:[訪問控制符][修飾符]class類名{//聲明屬性//定義構(gòu)造方法//定義成員方法}技術(shù)準(zhǔn)備1.定義類使用說明:(1)類的訪問控制符用于限定允許訪問該類的范圍,可以是:public或者缺省。public類代表可以在任意范圍訪問,只需要通過import導(dǎo)入即可。缺省代表該類可以被同一個(gè)包的其他類訪問。(2)修飾符可以是abstract(抽象類)或者final(最終類)。抽象類不能實(shí)例化,最終不能被繼承。(3)定義類的關(guān)鍵字class(小寫)。(4)類名的命名規(guī)則:首字母大寫,通常是名詞,做到見名知意,若由多個(gè)單詞組成,每個(gè)單詞首字母大寫。任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1技術(shù)準(zhǔn)備——行業(yè)編碼規(guī)范《阿里巴巴Java開發(fā)手冊(cè)》命名規(guī)約中,對(duì)類名、方法名等的約束:【強(qiáng)制】類名使用UpperCamelCase風(fēng)格,必須遵從駝峰形式,但以下情形例外:DO/BO/DTO/VO/AO【強(qiáng)制】方法名、參數(shù)名、成員變量、局部變量都統(tǒng)一使用lowerCamelCase風(fēng)格,必須遵從駝峰形式?!緩?qiáng)制】常量命名全部大寫,單詞間用下劃線隔開,力求語義表達(dá)完整清楚,不要嫌名字長。任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1微課1-1Java前世今生技能點(diǎn)1:根據(jù)需求定義類技術(shù)準(zhǔn)備屬性又稱為成員變量,用于描述類所具有的特征。語法:[訪問控制符][修飾符]屬性的類型

屬性名[=初始值];2.聲明屬性使用說明:(1)屬性的訪問控制符表示該屬性的訪問范圍,可以是private、protected、public和缺省。(2)修飾符可以是static、final等。static代表這個(gè)成員變量是靜態(tài)的,屬于類的,可以被所有對(duì)象通過類名.屬性名訪問。(3)數(shù)據(jù)類型可以是Java所有的數(shù)據(jù)類型,包括基本類型、類、接口等。(4)屬性名的首字母小寫,通常是名詞,做到見名知意,若由多個(gè)單詞組成,每個(gè)單詞首字母大寫。(5)聲明屬性是可以賦初值,更多的場(chǎng)景是在構(gòu)造方法中完成對(duì)屬性的初始化。任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1技能點(diǎn)1:根據(jù)需求定義類3.定義構(gòu)造方法語法:[public]類名([形參列表]){//為成員變量賦初值的語句}技術(shù)準(zhǔn)備(3)使用說明①定義類時(shí),給出了構(gòu)造方法,系統(tǒng)不會(huì)再提供一個(gè)缺省的構(gòu)造方法。②創(chuàng)建對(duì)象時(shí),構(gòu)造方法的參數(shù)的類型和個(gè)數(shù)要和定義時(shí)構(gòu)造方法的參數(shù)的類型和個(gè)數(shù)匹配。③構(gòu)造方法的形參名和成員變量名相同時(shí),為了區(qū)分,需要用this去調(diào)用成員變量。this代表當(dāng)前對(duì)象。④一個(gè)類中可以出現(xiàn)多個(gè)構(gòu)造方法(構(gòu)造方法可以重載),創(chuàng)建對(duì)象時(shí),根據(jù)參數(shù)的個(gè)數(shù)、類型調(diào)用匹配的構(gòu)造方法。(2)構(gòu)造方法的特征①構(gòu)造方法名和類名相同。②構(gòu)造方法沒有返回類型。③構(gòu)造方法在創(chuàng)建對(duì)象時(shí)自動(dòng)被調(diào)用。任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1案例:編寫一個(gè)客戶類,包含客戶ID,姓名,電話,地址,Email,能輸入和輸出客戶信息。教師演示第一步:任務(wù)分析(1)先確定類名:Customer,找出該類的屬性:客戶ID,姓名,電話,地址,Email(2)確定成員方法第二步:新建項(xiàng)目,新建類第三步:編碼實(shí)現(xiàn)任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1技能點(diǎn)1:根據(jù)需求定義類語法:[訪問控制符][修飾符]返回類型

方法名(形參列表){

}技術(shù)準(zhǔn)備使用說明:(1)訪問控制符用于限定方法的可見范圍,主要有public、protected、private和缺省,含義和屬性的訪問控制符一樣。(2)修飾符為可選項(xiàng),有final、static、abstract、synchronized等。final修飾的方法為最終方法,不能在子類中重寫;static的方法是靜態(tài)方法,通過類名調(diào)用;abstract的方法是抽象方法,抽象方法沒有方法體;synchronized用于在多線程中實(shí)現(xiàn)方法同步,具體應(yīng)用將在后續(xù)任務(wù)中詳細(xì)介紹。(3)方法名的首字母小寫,通常是動(dòng)名詞,做到見名知意,若由多個(gè)單詞組成,每個(gè)單詞首字母大寫。4.定義成員方法成員方法用來描述類所具有的行為。任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1技能點(diǎn)2:運(yùn)用包管理類語法:package包名;技術(shù)準(zhǔn)備為了組織管理、查找類,可以將功能相近的類放到同一個(gè)包(就是文件夾)中。使用說明:(1)這條語句必須是Java源程序的第一條語句,注釋除外。功能是將源文件中的類加入指定包中,如果包名不存在,則創(chuàng)建該包。(2)包名符合標(biāo)識(shí)符的命名規(guī)則,一般采用小寫,單數(shù),比如:java.util,javax.swing等。(3)包名唯一,為了保證包名的唯一性,一般使用一個(gè)Internet網(wǎng)域名的逆序形式作為包名,比如:.svtcc。1.導(dǎo)入包任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1技能點(diǎn)2:運(yùn)用包管理類無論是使用JDK中提供的類,還是用戶自己定義的公共類,需要寫出類的全名(包名+類名),比如java.util.Randomrand=newjava.util.Random()。如果通過import導(dǎo)入之后,使用類時(shí),不用加包名了。語法:import包名.類名;import包名.*;技術(shù)準(zhǔn)備使用說明:(1)“import包名.類名;”導(dǎo)入包中指定的類

importjava.util.Random;(2)“import包名.*;”導(dǎo)入包中所有的類

importjava.util.*;(3)import包名.*;只能導(dǎo)入一個(gè)包,不能通過“importjava.*;”導(dǎo)入以java開頭的所有的包2.導(dǎo)入包中類任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1技能點(diǎn)2:運(yùn)用包管理類import語句除了導(dǎo)入類以外,還允許導(dǎo)入靜態(tài)方法和靜態(tài)字段。語法:importstatic包名.類名.*;技術(shù)準(zhǔn)備示例代碼1:導(dǎo)入靜態(tài)字段輸出語句一般用“System.out.println();”,運(yùn)用靜態(tài)導(dǎo)入之后可以這樣實(shí)現(xiàn):importstaticjava.lang.System.*;publicclassMain{

publicstaticvoidmain(String[]args){

out.println("Helloworld!");}}3.靜態(tài)導(dǎo)入技能點(diǎn)3:運(yùn)用訪問控制符實(shí)現(xiàn)封裝任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1第一步:將類的屬性的訪問控制符指定為private,不允許其他類的方法直接訪問類的屬性。第二步:在類中為私有屬性提供訪問器(getter方法),用于其他類的方法讀取該屬性的值。getter方法的命名采用get+屬性名(首字母大寫)的形式。比如允許其他類中訪問屬性name,需要提供一個(gè)getName()方法。第三步:在類中為私有屬性提供更改器(setter方法),用于其他類的方法修改該屬性的值。setter方法的命名采用set+屬性名(首字母大寫)的形式。技術(shù)準(zhǔn)備任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1案例:創(chuàng)建一個(gè)圓類,包含屬性半徑和計(jì)算圓的面積、周長的方法,要求:符合面向?qū)ο蟮姆庋b性教師演示第一步:任務(wù)分析(1)分析類名:Circle(2)分析類的屬性:(3)分析構(gòu)造方法(4)分析成員方法第二步:新建項(xiàng)目,新建類第三步:編碼實(shí)現(xiàn)任務(wù)實(shí)施任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1第一步:任務(wù)分析(1)分析類名:

(2)分析類的屬性:學(xué)生類包含屬性、類型、屬性名和訪問控制符,并完善表內(nèi)容。屬性屬性的類型屬性名訪問控制符

任務(wù)實(shí)施任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1(3)分析構(gòu)造方法:

(4)分析成員方法:

第二步:編碼實(shí)現(xiàn)

第三步:運(yùn)行測(cè)試

第四步:驗(yàn)證程序運(yùn)行結(jié)果AEBCD小組協(xié)作,完成任務(wù)評(píng)價(jià)測(cè)試任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1評(píng)價(jià)指標(biāo)評(píng)價(jià)標(biāo)準(zhǔn)分值得分創(chuàng)建項(xiàng)目正確創(chuàng)建項(xiàng)目,新建學(xué)生類10

成員變量正確定義成員變量10

構(gòu)造方法正確定義構(gòu)造方法30

成員方法正確定義成員方法30

編碼規(guī)范標(biāo)識(shí)符命名規(guī)范、控制符使用準(zhǔn)確、有合理的注釋20

拓展提升1——類定義的規(guī)范任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1在定義類時(shí),要遵循一定的規(guī)范,才能編寫出符合行業(yè)要求的類。1.類中屬性的訪問控制符為private2.POJO類的屬性必須使用包裝類型3.不用為所有的私有屬性提供setter和getter方法4.避免出現(xiàn)萬能類技能提升2——JDK16新特性:record1.記錄(record)概念2.定義record的語法3.訪問record的屬性任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1案例:分析上一個(gè)案例中Customer類的寫法是否符合“單一職責(zé)”原則教師演示第一步:任務(wù)分析第二步:新建項(xiàng)目,新建類(1)分析Customer類的屬性和方法(2)編寫Customer類(3)分析CustomerService類的屬性和方法(4)編寫CustomerService類第三步:編碼實(shí)現(xiàn)任務(wù)6.1定義學(xué)生管理系統(tǒng)中的類1案例:定義record表示客戶信息教師演示publicrecordCustomer(Integerid,Stringname,Stringphone,Stringaddress,Stringemail){

publicCustomer(Integerid,Stringname,Stringphone,Stringaddress,Stringemail){

this.id=id;

this.name=name;

this.phone=phone;

this.address=address;

this.email=email;}}任務(wù)描述任務(wù)6.2創(chuàng)建學(xué)生對(duì)象2本任務(wù)要求:創(chuàng)建學(xué)生管理系統(tǒng)中學(xué)生類的對(duì)象,并完成學(xué)生對(duì)象信息的初始化及輸出學(xué)生的信息。具體任務(wù)任務(wù)6.2創(chuàng)建學(xué)生對(duì)象2技能點(diǎn)1:創(chuàng)建對(duì)象技術(shù)準(zhǔn)備聲明類的引用變量創(chuàng)建對(duì)象并初始化訪問屬性和成員方法語法:類名引用變量名;比如:Randomrand;銷毀對(duì)象語法:引用變量名=new類名([參數(shù)列表]);比如:rand=newRandom();語法:引用變量名.屬性名;語法:引用變量名.方法名(實(shí)參列表);引用變量存放在棧中,所占的內(nèi)存空間會(huì)自動(dòng)被釋放,對(duì)象存放在堆中,由垃圾回收機(jī)制自動(dòng)回收。使用對(duì)象的步驟技能點(diǎn)2:構(gòu)造方法的重載任務(wù)6.2創(chuàng)建學(xué)生對(duì)象2方法的重載是指在同一個(gè)類中出現(xiàn)多個(gè)方法名相同,函數(shù)特征不完全相同的方法。函數(shù)特征是指函數(shù)的參數(shù)的類型、參數(shù)的個(gè)數(shù)和參數(shù)的順序。在定義類時(shí),如果沒有提供構(gòu)造方法,系統(tǒng)會(huì)提供一個(gè)缺省的構(gòu)造方法,缺省的構(gòu)造方法沒有參數(shù),方法體為空。在定義類時(shí),也可以提供多個(gè)構(gòu)造方法,這就是構(gòu)造方法的重載。技術(shù)準(zhǔn)備publicclassCircle{

/**

*表示圓的半徑,私有的,不允許在其他類中訪問*/

privatedoubleradius;

publicCircle(){

radius=2;}

publicCircle(doubleradius){

this.radius=radius;}}技能點(diǎn)3:認(rèn)識(shí)棧和堆任務(wù)6.2創(chuàng)建學(xué)生對(duì)象2技術(shù)準(zhǔn)備任務(wù)實(shí)施任務(wù)6.2創(chuàng)建學(xué)生對(duì)象2第一步:任務(wù)分析分析要用到的類名和引用變量名:

第二步:編碼實(shí)現(xiàn)寫出創(chuàng)建Student對(duì)象的語句:

寫出調(diào)用成員方法完成輸入的語句:

寫出成員方法完成輸出的語句:

第三步:運(yùn)行測(cè)試第四步:驗(yàn)證程序運(yùn)行結(jié)果AEBCD小組協(xié)作,完成任務(wù)評(píng)價(jià)測(cè)試任務(wù)6.2創(chuàng)建學(xué)生對(duì)象2評(píng)價(jià)指標(biāo)評(píng)價(jià)標(biāo)準(zhǔn)分值得分創(chuàng)建項(xiàng)目正確創(chuàng)建Java項(xiàng)目10

輸入正確創(chuàng)建Student的實(shí)例,并完成輸入10

處理正確調(diào)用成員方法30

輸出結(jié)果正確輸出Student實(shí)例的信息30

編碼規(guī)范變量命名規(guī)范、有合理的注釋20

拓展提升——引用第三方Jar包任務(wù)6.2創(chuàng)建學(xué)生對(duì)象2面向?qū)ο缶幊炭梢允褂么罅康念悗欤挥脧念^開始寫代碼,使得開發(fā)變得更容易、更快捷。在Java項(xiàng)目中,除了可以用JDK提供的標(biāo)準(zhǔn)類庫,還可以用到第三方的類庫或者自己定義的類。在開發(fā)Java項(xiàng)目時(shí),在項(xiàng)目樹形目錄結(jié)構(gòu)中“ExternalLibraries”下有JDK的類庫,如果要使用第三方或者自己定義好的類,同樣需要先將Jar包導(dǎo)入到項(xiàng)目中來。2案例:創(chuàng)建一個(gè)Java項(xiàng)目,引用案例1“SimpleProject”項(xiàng)目中的Circle類教師演示第一步:新建一個(gè)Maven項(xiàng)目,項(xiàng)目名稱為:“M2-P6-Task2-EN”第二步:導(dǎo)入“SimpleProject.jar”包第三步:在項(xiàng)目的Main類中使用Circle類第四步:運(yùn)行測(cè)試結(jié)果任務(wù)6.2創(chuàng)建學(xué)生對(duì)象任務(wù)描述任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3一個(gè)班級(jí)通常由多名學(xué)生組成,本任務(wù)要求:鍵盤輸入班級(jí)學(xué)生人數(shù),創(chuàng)建一個(gè)對(duì)象數(shù)組,并完成對(duì)該班所有學(xué)生信息的輸入和輸出。具體任務(wù)任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3技能點(diǎn)1:定義一維數(shù)組技術(shù)準(zhǔn)備現(xiàn)實(shí)世界中生活中為什么需要博物架?思考字畫類古玩類好辦法——分類放,易于找1、格子提供了存儲(chǔ)空間2、每一類別都起一個(gè)名字3、每件物品都有個(gè)標(biāo)號(hào)任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3編程世界中如何存放全班50名學(xué)生的Java成績?思考方案一:定義50個(gè)變量?floatscore1;floatscore2;floatscore3;……floatscore50;

數(shù)組:具有相同數(shù)據(jù)類型的一組數(shù)據(jù)的集合。任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3語法1.數(shù)據(jù)類型可以是基本類型或者已定義的引用類型;2.Java中聲明數(shù)組推薦采用第一種形式,將[]放在數(shù)據(jù)類型和數(shù)組名中間。數(shù)據(jù)類型[]數(shù)組名;

或者數(shù)據(jù)類型數(shù)組名[];1.聲明一個(gè)數(shù)組a,用來存放int類型的數(shù)據(jù)

int[]a;2.聲明一個(gè)數(shù)組score,用來存放學(xué)生的成績

double[]score;3.聲明一個(gè)數(shù)組names,用來存放學(xué)生的姓名

String[]names;4.聲明一個(gè)數(shù)組buttons,用來存放多個(gè)JButton

JButton[]buttons;示例使用說明:技術(shù)準(zhǔn)備——聲明數(shù)組任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3技術(shù)準(zhǔn)備——為一維數(shù)組分配空間語法1.為數(shù)組分配空間是,長度可以是整型(不能是long類型)或者字符型常量、變量或者表達(dá)式。2.可以先聲明數(shù)組,再分配空間,也可以在聲明數(shù)組的同時(shí)分配空間數(shù)組名=new數(shù)據(jù)類型[長度];1.長度可以是整型常量:int[]a;a=newint[10];int[]age;age=newint[‘A’];2.長度可以是整型變量:

float[]score;intlen=10;score=newfloat[len];3.可以先聲明再分配空間,也可以在聲明的同時(shí)分配空間:

int[]a=newint[20];示例使用說明:任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3技術(shù)準(zhǔn)備——一維數(shù)組的初始化方法一:在聲明的同時(shí)初始化方法二:先聲明,再初始化int[]score={89,79,76};int[]score=newint[]{89,79,76};1.先聲明:int[]score;2.分配空間score=newint[10];3.為元素賦100以內(nèi)的隨機(jī)值Randomrnd=newRandom();for(inti=0;i<score.length;i++){score[i]=rnd.nextInt(100);}任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3練一練publicclassHello{publicstaticvoidmain(String[]args){

int[]score=newint[];score[0]=89;score[1]=63;

System.out.println(score[0]);}}編譯出錯(cuò),沒有寫明數(shù)組的大小任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3練一練publicclassHello{publicstaticvoidmain(String[]args){

int[]score=newint[2];score[0]=89;score[1]=63;score[2]=45;

System.out.println(score[2]);}}數(shù)組下標(biāo)越界任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3練一練publicstaticvoidmain(String[]args){

int[]score=newint[5];score={60,80,90,70,85};

int[]score2;score2={60,80,90,70,85};}編譯出錯(cuò),創(chuàng)建數(shù)組并賦值的方式必須在一條語句中完成任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3練一練publicclassHello{publicstaticvoidmain(String[]args){

int[]score=newint[3];score[0]=89;

System.out.println(score[1]);}}0008900012任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3技能點(diǎn)2:一維數(shù)組的應(yīng)用1.訪問數(shù)組元素語法:數(shù)組名[下標(biāo)]技術(shù)準(zhǔn)備使用說明:(1)下標(biāo)從0開始到長度-1,第一個(gè)元素的下標(biāo)為0,最后一個(gè)元素的下標(biāo)為長度-1。(2)數(shù)組中的元素如果沒有賦初值,數(shù)值類型默認(rèn)為0,引用類型默認(rèn)為null,字符類型默認(rèn)為‘\0’。(3)Java中數(shù)組不允許越界訪問。任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3案例:從鍵盤輸入10個(gè)學(xué)生Java編碼技術(shù)的成績,實(shí)現(xiàn)以下功能:(1)計(jì)算并輸出平均分;(2)輸出高于平均分的成績;教師演示第一步:任務(wù)分析如何保存10個(gè)學(xué)生的成績?——數(shù)組類型:double長度:10從鍵盤輸入10個(gè)學(xué)生的成績:用循環(huán)計(jì)算平均分:先求和,再計(jì)算平均分輸出高于平均分的成績:用循環(huán),依次把這10個(gè)成績和平均分進(jìn)行比較,高于平均分就輸出。第二步:編碼實(shí)現(xiàn)第三步:運(yùn)行程序,驗(yàn)證結(jié)果任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3技能點(diǎn)2:一維數(shù)組的應(yīng)用2.數(shù)組元素排序JDKAPI中提供了一個(gè)java.util.Arrays類,該類中封裝了對(duì)數(shù)組中的元素排序和搜索的方法。publicstaticvoidsort(DT[]a):實(shí)現(xiàn)對(duì)數(shù)組a中的元素進(jìn)行升序(從小到大)排列。publicstaticintbinarySearch(int[]a,intkey):用二分查找算法,在數(shù)組a中查找是否包含有key元素,如果有,返回該元素在數(shù)組中的下標(biāo),否則返回-1。調(diào)用該方法之前,應(yīng)該先調(diào)用sort方法,否則查詢出的結(jié)果可能不正確。技術(shù)準(zhǔn)備任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3案例:從鍵盤隨機(jī)生成20個(gè)50-100之間的整數(shù),實(shí)現(xiàn)以下功能:(1)按照每行10個(gè)輸出生成的20個(gè)隨機(jī)數(shù);(2)對(duì)20個(gè)隨機(jī)數(shù)按照升序排序,并輸出排序后的結(jié)果;(3)輸出這20個(gè)數(shù)中的最小值和最大值。教師演示第一步:任務(wù)分析關(guān)鍵技術(shù):(1)20個(gè)隨機(jī)整數(shù)如何保存——數(shù)組(2)如何生成50-100之間的隨機(jī)整數(shù)——Random類(3)如何實(shí)現(xiàn)對(duì)數(shù)組中的元素排序——Arrays.sort()第二步:編碼實(shí)現(xiàn)第三步:運(yùn)行程序,驗(yàn)證結(jié)果技能點(diǎn)3:二維數(shù)組的應(yīng)用任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生31.二維數(shù)組的聲明語法:

數(shù)據(jù)類型[][]數(shù)組名;

數(shù)組類型

數(shù)組名[][];2.二維數(shù)組分配空間

語法:數(shù)組名=new數(shù)據(jù)類型[整型表達(dá)式1][整型表達(dá)式2];3.給元素賦初值為二維數(shù)組的元素賦初值有兩種方法,一種是在聲明的同時(shí)賦初值,另一種方法是先聲明并分配空間,在賦初值。方法一:在聲明的同時(shí)賦初值//3行2列的字符數(shù)組char[][]ch={{'a','b'},{'c','d'},{'e','f'}};方法二:先聲明并分配空間,再賦初值技術(shù)準(zhǔn)備任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3案例:編寫程序建立并顯示下面所示的二維表,并計(jì)算累加和最大的行號(hào)。設(shè)元素值都為正整數(shù)。運(yùn)行結(jié)果如下: 23456534216778 46141846986388 98816490211423 54435576224333 第3行所有數(shù)的累加和最大,為:391教師演示技能點(diǎn)4:對(duì)象數(shù)組的應(yīng)用任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3第一步:聲明對(duì)象數(shù)組語法:引用類型[]數(shù)組名;示例代碼:聲明一個(gè)Circle類的對(duì)象數(shù)組Circle[]circles;第二步:為對(duì)象數(shù)組分配空間語法:數(shù)組名=new引用類型[長度];示例代碼:為circles數(shù)組分配10個(gè)空間,其初始值為nullcircles=newCircle[10];第三步:為數(shù)組元素賦初值circles[0]=newCircle(3);circles[1]=newCircle(2);使用說明:對(duì)象數(shù)組在使用之前,必須先聲明、分配空間再初始化,每個(gè)元素都要指向一個(gè)對(duì)象實(shí)例,否則會(huì)拋出NullPointerException。技術(shù)準(zhǔn)備任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3案例:編程實(shí)現(xiàn)計(jì)算多個(gè)圓的面積和周長。教師演示第一步:任務(wù)分析1.先分析Circle類中屬性、構(gòu)造方法和成員方法2.接下來分析CircleService類中屬性、構(gòu)造方法和成員方法第二步:編碼實(shí)現(xiàn)第三步:運(yùn)行程序,驗(yàn)證結(jié)果任務(wù)實(shí)施任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3第一步:任務(wù)分析該任務(wù)涉及到的實(shí)體類:

寫出實(shí)體類的屬性:

寫出實(shí)體類的成員方法:

第二步:編碼實(shí)現(xiàn)寫出聲明對(duì)象數(shù)組的語句:

寫出為對(duì)象數(shù)組分配空間的語句:

寫出為對(duì)象數(shù)組初始化的語句:第三步:運(yùn)行測(cè)試

第四步:驗(yàn)證程序運(yùn)行結(jié)果AEBCD小組協(xié)作,完成任務(wù)評(píng)價(jià)測(cè)試任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3評(píng)價(jià)指標(biāo)評(píng)價(jià)標(biāo)準(zhǔn)分值得分創(chuàng)建項(xiàng)目正確創(chuàng)建Java項(xiàng)目10

對(duì)象數(shù)組正確創(chuàng)建對(duì)象數(shù)組10

對(duì)象數(shù)組輸入正確輸入多個(gè)學(xué)生的信息30

輸出結(jié)果正確輸出多個(gè)學(xué)生的信息30

編碼規(guī)范變量命名規(guī)范、有合理的注釋20

拓展提升——用增強(qiáng)for循環(huán)對(duì)數(shù)組進(jìn)行操作任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3增強(qiáng)for循環(huán)(for-each循環(huán))是一種簡化的循環(huán)結(jié)構(gòu),用于遍歷數(shù)組或集合。增強(qiáng)for循環(huán)不需要指定索引號(hào),使代碼更簡潔、易讀,并且減少了出錯(cuò)的可能性。語法:for(元素類型變量名:數(shù)組或集合){//循環(huán)體}使用說明:(1)“元素類型”是數(shù)組或集合中元素的類型。(2)“變量名”是用于在循環(huán)體中引用當(dāng)前元素的變量名。任務(wù)6.3用數(shù)組實(shí)現(xiàn)保存多個(gè)學(xué)生3案例:隨機(jī)生成10個(gè)100以內(nèi)的整數(shù),按照升序排列后輸出教師演示第一步:任務(wù)分析1.保存10個(gè)整數(shù),用到整型的數(shù)組2.生成100以內(nèi)的隨機(jī)數(shù):用到Random類3.對(duì)數(shù)組排序:Arrays.sort()4.輸出數(shù)組元素:增強(qiáng)for循環(huán)第二步:編碼實(shí)現(xiàn)第三步:運(yùn)行程序,驗(yàn)證結(jié)果任務(wù)描述任務(wù)6.4用集合保存多個(gè)學(xué)生4Java中存放多個(gè)類型相同的元素可以采用數(shù)組,由于數(shù)組長度固定,當(dāng)要存放的元素個(gè)數(shù)不確定,數(shù)組就不是最佳的選擇了。在學(xué)生管理系統(tǒng)中,每個(gè)班級(jí)的學(xué)生人數(shù)不確定,如果采用數(shù)組來存放班級(jí)學(xué)生的信息有可能造成存儲(chǔ)空間的浪費(fèi)。本任務(wù)要求:編程實(shí)現(xiàn),用集合保存班級(jí)學(xué)生的信息。程序運(yùn)行時(shí),先輸入班級(jí)學(xué)生的人數(shù),再輸入班級(jí)學(xué)生的信息,接下來顯示系統(tǒng)菜單。根據(jù)用戶的選擇,實(shí)現(xiàn)相應(yīng)的功能。當(dāng)輸入1時(shí),根據(jù)學(xué)號(hào)查找學(xué)生信息;輸入2時(shí),輸出班級(jí)所有學(xué)生信息;輸入0時(shí),結(jié)束程序。具體任務(wù)任務(wù)6.4用集合保存多個(gè)學(xué)生4技能點(diǎn)1:集合的分類Java集合框架為不同類型的集合定義了大量接口,如圖所示。集合有兩個(gè)基本接口:Collection和Map,Collection接口子接口中,Queue接口用來表示隊(duì)列,Set接口表示無序的,不能重復(fù)的數(shù)據(jù)元素的集合,List接口表示有序的數(shù)據(jù)元素的集合。Map集合是雙列集合,由兩個(gè)集合組成,一個(gè)是鍵(key)集合,一個(gè)是值(value)集合。鍵集合是Set類型,因此鍵不能重復(fù)。而值集合是Collection類型,可以有重復(fù)的元素。Java中的集合是支持泛型的,在創(chuàng)建集合類型時(shí),可以指定元素的類型。技術(shù)準(zhǔn)備任務(wù)6.4用集合保存多個(gè)學(xué)生4技能點(diǎn)2:用List存取數(shù)據(jù)方法名功能booleanadd(E

e)將指定的元素追加到此列表的末尾voidadd(int

index,E

element)將指定的元素插入此列表中的指定位置Eremove(inti)刪除該列表中指定位置的元素booleanremove(Object

o)從列表中刪除指定元素的第一個(gè)出現(xiàn)(如果存在)Eget(int

index)返回此列表中指定位置的元素intindexOf(Object

o)返回此列表中指定元素的第一次出現(xiàn)的索引,如果此列表不包含元素,則返回-1Eset(int

index,E

element)用指定的元素(可選操作)替換此列表中指定位置的元素List接口常用方法任務(wù)6.4用集合保存多個(gè)學(xué)生4案例:用ArrayList實(shí)現(xiàn)對(duì)學(xué)生姓名的查找和遍歷教師演示//創(chuàng)建一個(gè)ArrayList的對(duì)象,用于存放多名學(xué)生的姓名List<String>names=newArrayList<>();//集合中添加元素names.add("張曉曉");names.add("蓉鵬富");names.add("蓉鵬強(qiáng)");//for循環(huán)遍歷集合System.out.println("集合中的元素有:");for(inti=0;i<names.size();i++){System.out.printf("%s\t",names.get(i));}技能點(diǎn)3:用Set存取數(shù)據(jù)任務(wù)6.4用集合保存多個(gè)學(xué)生4Set接口常用方法方法名功能booleanadd(E

e)如果指定的元素不存在,則將其指定的元素添加booleancontains(Objecto)

如果此集合包含指定的元素,則返回trueinthashCode()

返回此集合的哈希碼值booleanremove(Object

o)

如果存在,則從該集合中刪除指定的元素Iterator<E>iterator()

返回此集合中元素的迭代器intsize()

返回此集合中的元素?cái)?shù)voidclear()

從此集合中刪除所有元素任務(wù)6.4用集合保存多個(gè)學(xué)生4案例:用Set實(shí)現(xiàn)存儲(chǔ)和遍歷學(xué)生學(xué)號(hào)教師演示

Set<String>ids=newHashSet<>();//往Set集合中添加元素ids.add("20231111");ids.add("20232222");ids.add("20233333");ids.add("20234444");//遍歷Set集合中的元素Iterator<String>itIds=ids.iterator();while(itIds.hasNext()){Stringid=itIds.next();System.out.printf("%s\t",id);}技能點(diǎn)4:用Queue和Deque存取數(shù)據(jù)任務(wù)6.4用集合保存多個(gè)學(xué)生4Queue接口常用方法方法名功能booleanadd(E

e)將指定的元素插入到此隊(duì)列中,如果可以立即執(zhí)行此操作,而不會(huì)違反容量限制,trueEelement()檢索,但不刪除隊(duì)頭元素booleanoffer(E

e)如果在不違反容量限制的情況下立即執(zhí)行,則將指定的元素插入到此隊(duì)列中Epeek()檢索但不刪除此隊(duì)列的頭,如果此隊(duì)列為空,則返回nullEpoll()檢索并刪除此隊(duì)列的頭,如果此隊(duì)列為空,則返回nullEremove()檢索并刪除此隊(duì)列的頭技能點(diǎn)5:用Map存取數(shù)據(jù)任務(wù)6.4用集合保存多個(gè)學(xué)生4Map接口常用方法方法名功能Vget(Objectkey)獲得與鍵關(guān)聯(lián)的值。如果在Map中沒有找到這個(gè)鍵,返回nullVput(Kkey,Vvalue)如果鍵不存在,將鍵值對(duì)放到集合中,返回null。如果鍵存在,用新的值替換舊值,并返回舊值booleancontainsKey(Object

key)如果集合中有這個(gè)鍵,返回truebooleancontainsValue(Object

value)如果集合中有這個(gè)值,返回true任務(wù)實(shí)施任務(wù)6.4用集合保存多個(gè)學(xué)生4第一步:任務(wù)分析確定用到的集合類型:

分析用到的類:(1)學(xué)生類

(2)班級(jí)類

(3)班級(jí)管理類:包含根據(jù)學(xué)號(hào)查找學(xué)生信息的方法,輸出班級(jí)學(xué)生信息的方法第二步:編碼實(shí)現(xiàn)(1)編寫學(xué)生類學(xué)生類屬性有:學(xué)號(hào)、姓名、年齡和電話號(hào)碼,成員方法有g(shù)etter/setter、toString()、equals()、hashCode()等。(2)編寫班級(jí)類班級(jí)類中包含用于存放班級(jí)學(xué)生信息的Map集合、初始化班級(jí)學(xué)生信息的成員方法。任務(wù)實(shí)施任務(wù)6.4用集合保存多個(gè)學(xué)生4(3)編寫班級(jí)管理類班級(jí)管理類包含按照學(xué)號(hào)查找學(xué)生信息和輸出班級(jí)信息的方法。(4)編寫Main類Main類中包含顯示程序菜單和根據(jù)用戶輸入調(diào)用相應(yīng)方法的功能。

第三步:運(yùn)行測(cè)試第四步:驗(yàn)證程序運(yùn)行結(jié)果AEBCD小組協(xié)作,完成任務(wù)評(píng)價(jià)測(cè)試任務(wù)6.4用集合保存多個(gè)學(xué)生4評(píng)價(jià)指標(biāo)評(píng)價(jià)標(biāo)準(zhǔn)分值得分創(chuàng)建項(xiàng)目正確創(chuàng)建Java項(xiàng)目10

輸入正確定義集合類型,輸入學(xué)生信息10

處理正確實(shí)現(xiàn)根據(jù)學(xué)號(hào)查找學(xué)生信息30

輸出結(jié)果正確輸出學(xué)生信息,用戶界面友好30

編碼規(guī)范變量命名規(guī)范、有合理的注釋20

拓展提升——泛型類的定義任務(wù)6.4用集合保存多個(gè)學(xué)生4泛型是JDK5.0的新特性之一,其本質(zhì)是參數(shù)化類型,也就是將操作的數(shù)據(jù)類型指定成一個(gè)參數(shù)。這種參數(shù)類型可以用在類、接口和方法中,分別成為泛型類、泛型接口和泛型方法。泛型類就是有一個(gè)或多個(gè)類型變量的類。類型變量用T表示,用尖括號(hào)括起來,放在類名的后面,類型變量也可以有多個(gè)。類型變量在整個(gè)類定義中用于指定方法的返回類型以及字段和局部變量的類型。任務(wù)6.4用集合保存多個(gè)學(xué)生4案例:定義一個(gè)包含學(xué)生姓名、學(xué)號(hào)和分?jǐn)?shù)的泛型類教師演示第一步:任務(wù)分析第二步:編寫泛型類StudentpublicclassStudent<T>{

/***學(xué)生的分?jǐn)?shù)*/Tscore;}第三步:在Main類中編寫測(cè)試代碼Student<Integer>zs=newStudent<>();拓展提升——泛型方法的定義任務(wù)6.4用集合保存多個(gè)學(xué)生4泛型方法就是帶有泛型參數(shù)的方法,類型參數(shù)可以作為方法的返回類型或者方法的參數(shù)類型??梢栽诜盒皖愔卸x泛型方法,也可以在普通類中定義泛型方法。泛型方法定義的語法:[訪問控制符]<T>T方法名(T參數(shù)名1,T...參數(shù)名){}任務(wù)6.4用集合保存多個(gè)學(xué)生4案例:在普通類中定義泛型方法教師演示publicclassMain{publicstatic<T>TgetMiddle(T...a){returna[a.length/2];}publicstaticvoidmain(String[]args){

System.out.println(Main.getMiddle(1,2,3,4,5));

System.out.println(Main.getMiddle(1.2,3.5,7.8,8.9,9.0));

System.out.println(Main.getMiddle("a","b","c"));}}任務(wù)描述任務(wù)6.5程序中的異常處理5在用數(shù)組和集合保存多名學(xué)生信息時(shí),如果數(shù)組下標(biāo)越界、集合對(duì)象沒有初始化程序可能會(huì)產(chǎn)生異常。本任務(wù):識(shí)別任務(wù)6.1-6.4中可能產(chǎn)生的異常,并加上異常處理,確保程序的健壯性。具體任務(wù)任務(wù)6.5程序中的異常處理5技能點(diǎn)1:認(rèn)識(shí)異常及異常的分類1.認(rèn)識(shí)異常JDK中提供了Throwable類,該類有兩個(gè)直接子類:Error和Exception,Error就是指程序運(yùn)行過程中產(chǎn)生的嚴(yán)重錯(cuò)誤,程序員沒有辦法解決的,這類錯(cuò)誤不是我們這章學(xué)習(xí)的內(nèi)容。Exception是指程序運(yùn)行過程中產(chǎn)生的錯(cuò)誤,程序員能通過Java提供的異常處理機(jī)制捕獲并處理。本章學(xué)的異常處理就是Exception類及其子類。2.異常分類異常分為:系統(tǒng)定義的異常類(JDK中提供的異常類,Exception及其子類)和用戶自定義的異常類。技術(shù)準(zhǔn)備任務(wù)6.5程序中的異常處理5技能點(diǎn)2:異常處理的實(shí)現(xiàn)異常處理相關(guān)的關(guān)鍵字有:try、catch、finally、throw和throws。1.try…catch…finally處理異常語法:

try{//可能產(chǎn)生異常的語句}[catch(異常類1引用變量1){//異常處理語句}catch(異常類

溫馨提示

  • 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)論