版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章
類與對(duì)象程序設(shè)計(jì)方法的發(fā)展過程小作坊設(shè)計(jì)模式硬件成本高,軟件便宜,編程講究技巧,編程人數(shù)少結(jié)構(gòu)化程序設(shè)計(jì)硬件成本低,軟件成本高,編程講究可維護(hù)性,編程人數(shù)多面向?qū)ο蟪绦蛟O(shè)計(jì)硬件成本低,軟件代碼動(dòng)輒百萬行,軟件危機(jī),編程人數(shù)多程序設(shè)計(jì)方法公共數(shù)據(jù)函數(shù)函數(shù)函數(shù)函數(shù)算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)方法方法數(shù)據(jù)方法方法過程式程序設(shè)計(jì)OOP程序設(shè)計(jì)對(duì)象+消息消息一、面向?qū)ο蟮幕靖拍罘先藗內(nèi)粘W匀坏乃季S習(xí)慣;降低、分解問題的難度和復(fù)雜性,提高軟件的可重用性、可擴(kuò)展性、可管理性;獲得較高效率和較滿意效果。面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn):類與對(duì)象對(duì)象是表示現(xiàn)實(shí)世界中某個(gè)具體的事物;類的某一個(gè)對(duì)象則被稱為是類的一個(gè)實(shí)例,是類的實(shí)例化結(jié)果。類是對(duì)對(duì)象的抽象描述。是一種抽象的數(shù)據(jù)類型,它是所有具有一定共性的對(duì)象的抽象,是創(chuàng)建對(duì)象的“模板”。在現(xiàn)實(shí)世界中,是從對(duì)象提煉出類的概念;在編程時(shí),是先有類,然后通過類來創(chuàng)建對(duì)象張三
類(CLASS)
如:“classman”對(duì)對(duì)象進(jìn)行抽象為類對(duì)類進(jìn)行實(shí)例化對(duì)象(1)所有東西都是對(duì)象??蓪?duì)象想象成一種新型變量;它保存著數(shù)據(jù),但可要求它對(duì)自身進(jìn)行操作。(2)程序是一大堆對(duì)象的組合;通過消息傳遞,各對(duì)象知道自己該做些什么。(3)每個(gè)對(duì)象都有一種類型。根據(jù)語法,每個(gè)對(duì)象都是某個(gè)“類”的一個(gè)“實(shí)例”。其中,“類”(Class)是“類型”(Type)的同義詞。對(duì)象的屬性與方法對(duì)象是面向?qū)ο蟮某绦蛟O(shè)計(jì)模式,它由描述狀態(tài)的屬性(變量)和用來實(shí)現(xiàn)對(duì)象行為的方法(代碼)組成。計(jì)算機(jī)世界中的對(duì)象是把數(shù)據(jù)及其相關(guān)的操作封裝在一起所構(gòu)成的實(shí)體。封裝的實(shí)體=屬性(數(shù)據(jù))+方法(行為)幾種叫法屬性—靜態(tài)屬性—域—成員變量狀態(tài)方法—?jiǎng)討B(tài)屬性—成員方法行為消息(message)消息
對(duì)象之間相互請(qǐng)求或相互協(xié)作的途徑,是要求某個(gè)對(duì)象執(zhí)行某項(xiàng)操作的規(guī)格說明消息傳遞的三個(gè)要素:消息的接收者接收對(duì)象中哪個(gè)方法完成指定動(dòng)作此方法需要的參數(shù)發(fā)送對(duì)象
發(fā)出消息,請(qǐng)求接收對(duì)象響應(yīng)接收對(duì)象
收到消息后,經(jīng)過解釋,激活方法,予以響應(yīng)消息的格式所謂對(duì)一個(gè)對(duì)象發(fā)信息,就是調(diào)用該對(duì)象的一個(gè)方法。
對(duì)象名.方法名([參數(shù)])
如:Math.max(a,b);Integer.parseInt(str);String.length();
方法(method)方法是對(duì)象的行為方式(操作)對(duì)象與外界的接口作用
改變對(duì)象的屬性返回對(duì)象的屬性object1object2二、定義類[修飾符]
class類名
[extends父類][implements接口名]
{
成員變量聲明;構(gòu)造器聲明方法聲明;}Java實(shí)例——定義類publicclassdogs{
publicStringName;publicintWeight;publicintHeight;
publicvoidShowDog(Stringn,intx,inty){Name=n;Weight=x;Height=y;}publicvoideat(){System.out.println("Dogseatbone.");}publicvoidbark(){System.out.println("Adogwillbarkatstrangers.");}}Java實(shí)例——定義類classPoint{
privateintx,y;
publicvoidsetPoint(inta,intb){x=a;y=b;}
publicintgetX(){returnx;}publicintgetY(){returny;}publicStringtoString(){return"["+x+","+y+"]";}}三、定義對(duì)象[修飾符]
類名
對(duì)象名;對(duì)象名=new
類名(實(shí)參列表);或[修飾符]
類名
對(duì)象名=new
類名(實(shí)參列表);定義對(duì)象通常包括:聲明對(duì)象、創(chuàng)建對(duì)象和初始化對(duì)象三步。1、聲明、創(chuàng)建對(duì)象
類名對(duì)象名;
PointthePoint;注意:類屬于復(fù)合數(shù)據(jù)類型,因此,在聲明對(duì)象時(shí),系統(tǒng)并沒有為對(duì)象分配空間,用戶需要應(yīng)用new完成分配空間的任務(wù)。thePoint=newPoint();2、引用對(duì)象引用成員變量
對(duì)象名.成員變量名引用方法
對(duì)象名.方法名(參數(shù)列表)publicclassCircle{floatr;finaldoublePI=3.14159265;publicvoidsetR(floatx){r=x;}publicdoublearea(){returnPI*r*r;}publicdoubleperimeter(){return2*PI*r;}publicstaticvoidmain(String[]args){doublex,y;Circlecir=newCircle();cir.setR(12.5f);System.out.println("圓的面積為:"+cir.area()+"\n圓的周長(zhǎng)為:"+cir.perimeter());}}classPoint{privateintx,y;publicvoidsetPoint(inta,intb){x=a;y=b;}publicintgetX(){returnx;}publicintgetY(){returny;}publicStringtoString(){return"["+x+","+y+"]";}publicdoubledistance(Pointa){returnMath.sqrt((a.getX()-x)*(a.getX()-x)+(a.getY()-y)*(a.getY()-y));}}classPointDemo{publicstaticvoidmain(Stringargs[]){Pointsource=newPoint();Pointtarget=newPoint();source.setPoint(0,0);target.setPoint(5,8);System.out.println(“第一個(gè)點(diǎn)的坐標(biāo)位置為:"+source.toString());System.out.println(“第二個(gè)點(diǎn)的坐標(biāo)位置為:"+target.toString());System.out.println(“兩點(diǎn)的距離為:"+source.distance(target));}}3、初始化對(duì)象
類中包含有成員變量和方法,當(dāng)使用類聲明并創(chuàng)建對(duì)象時(shí),使用new關(guān)鍵字,這時(shí)系統(tǒng)為對(duì)象創(chuàng)建自己的內(nèi)存區(qū)域并自動(dòng)調(diào)用構(gòu)造器初始化成員變量。Java實(shí)例——?jiǎng)?chuàng)建對(duì)象classEmployee{Stringname;intage;floatsalary;voidprint(){System.out.println(name+“年齡為:”+age+“月薪為:”+salary);}}
Employeee=newEmployee();=“張立”;e.age=21;e.salary=528.37F;e.print();實(shí)例變量—成員變量其生命周期與對(duì)象存在的時(shí)間相同。用構(gòu)造器初始化對(duì)象classEmployee{Stringname;intage;floatsalary;
Employee(Stringn,inta,floats){name=n;if(a>=18&&a<=60)age=a;else{System.out.println("illegalage");System.exit(1);}salary=s;}voidprint(){System.out.println(name+“年齡為:”+age+“月薪為:”+salary);}}Employeee=newEmployee(“張立”,21,528.37F);e.print();構(gòu)造器(構(gòu)造方法)構(gòu)造器是一個(gè)類的方法中方法名與類名相同的方法。當(dāng)使用new關(guān)鍵字創(chuàng)建一個(gè)對(duì)象,為新建對(duì)象開辟了內(nèi)存空間之后,系統(tǒng)自動(dòng)根據(jù)參數(shù)調(diào)用相應(yīng)的構(gòu)造器來初始化這個(gè)新建對(duì)象。構(gòu)造器的主要功能是為數(shù)據(jù)成員賦初值。構(gòu)造器的特點(diǎn)構(gòu)造器名與類名相同;構(gòu)造器沒有返回類型,也不是void;構(gòu)造器能夠簡(jiǎn)化對(duì)象數(shù)據(jù)成員的初始化操作。如果不定義構(gòu)造器,此時(shí)系統(tǒng)會(huì)自動(dòng)為該系統(tǒng)生成一個(gè)默認(rèn)的沒有任何參數(shù)的構(gòu)造器,并使用缺省值來初始化實(shí)例變量;構(gòu)造器不能顯式地直接調(diào)用,總是和new運(yùn)算符一起被調(diào)用;使用不同數(shù)量、不同類型的參數(shù)對(duì)類初始化會(huì)擁有多個(gè)構(gòu)造器,這種現(xiàn)象稱為構(gòu)造器的重載;構(gòu)造器可以繼承,即子類可以繼承父類的構(gòu)造器。對(duì)象的創(chuàng)建和使用步驟定義類聲明引用類型的變量創(chuàng)建對(duì)象,把指向?qū)ο蟮囊梅诺揭妙愋妥兞恐惺褂米兞康膶傩院头椒ㄡ尫抛兞克伎臻gJava實(shí)例——定義構(gòu)造方法publicclassStudents{Stringname;Stringaddress;Stringgrade;intscore;publicvoidsetMessage(Stringx1,Stringx2,Stringx3){name=x1;address=x2;grade=x3;}publicvoidsetScore(inty){score=y;}publicstaticvoidmain(Stringargs[]){Studentszhang=newStudents();zhang.setMessage("張三","西安市興慶路1號(hào)","2003級(jí)國(guó)際貿(mào)易3班");zhang.setScore(90);Studentswang=newStudents();wang.setMessage("王五","西安市翠華路12號(hào)","2003級(jí)電子技術(shù)3班");wang.setScore(85);System.out.println(+zhang.address+zhang.grade+zhang.score);System.out.println(+wang.address+wang.grade+wang.score);}}publicclassStudent{Stringname;Stringaddress;Stringgrade;intscore;Student(Stringx1,Stringx2,Stringx3,inty){name=x1;address=x2;grade=x3;score=y;}publicstaticvoidmain(Stringargs[]){Studentzhang;zhang=newStude
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省南通市如皋一中2025-2026學(xué)年高一(上)期末物理模擬試卷(三)(含答案)
- 廣東省深圳市鹽田區(qū)2025-2026學(xué)年上學(xué)期期末九年級(jí)數(shù)學(xué)試卷(無答案)
- 廣東省潮州市2025-2026學(xué)年九年級(jí)(上)期末化學(xué)試卷(含答案)
- 2025-2026學(xué)年北師大版九年級(jí)上冊(cè)期末數(shù)學(xué)試卷(考試范圍:九上九下第一、二章)(含答案)
- 五官科考試試題及答案
- 文言文題目及答案初中
- 微機(jī)原理試題及答案
- 初中政治知識(shí)點(diǎn)總結(jié)課件
- 新人教版二年級(jí)語文上冊(cè)期中測(cè)試卷及答案
- 西游記讀后感初一
- 2026中國(guó)煙草總公司鄭州煙草研究院高校畢業(yè)生招聘19人備考題庫(kù)(河南)及1套完整答案詳解
- 2026年甘肅省蘭州市皋蘭縣蘭泉污水處理有限責(zé)任公司招聘筆試參考題庫(kù)及答案解析
- 陶瓷工藝品彩繪師崗前工作標(biāo)準(zhǔn)化考核試卷含答案
- 2025年全國(guó)高壓電工操作證理論考試題庫(kù)(含答案)
- 居間合同2026年工作協(xié)議
- 2025-2026學(xué)年(通*用版)高二上學(xué)期期末測(cè)試【英語】試卷(含聽力音頻、答案)
- 翻車機(jī)工操作技能水平考核試卷含答案
- 醫(yī)療機(jī)構(gòu)信息安全建設(shè)與風(fēng)險(xiǎn)評(píng)估方案
- 員工宿舍安全培訓(xùn)資料課件
- 化工設(shè)備培訓(xùn)課件教學(xué)
- 舞臺(tái)燈光音響控制系統(tǒng)及視頻顯示系統(tǒng)安裝施工方案
評(píng)論
0/150
提交評(píng)論