Java程序設(shè)計114_第1頁
Java程序設(shè)計114_第2頁
Java程序設(shè)計114_第3頁
Java程序設(shè)計114_第4頁
Java程序設(shè)計114_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章 (一)封裝用面向?qū)ο竺枋鍪澜?-1用面向?qū)ο蟮乃枷朊枋鍪澜鏻第一步:發(fā)現(xiàn)類 根據(jù)根據(jù)“對象對象”抽象出抽象出“類類” class Dog 名詞名詞 各個狗對象各個狗對象 用面向?qū)ο竺枋鍪澜?-2l第二步:發(fā)現(xiàn)類的屬性 狗類共有的狗類共有的特征特征: 1. 品種品種2. 年齡年齡3. 昵稱昵稱4. 健康情況健康情況5. 跟主人的親密度跟主人的親密度 class Dog String name = 旺財旺財; / 昵稱昵稱 int health = 100; / 健康值健康值 int love = 0; / 親密度親密度 String strain = 拉布拉多犬拉布拉多犬; / 品種品種

2、 只放我關(guān)心只放我關(guān)心的屬性的屬性名詞名詞用面向?qū)ο竺枋鍪澜?-3l第三步:發(fā)現(xiàn)類的方法 狗類共有的狗類共有的行為行為: 1. 跑跑2. 吠吠3. 輸出狗的信息輸出狗的信息 動詞動詞class Dog String name = 旺財旺財; / 昵稱昵稱 int health = 100; / 健康值健康值 int love = 0; / 親密度親密度 String strain = 拉布拉多犬拉布拉多犬; ; / 品種品種 /* 輸出狗的信息輸出狗的信息 */ public void print() / 輸出狗信息的代碼輸出狗信息的代碼 只放我關(guān)心只放我關(guān)心的方法的方法類圖使用類圖描述類l用

3、于分析和設(shè)計“類”l直觀、容易理解+ name:String+ health:int+ love:int+ strain:StringDog+ print( ) : void“+”:public“-”:private類名類名返回值返回值類型類型類型類型屬性名屬性名參數(shù):參數(shù):名字名字:類型類型,名字名字: :類型類型方法名方法名小結(jié)面向?qū)ο笤O(shè)計的過程是什么?抽象的原則是什么?為什么說類圖是面向?qū)ο笤O(shè)計的好工具?構(gòu)造方法 3-1對象初始化Penguin pgn = new Penguin(); = qq;pgn.sex = Q仔仔; class Penguin / 屬性屬性 /*

4、 無參構(gòu)造方法無參構(gòu)造方法 */ public Penguin() name = qq; love = 20; sex = Q仔仔; System.out.println(執(zhí)行構(gòu)造方法執(zhí)行構(gòu)造方法); 使用構(gòu)造方法:使用構(gòu)造方法:Penguin pgn1 = new Penguin(); 能否在創(chuàng)建對象的能否在創(chuàng)建對象的同時就完成賦值同時就完成賦值? ?構(gòu)造方法構(gòu)造方法構(gòu)造方法 3-2構(gòu)造方法public 構(gòu)造方法名構(gòu)造方法名( ) /初始化代碼初始化代碼與類名相同與類名相同沒有返回值沒有返回值類型類型public Penguin() name = qq; love = 20; sex = Q

5、仔仔; System.out.println(執(zhí)行構(gòu)造方法執(zhí)行構(gòu)造方法);可以指定可以指定參數(shù)參數(shù) 構(gòu)造方法 3-3閱讀代碼,說出運行結(jié)果,并指出原因class Penguin public void Penguin() health=10; sex=雄雄; System.out.println(執(zhí)行構(gòu)造方法執(zhí)行構(gòu)造方法); public void print() System.out.println(企鵝的名字是企鵝的名字是 + name + ,健康值是健康值是 + health + ,性別是性別是 + sex); Penguin pgn3=new Penguin();pgn3.print(

6、);有返回值類型,有返回值類型,不是構(gòu)造方法不是構(gòu)造方法 常見錯誤請指出下面代碼的錯誤class Dog private String name = 旺財旺財; / 昵稱昵稱 private int health = 100; / 健康值健康值 private int love = 0; / 親密度親密度 public void play(int n) int localv; health = health - n; System.out.println(name+ +localv+ +health+ +love); public static void main(String args) D

7、og d=new Dog(); d.play(5); 局部變量沒局部變量沒有初始化有初始化靜態(tài)常量static可以用來修飾屬性、方法和代碼塊static修飾的屬性和方法稱為類屬性(類變量)、類方法不使用static修飾的屬性和方法,屬于單個對象,通常稱為實例屬性(實例變量)、實例方法static修飾的變量和方法可以通過類名和對象名訪問,而不用static修飾的變量和方法只能通過對象名訪問final可以用來修飾屬性、方法和類用final修飾的變量成為常量,其值固定不變Penguin pgn1 = new Penguin();pgn1.sex = Penguin.SEX_MALE; class P

8、enguin static final String SEX_MALE=Q仔仔; static final String SEX_FEMALE=Q妹妹; Java中中定義常量定義常量的語法的語法static void print() 用類名調(diào)用:用類名調(diào)用:Dog.print(); 使用使用static定義變量定義變量 使用使用static定義方法定義方法 演示示例:靜態(tài)常量演示示例:靜態(tài)常量可否這樣賦值?常見錯誤請指出下面代碼的錯誤class Dog private String name = 旺財旺財; / 昵稱昵稱 private int health = 100; / 健康值健康值 p

