




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章對(duì)象和封裝課程地位每門(mén)課程的第一章必須有此頁(yè),說(shuō)明本課程在ACCP8.0課程體系中的地位,與前后課程的關(guān)系2/45本課目標(biāo)學(xué)完本門(mén)課程后,你能夠:使用Java編寫(xiě)面向?qū)ο蟮某绦蚴褂眉洗嫒?duì)象使用Java異常處理編寫(xiě)程序使用Java流操作文件使用多線程實(shí)現(xiàn)多分支程序開(kāi)發(fā)3/45課程結(jié)構(gòu)圖4/45課程項(xiàng)目展示項(xiàng)目案例:嗖嗖移動(dòng)業(yè)務(wù)大廳演示課程項(xiàng)目5/45相關(guān)課程回顧什么是類,什么是對(duì)象?如何創(chuàng)建對(duì)象?如何在程序中接收控制臺(tái)的輸入?提問(wèn)6/45學(xué)習(xí)方法方法對(duì)比C#的設(shè)計(jì)思想類似技能點(diǎn)的異同點(diǎn)獨(dú)立解決問(wèn)題7/45預(yù)習(xí)檢查如何從現(xiàn)實(shí)世界中抽象出類?構(gòu)造方法的作用和特點(diǎn)是什么?什么是方法重載?如何實(shí)現(xiàn)類的封裝?定義地址類,要求如下:屬性:國(guó)家、省份、城市、街道、郵編方法:返回地址信息將屬性進(jìn)行封裝8/45集中測(cè)試本章任務(wù)用類圖設(shè)計(jì)Dog和Penguin類領(lǐng)養(yǎng)寵物并打印寵物信息9/45本章目標(biāo)使用類圖描述設(shè)計(jì)掌握面向?qū)ο笤O(shè)計(jì)基本步驟掌握類和對(duì)象的概念掌握構(gòu)造方法及其重載掌握封裝的概念及其使用10/45為什么使用面向?qū)ο?-1現(xiàn)實(shí)世界是由什么組成的?世界由對(duì)象組成11/45為什么使用面向?qū)ο?-2軟件出現(xiàn)的目的用計(jì)算機(jī)的語(yǔ)言描述現(xiàn)實(shí)世界用計(jì)算機(jī)解決現(xiàn)實(shí)世界的問(wèn)題面向?qū)ο笤O(shè)計(jì)和開(kāi)發(fā)程序的好處交流更加流暢提高設(shè)計(jì)和開(kāi)發(fā)效率面向?qū)ο蟮乃枷敕先祟愃季S習(xí)慣面向?qū)ο蟮氖澜缑枋?2/45一個(gè)現(xiàn)實(shí)世界的問(wèn)題寵物——現(xiàn)實(shí)世界的對(duì)象如何在計(jì)算機(jī)中描述它們?從現(xiàn)實(shí)中抽象出類分三步:1.找出它的種類2.找出它的屬性3.找出它的行為問(wèn)題13/45用面向?qū)ο竺枋鍪澜?-1用面向?qū)ο蟮乃枷朊枋鍪澜绲谝徊剑喊l(fā)現(xiàn)類根據(jù)“對(duì)象”抽象出“類”classDog{
}名詞各個(gè)狗對(duì)象14/45用面向?qū)ο竺枋鍪澜?-2第二步:發(fā)現(xiàn)類的屬性狗類共有的特征:1.品種2.年齡3.昵稱4.健康情況5.跟主人的親密度……classDog{
Stringname="旺財(cái)";//昵稱
inthealth=100;//健康值
intlove=0;//親密度
Stringstrain="拉布拉多犬";//品種
}只放和業(yè)務(wù)相關(guān)的屬性名詞15/45用面向?qū)ο竺枋鍪澜?-3第三步:發(fā)現(xiàn)類的方法狗類共有的行為:1.跑2.吠3.輸出狗的信息……動(dòng)詞只放和業(yè)務(wù)相關(guān)的方法classDog{
Stringname="旺財(cái)";//昵稱inthealth=100;//健康值intlove=0;//親密度Stringstrain=
"拉布拉多犬";//品種
/*輸出狗的信息*/
publicvoidprint(){
//輸出狗信息的代碼}
}16/45類圖使用類圖描述類用于分析和設(shè)計(jì)“類”直觀、容易理解+name:String+health:int+love:int+strain:StringDog+print():void“+”:public“-”:private類名返回值類型類型屬性名參數(shù):名字:類型,名字:類型方法名17/45小結(jié)面向?qū)ο笤O(shè)計(jì)的過(guò)程是什么?抽象的原則是什么?為什么說(shuō)類圖是面向?qū)ο笤O(shè)計(jì)的好工具?提問(wèn)18/45實(shí)現(xiàn)領(lǐng)養(yǎng)寵物實(shí)現(xiàn)領(lǐng)養(yǎng)寵物功能編寫(xiě)寵物類Dog和Penguin創(chuàng)建寵物對(duì)象,輸入領(lǐng)養(yǎng)的寵物信息并輸出19/45演示示例1:領(lǐng)養(yǎng)寵物構(gòu)造方法2-1對(duì)象初始化Penguinpgn=newPenguin();="qq";pgn.sex="Q仔";classPenguin{//屬性
/*無(wú)參構(gòu)造方法*/publicPenguin(){name="qq";love=20;sex="Q仔";System.out.println("執(zhí)行構(gòu)造方法");}}使用構(gòu)造方法:Penguinpgn1=newPenguin();能否在創(chuàng)建對(duì)象的同時(shí)就完成賦值?構(gòu)造方法20/45構(gòu)造方法2-2構(gòu)造方法訪問(wèn)修飾符構(gòu)造方法名(){//初始化代碼}與類名相同無(wú)返回值類型可以指定參數(shù)語(yǔ)法publicPenguin(){}系統(tǒng)提供默認(rèn)無(wú)參構(gòu)造方法
示例21/45構(gòu)造方法重載2-1自定義構(gòu)造方法publicPenguin(){name="qq";love=20;sex="Q仔";}示例publicPenguin(Stringname,inthealth,intlove,Stringsex){=name;this.health=health;this.love=love;this.sex=sex;}系統(tǒng)不再提供默認(rèn)無(wú)參構(gòu)造方法
方法名相同參數(shù)數(shù)據(jù)類型或參數(shù)個(gè)數(shù)不同方法重載
與返回值、訪問(wèn)修飾符無(wú)關(guān)System.out.println(45);System.out.println(true);System.out.println("狗在玩耍!");this關(guān)鍵字是對(duì)一個(gè)對(duì)象的默認(rèn)引用,這里用以區(qū)分同名成員變量22/45構(gòu)造方法重載2-2構(gòu)造方法重載的調(diào)用pgn=newPenguin();pgn.print();pgn=newPenguin("美美",80,20,"Q仔");pgn.print();publicPenguin(Stringname,inthealth,intlove,Stringsex){=name;this.health=health;this.love=love;this.sex=sex;}publicPenguin(){name="qq";love=20;sex="Q仔";}23/45構(gòu)造方法閱讀代碼,說(shuō)出運(yùn)行結(jié)果,并指出原因classPenguin{
Stringname=null;//昵稱inthealth=0;//健康值Stringsex=null;//性別publicvoidPenguin(){ health=10;sex="雄";System.out.println("執(zhí)行構(gòu)造方法");}publicvoidprint(){System.out.println("企鵝的名字是"+name+",健康值是"+health+",性別是"+sex);}}Penguinpgn3=newPenguin();pgn3.print();有返回值類型,不是構(gòu)造方法代碼閱讀調(diào)用默認(rèn)無(wú)參構(gòu)造方法24/45常見(jiàn)錯(cuò)誤請(qǐng)指出下面代碼的錯(cuò)誤classDog{privateStringname="旺財(cái)";//昵稱privateinthealth=100;//健康值privateintlove=0;//親密度
publicvoidplay(intn){intlocalv;health=health-n; System.out.println(name+""+localv+""+health+""+love);}publicstaticvoidmain(String[]args){Dogd=newDog();d.play(5);}}局部變量沒(méi)有初始化25/45代碼閱讀static關(guān)鍵字2-1Penguinpgn1=newPenguin();pgn1.sex=Penguin.SEX_MALE;class
Penguin{
staticfinalStringSEX_MALE="Q仔";
staticfinalStringSEX_FEMALE="Q妹";}
static
voidprint(){}用類名調(diào)用:
Penguin.print();使用static定義變量使用static定義方法可否通過(guò)類名直接訪問(wèn)成員變量?問(wèn)題用final修飾的變量稱為常量,其值固定不變26/45演示示例2:靜態(tài)常量static關(guān)鍵字2-2static還可以用來(lái)修飾什么?使用static修飾成員時(shí),如何分配內(nèi)存空間?問(wèn)題
static可以用來(lái)修飾屬性、方法和代碼塊27/45演示示例3:
static修飾代碼塊小結(jié)static修飾與非static修飾的區(qū)別static、非private修飾非static、private修飾屬性類屬性、類變量實(shí)例屬性、實(shí)例變量方法類方法實(shí)例方法調(diào)用方式類名.屬性類名.方法()對(duì)象.屬性對(duì)象.方法()對(duì)象.屬性對(duì)象.方法()歸屬類單個(gè)對(duì)象28/45常見(jiàn)錯(cuò)誤請(qǐng)指出下面代碼的錯(cuò)誤classDog{privateStringname="旺財(cái)";//昵稱privateinthealth=100;//健康值
privateintlove=0;//親密度
publicvoidplay(intn){staticintlocalv=5; health=health-n; System.out.println(name+""+localv+""+health+""+love);} publicstaticvoidmain(String[]args){Dogd=newDog();d.play(5);}}在實(shí)例方法里不可以定義static變量代碼閱讀29/45為什么要使用封裝下面代碼有什么缺陷?如何解決上面設(shè)計(jì)的缺陷?Dogd=newDog();d.health=-1000;屬性隨意訪問(wèn),不合理的賦值使用封裝問(wèn)題30/45什么是封裝面向?qū)ο笕筇卣髦弧庋b封裝的概念封裝的好處封裝:將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問(wèn),而是通過(guò)該類提供的方法來(lái)實(shí)現(xiàn)對(duì)隱藏信息的操作和訪問(wèn)隱藏類的實(shí)現(xiàn)細(xì)節(jié)只能通過(guò)規(guī)定方法訪問(wèn)數(shù)據(jù)方便加入控制語(yǔ)句方便修改實(shí)現(xiàn)31/45如何使用封裝封裝的步驟修改屬性的可見(jiàn)性1在getter/setter方法中加入屬性控制語(yǔ)句3創(chuàng)建公有的getter/setter方法2設(shè)為private用于屬性的讀寫(xiě)對(duì)屬性值的合法性進(jìn)行判斷32/45演示示例4:類的封裝小結(jié)classDog{
privateStringname="旺財(cái)";//昵稱
privateinthealth=100;//健康值
privateintlove=0;//親密度
privateStringstrain="拉布拉多犬";//品種publicintgetHealth(){returnhealth;}publicvoidsetHealth
(inthealth){if(health>100||health<0){this.health=40;System.out.println("健康值應(yīng)該在0和100之間,默認(rèn)值是40");}else
this.health=health;}//其它getter/setter方法}this代表當(dāng)前對(duì)象-name:String-health:int-love:int-strain:StringDog+print():void+setHealth():void+getHealth():String……123技巧添加getter/setter方法的快捷鍵:Shift+Alt+S+R33/45代碼閱讀this的用法this關(guān)鍵字的用法調(diào)用屬性調(diào)用方法調(diào)用構(gòu)造方法this.health=100;="大黃";this.print();this();如果使用,必須是構(gòu)造方法中的第一條語(yǔ)句this("小黑",100,100,"雄");34/45小結(jié)分析需求,用封裝方式設(shè)計(jì)類,畫(huà)出類圖汽車銷售人員銷售汽車,可售款式有凱越、君威每款汽車有款式和編號(hào),款式、編號(hào)不能修改汽車銷售人員有姓名,姓名不能修改銷售人員有兩種銷售方式:按車輛銷售,每次一輛按車型銷售(凱越),要同時(shí)告訴銷售人員購(gòu)買數(shù)量-type:String-id:StringExcelle+Excelle(id:String,type:String)+getType():String+getId():String-type:String-id:StringRegal+Regal(id:String,type:String)+getType():String+getId():String-name:StringSeller+getName():String+setName(name:String):void+sell(car:Excelle):void+sell(car:Regal):void+sell(car:Excelle,num:int):void凱越君威銷售員現(xiàn)場(chǎng)編程35/45學(xué)員操作——用類圖設(shè)計(jì)Dog和Penguin類需求說(shuō)明運(yùn)用面向?qū)ο笏枷氤橄蟪鯠og類和Penguin類,畫(huà)出對(duì)應(yīng)類圖根據(jù)類圖編寫(xiě)Dog類和Penguin類添加默認(rèn)構(gòu)造方法練習(xí)類型屬性行為狗昵稱健康值親密度品種輸出信息企鵝昵稱健康值親密度性別輸出信息36/45完成時(shí)間:20分鐘學(xué)員操作——領(lǐng)養(yǎng)寵物并打印寵物信息2-1訓(xùn)練要點(diǎn)類的結(jié)構(gòu)類的封裝對(duì)象的創(chuàng)建,類的屬性和方法的調(diào)用指導(dǎo)37/45講解需求說(shuō)明需求說(shuō)明根據(jù)控制臺(tái)提示信息選擇領(lǐng)養(yǎng)寵物(狗)輸入昵稱、品種、健康值打印寵物信息要保證健康值的有效性(在1到100之間)學(xué)員操作——領(lǐng)養(yǎng)寵物并打印寵物信息2-2實(shí)現(xiàn)思路創(chuàng)建Dog類編寫(xiě)Test類從控制臺(tái)輸入寵物信息打印寵物信息保證健康值的有效性,否則取默認(rèn)值60指導(dǎo)38/45完成時(shí)間:30分鐘共性
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校社團(tuán)工作計(jì)劃關(guān)注學(xué)生科學(xué)知識(shí)普及
- 2025家庭以太網(wǎng)供電通信設(shè)備
- 2024基于大數(shù)據(jù)的智能漏洞掃描程序開(kāi)發(fā)技術(shù)規(guī)范
- 2024基于大數(shù)據(jù)的中小微企業(yè)精準(zhǔn)智力服務(wù)平臺(tái)架構(gòu)、功能及要求
- 中學(xué)教學(xué)工作總體規(guī)劃計(jì)劃
- 價(jià)值鏈分析與優(yōu)化計(jì)劃
- 非營(yíng)利組織的募捐計(jì)劃與活動(dòng)
- 優(yōu)化采購(gòu)流程的工作計(jì)劃
- 跨界融合-AI技術(shù)在各行業(yè)的創(chuàng)新應(yīng)用與挑戰(zhàn)
- 跨界合作下的項(xiàng)目管理與協(xié)同經(jīng)驗(yàn)分享
- 顧客提問(wèn)的問(wèn)題100條
- 肝膿腫教學(xué)查房課件
- 跳繩之雙腳跳教案
- 拇外翻護(hù)理課件
- 六年級(jí)英語(yǔ)教學(xué)隨筆5篇
- 物資管理工作流程圖
- 讀書(shū)分享交流會(huì)《從一到無(wú)窮大》課件
- 高大模板支撐體系安全檢查驗(yàn)收表
- 蘇教版六年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)計(jì)劃及全冊(cè)教案
- 醫(yī)療器械可用性工程文檔
- GB/T 24475-2023電梯遠(yuǎn)程報(bào)警系統(tǒng)
評(píng)論
0/150
提交評(píng)論