版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
項目6面向?qū)ο蟪绦蛟O計學習目標知識技能目標:能正確定義類和對象能正確使用數(shù)組和集合能正確使用異常處理語句職業(yè)素養(yǎng)目標:具備嚴謹細致、規(guī)范編碼的職業(yè)素養(yǎng),提高問題解決與創(chuàng)新能力具備較強的職業(yè)道德和責任心,提高代碼審查和質(zhì)量控制的能力課證融通學習內(nèi)容與“大數(shù)據(jù)應用開發(fā)(Java)”職業(yè)技能等級標準(初級)對應關系工作任務職業(yè)技能要求1.2面向過程代碼編寫(初級)1.2.5能熟練運用數(shù)組存取數(shù)據(jù);1.3面向?qū)ο蟠a編寫(初級)1.3.1理解類和對象機制,熟練運用Java的面向?qū)ο髾C制,用“類”的語法封裝對象的行為和狀態(tài);1.3.4能熟練運用Java的包和訪問控制機制提升代碼安全性。1.1Java高級API編程(中級)1.1.1能對數(shù)據(jù)進行結(jié)構化和非結(jié)構化分析,熟練運用List、Set、Map等接口及其子類存取復雜數(shù)據(jù)對象;1.2Java高級機制編程(中級)1.2.3能運用Java異常處理機制編寫更健壯的Java程序;任務6.1定義學生管理系統(tǒng)中的類1在學生管理系統(tǒng)中,可以查看學生和班級的基本信息,學生信息包括學號、姓名、年齡、電話號碼等。班級信息包含班級ID,班級名稱等信息。本任務要求:識別學生管理系統(tǒng)中的類,并完成學生類的定義。任務詳解任務描述任務6.1定義學生管理系統(tǒng)中的類1技能點1:根據(jù)需求定義類語法:[訪問控制符][修飾符]class類名{//聲明屬性//定義構造方法//定義成員方法}技術準備1.定義類使用說明:(1)類的訪問控制符用于限定允許訪問該類的范圍,可以是:public或者缺省。public類代表可以在任意范圍訪問,只需要通過import導入即可。缺省代表該類可以被同一個包的其他類訪問。(2)修飾符可以是abstract(抽象類)或者final(最終類)。抽象類不能實例化,最終不能被繼承。(3)定義類的關鍵字class(小寫)。(4)類名的命名規(guī)則:首字母大寫,通常是名詞,做到見名知意,若由多個單詞組成,每個單詞首字母大寫。任務6.1定義學生管理系統(tǒng)中的類1技術準備——行業(yè)編碼規(guī)范《阿里巴巴Java開發(fā)手冊》命名規(guī)約中,對類名、方法名等的約束:【強制】類名使用UpperCamelCase風格,必須遵從駝峰形式,但以下情形例外:DO/BO/DTO/VO/AO【強制】方法名、參數(shù)名、成員變量、局部變量都統(tǒng)一使用lowerCamelCase風格,必須遵從駝峰形式。【強制】常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。任務6.1定義學生管理系統(tǒng)中的類1微課1-1Java前世今生技能點1:根據(jù)需求定義類技術準備屬性又稱為成員變量,用于描述類所具有的特征。語法:[訪問控制符][修飾符]屬性的類型
屬性名[=初始值];2.聲明屬性使用說明:(1)屬性的訪問控制符表示該屬性的訪問范圍,可以是private、protected、public和缺省。(2)修飾符可以是static、final等。static代表這個成員變量是靜態(tài)的,屬于類的,可以被所有對象通過類名.屬性名訪問。(3)數(shù)據(jù)類型可以是Java所有的數(shù)據(jù)類型,包括基本類型、類、接口等。(4)屬性名的首字母小寫,通常是名詞,做到見名知意,若由多個單詞組成,每個單詞首字母大寫。(5)聲明屬性是可以賦初值,更多的場景是在構造方法中完成對屬性的初始化。任務6.1定義學生管理系統(tǒng)中的類1技能點1:根據(jù)需求定義類3.定義構造方法語法:[public]類名([形參列表]){//為成員變量賦初值的語句}技術準備(3)使用說明①定義類時,給出了構造方法,系統(tǒng)不會再提供一個缺省的構造方法。②創(chuàng)建對象時,構造方法的參數(shù)的類型和個數(shù)要和定義時構造方法的參數(shù)的類型和個數(shù)匹配。③構造方法的形參名和成員變量名相同時,為了區(qū)分,需要用this去調(diào)用成員變量。this代表當前對象。④一個類中可以出現(xiàn)多個構造方法(構造方法可以重載),創(chuàng)建對象時,根據(jù)參數(shù)的個數(shù)、類型調(diào)用匹配的構造方法。(2)構造方法的特征①構造方法名和類名相同。②構造方法沒有返回類型。③構造方法在創(chuàng)建對象時自動被調(diào)用。任務6.1定義學生管理系統(tǒng)中的類1案例:編寫一個客戶類,包含客戶ID,姓名,電話,地址,Email,能輸入和輸出客戶信息。教師演示第一步:任務分析(1)先確定類名:Customer,找出該類的屬性:客戶ID,姓名,電話,地址,Email(2)確定成員方法第二步:新建項目,新建類第三步:編碼實現(xiàn)任務6.1定義學生管理系統(tǒng)中的類1技能點1:根據(jù)需求定義類語法:[訪問控制符][修飾符]返回類型
方法名(形參列表){
}技術準備使用說明:(1)訪問控制符用于限定方法的可見范圍,主要有public、protected、private和缺省,含義和屬性的訪問控制符一樣。(2)修飾符為可選項,有final、static、abstract、synchronized等。final修飾的方法為最終方法,不能在子類中重寫;static的方法是靜態(tài)方法,通過類名調(diào)用;abstract的方法是抽象方法,抽象方法沒有方法體;synchronized用于在多線程中實現(xiàn)方法同步,具體應用將在后續(xù)任務中詳細介紹。(3)方法名的首字母小寫,通常是動名詞,做到見名知意,若由多個單詞組成,每個單詞首字母大寫。4.定義成員方法成員方法用來描述類所具有的行為。任務6.1定義學生管理系統(tǒng)中的類1技能點2:運用包管理類語法:package包名;技術準備為了組織管理、查找類,可以將功能相近的類放到同一個包(就是文件夾)中。使用說明:(1)這條語句必須是Java源程序的第一條語句,注釋除外。功能是將源文件中的類加入指定包中,如果包名不存在,則創(chuàng)建該包。(2)包名符合標識符的命名規(guī)則,一般采用小寫,單數(shù),比如:java.util,javax.swing等。(3)包名唯一,為了保證包名的唯一性,一般使用一個Internet網(wǎng)域名的逆序形式作為包名,比如:.svtcc。1.導入包任務6.1定義學生管理系統(tǒng)中的類1技能點2:運用包管理類無論是使用JDK中提供的類,還是用戶自己定義的公共類,需要寫出類的全名(包名+類名),比如java.util.Randomrand=newjava.util.Random()。如果通過import導入之后,使用類時,不用加包名了。語法:import包名.類名;import包名.*;技術準備使用說明:(1)“import包名.類名;”導入包中指定的類
importjava.util.Random;(2)“import包名.*;”導入包中所有的類
importjava.util.*;(3)import包名.*;只能導入一個包,不能通過“importjava.*;”導入以java開頭的所有的包2.導入包中類任務6.1定義學生管理系統(tǒng)中的類1技能點2:運用包管理類import語句除了導入類以外,還允許導入靜態(tài)方法和靜態(tài)字段。語法:importstatic包名.類名.*;技術準備示例代碼1:導入靜態(tài)字段輸出語句一般用“System.out.println();”,運用靜態(tài)導入之后可以這樣實現(xiàn):importstaticjava.lang.System.*;publicclassMain{
publicstaticvoidmain(String[]args){
out.println("Helloworld!");}}3.靜態(tài)導入技能點3:運用訪問控制符實現(xiàn)封裝任務6.1定義學生管理系統(tǒng)中的類1第一步:將類的屬性的訪問控制符指定為private,不允許其他類的方法直接訪問類的屬性。第二步:在類中為私有屬性提供訪問器(getter方法),用于其他類的方法讀取該屬性的值。getter方法的命名采用get+屬性名(首字母大寫)的形式。比如允許其他類中訪問屬性name,需要提供一個getName()方法。第三步:在類中為私有屬性提供更改器(setter方法),用于其他類的方法修改該屬性的值。setter方法的命名采用set+屬性名(首字母大寫)的形式。技術準備任務6.1定義學生管理系統(tǒng)中的類1案例:創(chuàng)建一個圓類,包含屬性半徑和計算圓的面積、周長的方法,要求:符合面向?qū)ο蟮姆庋b性教師演示第一步:任務分析(1)分析類名:Circle(2)分析類的屬性:(3)分析構造方法(4)分析成員方法第二步:新建項目,新建類第三步:編碼實現(xiàn)任務實施任務6.1定義學生管理系統(tǒng)中的類1第一步:任務分析(1)分析類名:
(2)分析類的屬性:學生類包含屬性、類型、屬性名和訪問控制符,并完善表內(nèi)容。屬性屬性的類型屬性名訪問控制符
任務實施任務6.1定義學生管理系統(tǒng)中的類1(3)分析構造方法:
(4)分析成員方法:
第二步:編碼實現(xiàn)
第三步:運行測試
第四步:驗證程序運行結(jié)果AEBCD小組協(xié)作,完成任務評價測試任務6.1定義學生管理系統(tǒng)中的類1評價指標評價標準分值得分創(chuàng)建項目正確創(chuàng)建項目,新建學生類10
成員變量正確定義成員變量10
構造方法正確定義構造方法30
成員方法正確定義成員方法30
編碼規(guī)范標識符命名規(guī)范、控制符使用準確、有合理的注釋20
拓展提升1——類定義的規(guī)范任務6.1定義學生管理系統(tǒng)中的類1在定義類時,要遵循一定的規(guī)范,才能編寫出符合行業(yè)要求的類。1.類中屬性的訪問控制符為private2.POJO類的屬性必須使用包裝類型3.不用為所有的私有屬性提供setter和getter方法4.避免出現(xiàn)萬能類技能提升2——JDK16新特性:record1.記錄(record)概念2.定義record的語法3.訪問record的屬性任務6.1定義學生管理系統(tǒng)中的類1案例:分析上一個案例中Customer類的寫法是否符合“單一職責”原則教師演示第一步:任務分析第二步:新建項目,新建類(1)分析Customer類的屬性和方法(2)編寫Customer類(3)分析CustomerService類的屬性和方法(4)編寫CustomerService類第三步:編碼實現(xiàn)任務6.1定義學生管理系統(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;}}任務描述任務6.2創(chuàng)建學生對象2本任務要求:創(chuàng)建學生管理系統(tǒng)中學生類的對象,并完成學生對象信息的初始化及輸出學生的信息。具體任務任務6.2創(chuàng)建學生對象2技能點1:創(chuàng)建對象技術準備聲明類的引用變量創(chuàng)建對象并初始化訪問屬性和成員方法語法:類名引用變量名;比如:Randomrand;銷毀對象語法:引用變量名=new類名([參數(shù)列表]);比如:rand=newRandom();語法:引用變量名.屬性名;語法:引用變量名.方法名(實參列表);引用變量存放在棧中,所占的內(nèi)存空間會自動被釋放,對象存放在堆中,由垃圾回收機制自動回收。使用對象的步驟技能點2:構造方法的重載任務6.2創(chuàng)建學生對象2方法的重載是指在同一個類中出現(xiàn)多個方法名相同,函數(shù)特征不完全相同的方法。函數(shù)特征是指函數(shù)的參數(shù)的類型、參數(shù)的個數(shù)和參數(shù)的順序。在定義類時,如果沒有提供構造方法,系統(tǒng)會提供一個缺省的構造方法,缺省的構造方法沒有參數(shù),方法體為空。在定義類時,也可以提供多個構造方法,這就是構造方法的重載。技術準備publicclassCircle{
/**
*表示圓的半徑,私有的,不允許在其他類中訪問*/
privatedoubleradius;
publicCircle(){
radius=2;}
publicCircle(doubleradius){
this.radius=radius;}}技能點3:認識棧和堆任務6.2創(chuàng)建學生對象2技術準備任務實施任務6.2創(chuàng)建學生對象2第一步:任務分析分析要用到的類名和引用變量名:
第二步:編碼實現(xiàn)寫出創(chuàng)建Student對象的語句:
寫出調(diào)用成員方法完成輸入的語句:
寫出成員方法完成輸出的語句:
第三步:運行測試第四步:驗證程序運行結(jié)果AEBCD小組協(xié)作,完成任務評價測試任務6.2創(chuàng)建學生對象2評價指標評價標準分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
輸入正確創(chuàng)建Student的實例,并完成輸入10
處理正確調(diào)用成員方法30
輸出結(jié)果正確輸出Student實例的信息30
編碼規(guī)范變量命名規(guī)范、有合理的注釋20
拓展提升——引用第三方Jar包任務6.2創(chuàng)建學生對象2面向?qū)ο缶幊炭梢允褂么罅康念悗欤挥脧念^開始寫代碼,使得開發(fā)變得更容易、更快捷。在Java項目中,除了可以用JDK提供的標準類庫,還可以用到第三方的類庫或者自己定義的類。在開發(fā)Java項目時,在項目樹形目錄結(jié)構中“ExternalLibraries”下有JDK的類庫,如果要使用第三方或者自己定義好的類,同樣需要先將Jar包導入到項目中來。2案例:創(chuàng)建一個Java項目,引用案例1“SimpleProject”項目中的Circle類教師演示第一步:新建一個Maven項目,項目名稱為:“M2-P6-Task2-EN”第二步:導入“SimpleProject.jar”包第三步:在項目的Main類中使用Circle類第四步:運行測試結(jié)果任務6.2創(chuàng)建學生對象任務描述任務6.3用數(shù)組實現(xiàn)保存多個學生3一個班級通常由多名學生組成,本任務要求:鍵盤輸入班級學生人數(shù),創(chuàng)建一個對象數(shù)組,并完成對該班所有學生信息的輸入和輸出。具體任務任務6.3用數(shù)組實現(xiàn)保存多個學生3技能點1:定義一維數(shù)組技術準備現(xiàn)實世界中生活中為什么需要博物架?思考字畫類古玩類好辦法——分類放,易于找1、格子提供了存儲空間2、每一類別都起一個名字3、每件物品都有個標號任務6.3用數(shù)組實現(xiàn)保存多個學生3編程世界中如何存放全班50名學生的Java成績?思考方案一:定義50個變量?floatscore1;floatscore2;floatscore3;……floatscore50;
數(shù)組:具有相同數(shù)據(jù)類型的一組數(shù)據(jù)的集合。任務6.3用數(shù)組實現(xiàn)保存多個學生3語法1.數(shù)據(jù)類型可以是基本類型或者已定義的引用類型;2.Java中聲明數(shù)組推薦采用第一種形式,將[]放在數(shù)據(jù)類型和數(shù)組名中間。數(shù)據(jù)類型[]數(shù)組名;
或者數(shù)據(jù)類型數(shù)組名[];1.聲明一個數(shù)組a,用來存放int類型的數(shù)據(jù)
int[]a;2.聲明一個數(shù)組score,用來存放學生的成績
double[]score;3.聲明一個數(shù)組names,用來存放學生的姓名
String[]names;4.聲明一個數(shù)組buttons,用來存放多個JButton
JButton[]buttons;示例使用說明:技術準備——聲明數(shù)組任務6.3用數(shù)組實現(xiàn)保存多個學生3技術準備——為一維數(shù)組分配空間語法1.為數(shù)組分配空間是,長度可以是整型(不能是long類型)或者字符型常量、變量或者表達式。2.可以先聲明數(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.可以先聲明再分配空間,也可以在聲明的同時分配空間:
int[]a=newint[20];示例使用說明:任務6.3用數(shù)組實現(xiàn)保存多個學生3技術準備——一維數(shù)組的初始化方法一:在聲明的同時初始化方法二:先聲明,再初始化int[]score={89,79,76};int[]score=newint[]{89,79,76};1.先聲明:int[]score;2.分配空間score=newint[10];3.為元素賦100以內(nèi)的隨機值Randomrnd=newRandom();for(inti=0;i<score.length;i++){score[i]=rnd.nextInt(100);}任務6.3用數(shù)組實現(xiàn)保存多個學生3練一練publicclassHello{publicstaticvoidmain(String[]args){
int[]score=newint[];score[0]=89;score[1]=63;
System.out.println(score[0]);}}編譯出錯,沒有寫明數(shù)組的大小任務6.3用數(shù)組實現(xiàn)保存多個學生3練一練publicclassHello{publicstaticvoidmain(String[]args){
int[]score=newint[2];score[0]=89;score[1]=63;score[2]=45;
System.out.println(score[2]);}}數(shù)組下標越界任務6.3用數(shù)組實現(xiàn)保存多個學生3練一練publicstaticvoidmain(String[]args){
int[]score=newint[5];score={60,80,90,70,85};
int[]score2;score2={60,80,90,70,85};}編譯出錯,創(chuàng)建數(shù)組并賦值的方式必須在一條語句中完成任務6.3用數(shù)組實現(xiàn)保存多個學生3練一練publicclassHello{publicstaticvoidmain(String[]args){
int[]score=newint[3];score[0]=89;
System.out.println(score[1]);}}0008900012任務6.3用數(shù)組實現(xiàn)保存多個學生3技能點2:一維數(shù)組的應用1.訪問數(shù)組元素語法:數(shù)組名[下標]技術準備使用說明:(1)下標從0開始到長度-1,第一個元素的下標為0,最后一個元素的下標為長度-1。(2)數(shù)組中的元素如果沒有賦初值,數(shù)值類型默認為0,引用類型默認為null,字符類型默認為‘\0’。(3)Java中數(shù)組不允許越界訪問。任務6.3用數(shù)組實現(xiàn)保存多個學生3案例:從鍵盤輸入10個學生Java編碼技術的成績,實現(xiàn)以下功能:(1)計算并輸出平均分;(2)輸出高于平均分的成績;教師演示第一步:任務分析如何保存10個學生的成績?——數(shù)組類型:double長度:10從鍵盤輸入10個學生的成績:用循環(huán)計算平均分:先求和,再計算平均分輸出高于平均分的成績:用循環(huán),依次把這10個成績和平均分進行比較,高于平均分就輸出。第二步:編碼實現(xiàn)第三步:運行程序,驗證結(jié)果任務6.3用數(shù)組實現(xiàn)保存多個學生3技能點2:一維數(shù)組的應用2.數(shù)組元素排序JDKAPI中提供了一個java.util.Arrays類,該類中封裝了對數(shù)組中的元素排序和搜索的方法。publicstaticvoidsort(DT[]a):實現(xiàn)對數(shù)組a中的元素進行升序(從小到大)排列。publicstaticintbinarySearch(int[]a,intkey):用二分查找算法,在數(shù)組a中查找是否包含有key元素,如果有,返回該元素在數(shù)組中的下標,否則返回-1。調(diào)用該方法之前,應該先調(diào)用sort方法,否則查詢出的結(jié)果可能不正確。技術準備任務6.3用數(shù)組實現(xiàn)保存多個學生3案例:從鍵盤隨機生成20個50-100之間的整數(shù),實現(xiàn)以下功能:(1)按照每行10個輸出生成的20個隨機數(shù);(2)對20個隨機數(shù)按照升序排序,并輸出排序后的結(jié)果;(3)輸出這20個數(shù)中的最小值和最大值。教師演示第一步:任務分析關鍵技術:(1)20個隨機整數(shù)如何保存——數(shù)組(2)如何生成50-100之間的隨機整數(shù)——Random類(3)如何實現(xiàn)對數(shù)組中的元素排序——Arrays.sort()第二步:編碼實現(xiàn)第三步:運行程序,驗證結(jié)果技能點3:二維數(shù)組的應用任務6.3用數(shù)組實現(xiàn)保存多個學生31.二維數(shù)組的聲明語法:
數(shù)據(jù)類型[][]數(shù)組名;
數(shù)組類型
數(shù)組名[][];2.二維數(shù)組分配空間
語法:數(shù)組名=new數(shù)據(jù)類型[整型表達式1][整型表達式2];3.給元素賦初值為二維數(shù)組的元素賦初值有兩種方法,一種是在聲明的同時賦初值,另一種方法是先聲明并分配空間,在賦初值。方法一:在聲明的同時賦初值//3行2列的字符數(shù)組char[][]ch={{'a','b'},{'c','d'},{'e','f'}};方法二:先聲明并分配空間,再賦初值技術準備任務6.3用數(shù)組實現(xiàn)保存多個學生3案例:編寫程序建立并顯示下面所示的二維表,并計算累加和最大的行號。設元素值都為正整數(shù)。運行結(jié)果如下: 23456534216778 46141846986388 98816490211423 54435576224333 第3行所有數(shù)的累加和最大,為:391教師演示技能點4:對象數(shù)組的應用任務6.3用數(shù)組實現(xiàn)保存多個學生3第一步:聲明對象數(shù)組語法:引用類型[]數(shù)組名;示例代碼:聲明一個Circle類的對象數(shù)組Circle[]circles;第二步:為對象數(shù)組分配空間語法:數(shù)組名=new引用類型[長度];示例代碼:為circles數(shù)組分配10個空間,其初始值為nullcircles=newCircle[10];第三步:為數(shù)組元素賦初值circles[0]=newCircle(3);circles[1]=newCircle(2);使用說明:對象數(shù)組在使用之前,必須先聲明、分配空間再初始化,每個元素都要指向一個對象實例,否則會拋出NullPointerException。技術準備任務6.3用數(shù)組實現(xiàn)保存多個學生3案例:編程實現(xiàn)計算多個圓的面積和周長。教師演示第一步:任務分析1.先分析Circle類中屬性、構造方法和成員方法2.接下來分析CircleService類中屬性、構造方法和成員方法第二步:編碼實現(xiàn)第三步:運行程序,驗證結(jié)果任務實施任務6.3用數(shù)組實現(xiàn)保存多個學生3第一步:任務分析該任務涉及到的實體類:
寫出實體類的屬性:
寫出實體類的成員方法:
第二步:編碼實現(xiàn)寫出聲明對象數(shù)組的語句:
寫出為對象數(shù)組分配空間的語句:
寫出為對象數(shù)組初始化的語句:第三步:運行測試
第四步:驗證程序運行結(jié)果AEBCD小組協(xié)作,完成任務評價測試任務6.3用數(shù)組實現(xiàn)保存多個學生3評價指標評價標準分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
對象數(shù)組正確創(chuàng)建對象數(shù)組10
對象數(shù)組輸入正確輸入多個學生的信息30
輸出結(jié)果正確輸出多個學生的信息30
編碼規(guī)范變量命名規(guī)范、有合理的注釋20
拓展提升——用增強for循環(huán)對數(shù)組進行操作任務6.3用數(shù)組實現(xiàn)保存多個學生3增強for循環(huán)(for-each循環(huán))是一種簡化的循環(huán)結(jié)構,用于遍歷數(shù)組或集合。增強for循環(huán)不需要指定索引號,使代碼更簡潔、易讀,并且減少了出錯的可能性。語法:for(元素類型變量名:數(shù)組或集合){//循環(huán)體}使用說明:(1)“元素類型”是數(shù)組或集合中元素的類型。(2)“變量名”是用于在循環(huán)體中引用當前元素的變量名。任務6.3用數(shù)組實現(xiàn)保存多個學生3案例:隨機生成10個100以內(nèi)的整數(shù),按照升序排列后輸出教師演示第一步:任務分析1.保存10個整數(shù),用到整型的數(shù)組2.生成100以內(nèi)的隨機數(shù):用到Random類3.對數(shù)組排序:Arrays.sort()4.輸出數(shù)組元素:增強for循環(huán)第二步:編碼實現(xiàn)第三步:運行程序,驗證結(jié)果任務描述任務6.4用集合保存多個學生4Java中存放多個類型相同的元素可以采用數(shù)組,由于數(shù)組長度固定,當要存放的元素個數(shù)不確定,數(shù)組就不是最佳的選擇了。在學生管理系統(tǒng)中,每個班級的學生人數(shù)不確定,如果采用數(shù)組來存放班級學生的信息有可能造成存儲空間的浪費。本任務要求:編程實現(xiàn),用集合保存班級學生的信息。程序運行時,先輸入班級學生的人數(shù),再輸入班級學生的信息,接下來顯示系統(tǒng)菜單。根據(jù)用戶的選擇,實現(xiàn)相應的功能。當輸入1時,根據(jù)學號查找學生信息;輸入2時,輸出班級所有學生信息;輸入0時,結(jié)束程序。具體任務任務6.4用集合保存多個學生4技能點1:集合的分類Java集合框架為不同類型的集合定義了大量接口,如圖所示。集合有兩個基本接口:Collection和Map,Collection接口子接口中,Queue接口用來表示隊列,Set接口表示無序的,不能重復的數(shù)據(jù)元素的集合,List接口表示有序的數(shù)據(jù)元素的集合。Map集合是雙列集合,由兩個集合組成,一個是鍵(key)集合,一個是值(value)集合。鍵集合是Set類型,因此鍵不能重復。而值集合是Collection類型,可以有重復的元素。Java中的集合是支持泛型的,在創(chuàng)建集合類型時,可以指定元素的類型。技術準備任務6.4用集合保存多個學生4技能點2:用List存取數(shù)據(jù)方法名功能booleanadd(E
e)將指定的元素追加到此列表的末尾voidadd(int
index,E
element)將指定的元素插入此列表中的指定位置Eremove(inti)刪除該列表中指定位置的元素booleanremove(Object
o)從列表中刪除指定元素的第一個出現(xiàn)(如果存在)Eget(int
index)返回此列表中指定位置的元素intindexOf(Object
o)返回此列表中指定元素的第一次出現(xiàn)的索引,如果此列表不包含元素,則返回-1Eset(int
index,E
element)用指定的元素(可選操作)替換此列表中指定位置的元素List接口常用方法任務6.4用集合保存多個學生4案例:用ArrayList實現(xiàn)對學生姓名的查找和遍歷教師演示//創(chuàng)建一個ArrayList的對象,用于存放多名學生的姓名List<String>names=newArrayList<>();//集合中添加元素names.add("張曉曉");names.add("蓉鵬富");names.add("蓉鵬強");//for循環(huán)遍歷集合System.out.println("集合中的元素有:");for(inti=0;i<names.size();i++){System.out.printf("%s\t",names.get(i));}技能點3:用Set存取數(shù)據(jù)任務6.4用集合保存多個學生4Set接口常用方法方法名功能booleanadd(E
e)如果指定的元素不存在,則將其指定的元素添加booleancontains(Objecto)
如果此集合包含指定的元素,則返回trueinthashCode()
返回此集合的哈希碼值booleanremove(Object
o)
如果存在,則從該集合中刪除指定的元素Iterator<E>iterator()
返回此集合中元素的迭代器intsize()
返回此集合中的元素數(shù)voidclear()
從此集合中刪除所有元素任務6.4用集合保存多個學生4案例:用Set實現(xiàn)存儲和遍歷學生學號教師演示
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);}技能點4:用Queue和Deque存取數(shù)據(jù)任務6.4用集合保存多個學生4Queue接口常用方法方法名功能booleanadd(E
e)將指定的元素插入到此隊列中,如果可以立即執(zhí)行此操作,而不會違反容量限制,trueEelement()檢索,但不刪除隊頭元素booleanoffer(E
e)如果在不違反容量限制的情況下立即執(zhí)行,則將指定的元素插入到此隊列中Epeek()檢索但不刪除此隊列的頭,如果此隊列為空,則返回nullEpoll()檢索并刪除此隊列的頭,如果此隊列為空,則返回nullEremove()檢索并刪除此隊列的頭技能點5:用Map存取數(shù)據(jù)任務6.4用集合保存多個學生4Map接口常用方法方法名功能Vget(Objectkey)獲得與鍵關聯(lián)的值。如果在Map中沒有找到這個鍵,返回nullVput(Kkey,Vvalue)如果鍵不存在,將鍵值對放到集合中,返回null。如果鍵存在,用新的值替換舊值,并返回舊值booleancontainsKey(Object
key)如果集合中有這個鍵,返回truebooleancontainsValue(Object
value)如果集合中有這個值,返回true任務實施任務6.4用集合保存多個學生4第一步:任務分析確定用到的集合類型:
分析用到的類:(1)學生類
(2)班級類
(3)班級管理類:包含根據(jù)學號查找學生信息的方法,輸出班級學生信息的方法第二步:編碼實現(xiàn)(1)編寫學生類學生類屬性有:學號、姓名、年齡和電話號碼,成員方法有getter/setter、toString()、equals()、hashCode()等。(2)編寫班級類班級類中包含用于存放班級學生信息的Map集合、初始化班級學生信息的成員方法。任務實施任務6.4用集合保存多個學生4(3)編寫班級管理類班級管理類包含按照學號查找學生信息和輸出班級信息的方法。(4)編寫Main類Main類中包含顯示程序菜單和根據(jù)用戶輸入調(diào)用相應方法的功能。
第三步:運行測試第四步:驗證程序運行結(jié)果AEBCD小組協(xié)作,完成任務評價測試任務6.4用集合保存多個學生4評價指標評價標準分值得分創(chuàng)建項目正確創(chuàng)建Java項目10
輸入正確定義集合類型,輸入學生信息10
處理正確實現(xiàn)根據(jù)學號查找學生信息30
輸出結(jié)果正確輸出學生信息,用戶界面友好30
編碼規(guī)范變量命名規(guī)范、有合理的注釋20
拓展提升——泛型類的定義任務6.4用集合保存多個學生4泛型是JDK5.0的新特性之一,其本質(zhì)是參數(shù)化類型,也就是將操作的數(shù)據(jù)類型指定成一個參數(shù)。這種參數(shù)類型可以用在類、接口和方法中,分別成為泛型類、泛型接口和泛型方法。泛型類就是有一個或多個類型變量的類。類型變量用T表示,用尖括號括起來,放在類名的后面,類型變量也可以有多個。類型變量在整個類定義中用于指定方法的返回類型以及字段和局部變量的類型。任務6.4用集合保存多個學生4案例:定義一個包含學生姓名、學號和分數(shù)的泛型類教師演示第一步:任務分析第二步:編寫泛型類StudentpublicclassStudent<T>{
/***學生的分數(shù)*/Tscore;}第三步:在Main類中編寫測試代碼Student<Integer>zs=newStudent<>();拓展提升——泛型方法的定義任務6.4用集合保存多個學生4泛型方法就是帶有泛型參數(shù)的方法,類型參數(shù)可以作為方法的返回類型或者方法的參數(shù)類型??梢栽诜盒皖愔卸x泛型方法,也可以在普通類中定義泛型方法。泛型方法定義的語法:[訪問控制符]<T>T方法名(T參數(shù)名1,T...參數(shù)名){}任務6.4用集合保存多個學生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"));}}任務描述任務6.5程序中的異常處理5在用數(shù)組和集合保存多名學生信息時,如果數(shù)組下標越界、集合對象沒有初始化程序可能會產(chǎn)生異常。本任務:識別任務6.1-6.4中可能產(chǎn)生的異常,并加上異常處理,確保程序的健壯性。具體任務任務6.5程序中的異常處理5技能點1:認識異常及異常的分類1.認識異常JDK中提供了Throwable類,該類有兩個直接子類:Error和Exception,Error就是指程序運行過程中產(chǎn)生的嚴重錯誤,程序員沒有辦法解決的,這類錯誤不是我們這章學習的內(nèi)容。Exception是指程序運行過程中產(chǎn)生的錯誤,程序員能通過Java提供的異常處理機制捕獲并處理。本章學的異常處理就是Exception類及其子類。2.異常分類異常分為:系統(tǒng)定義的異常類(JDK中提供的異常類,Exception及其子類)和用戶自定義的異常類。技術準備任務6.5程序中的異常處理5技能點2:異常處理的實現(xià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等.壓縮文件請下載最新的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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年江蘇省公務員錄用考試《行測》真題(C類)及答案解析
- 吉林師范大學《色彩頭像技法解析》2021-2022學年第一學期期末試卷
- 吉林師范大學《教育社會學》2021-2022學年第一學期期末試卷
- 吉林師范大學《歌曲鋼琴彈唱Ⅱ》2021-2022學年第一學期期末試卷
- 房地產(chǎn)開發(fā)物資采購方案
- 機場候機樓鋼結(jié)構雨棚施工方案
- 吉林大學《微積分EI》2021-2022學年第一學期期末試卷
- P4全彩LED會議室顯示屏安裝方案
- 公共交通站點消防工程實施方案
- 激光科顧客跟進管理制度
- 2023~2024學年第一學期高一期中考試數(shù)學試題含答案
- 2023年國家公務員錄用考試《行測》行政執(zhí)法卷-解析
- 建筑物修復行業(yè)市場深度分析報告
- 西歐莊園教學設計 統(tǒng)編版九年級歷史上冊
- 城市軌道交通脫軌事故應急預案
- 2021年四川樂山中考滿分作文《把詩情寫進青春里》
- 2024新版七年級英語單詞表
- 2024年移動網(wǎng)格經(jīng)理(認證考試)備考試題庫大全-上單選、多選題匯
- 江蘇省徐州市2023-2024學年八年級上學期期中英語試題
- 牙體牙髓病學-關于牙齒的故事智慧樹知到答案2024年南昌大學
- 【導學案】在奉獻中成就精彩人生 2024-2025學年七年級道德與法治上冊(統(tǒng)編版2024)
評論
0/150
提交評論