9、rivate int love = 0; / 親密度親密度 public void play(int n) static int localv=5; health = health - n; System.out.println(name+ +localv+ +health+ +love); public static void main(String args) Dog d=new Dog(); d.play(5); 在方法里不可以在方法里不可以定義定義static變量變量 方法重載一個類是否可以有多個構(gòu)造方法?方法重載,指同一個類中多個方法:l方法名相同l參數(shù)列表不同與返回值、訪問修飾符無

10、關(guān)與返回值、訪問修飾符無關(guān) public Penguin() /代碼代碼 public Penguin(String name, int health, int love, String sex) /代碼代碼 示例示例2 System.out.println(45);System.out.println(true);System.out.println(狗在玩耍!狗在玩耍!); 示例示例1 為什么要使用封裝 下面代碼有什么問題?如何解決上面設(shè)計的缺陷?Dog d = new Dog();d.health = 1000; 不合理的賦值不合理的賦值 使用使用封裝封裝 什么是封裝面向?qū)ο笕筇卣髦?/p>

11、封裝l封裝的概念l封裝的好處封裝:將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪封裝:將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法來實現(xiàn)對隱藏信息的操作和訪問問,而是通過該類提供的方法來實現(xiàn)對隱藏信息的操作和訪問 隱藏類的隱藏類的實現(xiàn)細節(jié)實現(xiàn)細節(jié)只能通過規(guī)只能通過規(guī)定方法訪問定方法訪問數(shù)據(jù)數(shù)據(jù)方便加入控方便加入控制語句制語句方便修改實現(xiàn)方便修改實現(xiàn)如何使用封裝封裝的步驟 修改屬性的可見性修改屬性的可見性 創(chuàng)建創(chuàng)建getter/setter方法方法 在在getter/setter方法中方法中加入屬性控制語句加入屬性控制語句 設(shè)為設(shè)為private用于屬性的用于屬性

12、的讀寫讀寫 對屬性值的對屬性值的合法性合法性進行進行判斷判斷 class Dog private String name = 旺財旺財; / 昵稱昵稱 private int health = 100; / 健康值健康值 private int love = 0; / 親密度親密度 private String strain = 拉布拉多犬拉布拉多犬; / 品種品種 public int getHealth() return health; public void setHealth (int health) if (health 100 | health 0) this.health = 4

13、0; System.out.println(健康值應(yīng)該在健康值應(yīng)該在0和和100之間,默認值是之間,默認值是40); else this.health = health; / 其它其它getter/setter方法方法this代表代表當(dāng)前對象當(dāng)前對象 1 1 2 2 2 2 3 3 - name:String- health:int- love:int- strain:StringDog+ print():void+ setHealth():void+ getHealth():String this的用法this關(guān)鍵字的用法l調(diào)用屬性l調(diào)用方法l調(diào)用構(gòu)造方法this.health = 100;

14、 = 大黃大黃;this.print(); this();如果使用,如果使用,必須是必須是構(gòu)構(gòu)造方法中的造方法中的第一條語第一條語句句 this(小黑小黑,100,100,雄雄);小結(jié)分析需求,用封裝方式設(shè)計類,畫出類圖l汽車銷售人員銷售汽車,可售款式有凱越、君威每款汽車有款式和編號,款式、編號不能修改汽車銷售人員有姓名,姓名不能修改l銷售人員有兩種銷售方式:按車輛銷售,每次一輛按車型銷售(凱越),要同時告訴銷售人員購買數(shù)量- type:String- id:StringExcelle+ Excelle(id:String,type:String)+ getType():S

15、tring+ 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 凱越凱越 君威君威 銷售員銷售員 練習(xí)用類圖設(shè)計Dog和Penguin類 需求說明:l

16、運用面向?qū)ο笏枷氤橄蟪鯠og類和Penguin類,畫出對應(yīng)類圖l根據(jù)類圖編寫Dog類和Penguin類l添加默認構(gòu)造方法完成時間:完成時間:20分鐘分鐘類型屬性行為狗昵稱健康值親密度品種輸出信息企鵝昵稱健康值親密度性別輸出信息指導(dǎo)打印Dog信息2-1訓(xùn)練要點:l類的結(jié)構(gòu),對象的創(chuàng)建,類的屬性和方法的調(diào)用 l類的封裝 需求說明:l根據(jù)控制臺提示信息選擇領(lǐng)養(yǎng)寵物(狗),輸入昵稱、品種、健康值打印寵物信息l要保證健康值的有效性(在1到100之間)講解需求說明講解需求說明指導(dǎo)打印Dog信息2-2實現(xiàn)思路:l修改Dog類l編寫Test類完成時間:完成時間:30分鐘分鐘從控制臺輸入寵物信息從控制臺輸入寵物信息打印寵物信息打印寵物信息保證健康值的有效性,否則取默認值保證健康值的有效性,否則取默認值60練習(xí)Dog類的帶參構(gòu)造方法 需求說明:l增加帶參構(gòu)造方法l將setHealth()方法設(shè)為私有,注釋掉其他setter方法l修改Test類,使用帶參構(gòu)造方法創(chuàng)建對象完成時間:完成時間:20分鐘分鐘Dog(String name, int health, int l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論