accp java 抽象和封裝.ppt_第1頁(yè)
accp java 抽象和封裝.ppt_第2頁(yè)
accp java 抽象和封裝.ppt_第3頁(yè)
accp java 抽象和封裝.ppt_第4頁(yè)
accp java 抽象和封裝.ppt_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、抽象和封裝,第一章,課程地位,每階段已包括:項(xiàng)目實(shí)戰(zhàn)、COT課程 總課時(shí): 1008,C#OOP,JavaScript,T-SQL,Java OOP,S2 350,Y2 344,JSP,S2:Java階段項(xiàng)目,預(yù)備課程,WinForms,Logic Java,S1 314,S1:.NET階段項(xiàng)目,ASP.NET,Hibernate,N-Tier,Ajax,Spring,Struts,HTML,C#,NTC,Project知識(shí),Y2:.NET畢業(yè)設(shè)計(jì)項(xiàng)目,COT,COT,COT,Y2:Java畢業(yè)設(shè)計(jì)項(xiàng)目,目標(biāo)崗位標(biāo)準(zhǔn)手冊(cè),就業(yè)技能結(jié)構(gòu)圖,本門課程目標(biāo),學(xué)完本門課程后,你能夠: 使用Java編寫

2、面向?qū)ο蟮某绦?使用集合存取對(duì)象 使用Java異常處理編寫程序 使用JDBC操作數(shù)據(jù)庫(kù) 使用Java操作XML文件 使用Oracle進(jìn)行簡(jiǎn)單的數(shù)據(jù)操作,課程項(xiàng)目展示,電子寵物系統(tǒng) 主人登錄 領(lǐng)養(yǎng)寵物 給寵物喂食 與寵物游戲 給寵物看病 顯示主人信息 顯示寵物信息,相關(guān)課程回顧,什么是類,什么是對(duì)象? 如何在類中編寫方法? 如何創(chuàng)建對(duì)象? 如何在程序中接收控制臺(tái)的輸入?,預(yù)習(xí)檢查,如何從現(xiàn)實(shí)世界中抽象出類? 構(gòu)造方法的作用和特點(diǎn)是什么? 什么是方法重載? 如何實(shí)現(xiàn)類的封裝?,本章任務(wù),用類圖描述電子寵物系統(tǒng)的設(shè)計(jì) 編寫代碼實(shí)現(xiàn)領(lǐng)養(yǎng)寵物功能,使用類圖描述設(shè)計(jì) 掌握面向?qū)ο笤O(shè)計(jì)基本步驟 掌握類和對(duì)象

3、的概念 掌握構(gòu)造方法及其重載 掌握封裝的概念及其使用,本章目標(biāo),為什么使用面向?qū)ο?-1,現(xiàn)實(shí)世界是由什么組成的?,世界由對(duì)象組成,為什么使用面向?qū)ο?-2,軟件出現(xiàn)的目的是為了: 用計(jì)算機(jī)的語(yǔ)言描述現(xiàn)實(shí)世界 用計(jì)算機(jī)解決現(xiàn)實(shí)世界的問(wèn)題 出現(xiàn)了軟件危機(jī),如何解決?,用面向?qū)ο蟮姆绞矫枋鰧?duì)象的世界,符合人類思維習(xí)慣,“問(wèn)題”和“解”一致, ,軟件與軟件危機(jī)4-1,軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合。 程序 是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列 數(shù)據(jù) 是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu) 文檔 是軟件開(kāi)發(fā)活動(dòng)的記錄,主要供人們閱讀,既可用于專業(yè)人

4、員和用戶之間的通信和交流,也可用于軟件開(kāi)發(fā)過(guò)程的管理和運(yùn)行階段的維護(hù). 簡(jiǎn)單的說(shuō): 軟件=程序+文檔,軟件危機(jī)是指在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)中所遇到的一系列嚴(yán)重問(wèn)題,幾乎所有軟件都不同程度地存在這些問(wèn)題. 概括地說(shuō)軟件危機(jī)包含兩方面問(wèn)題: 如何開(kāi)發(fā)軟件,怎樣滿足對(duì)軟件的日益增長(zhǎng)的需求 如何維護(hù)數(shù)量不斷膨脹的已有軟件,軟件與軟件危機(jī)4-2,(1)軟件危機(jī)的原因 硬件性能提高,價(jià)格則下降,應(yīng)用領(lǐng)域迅速擴(kuò)大; 要求計(jì)算機(jī)做的事越來(lái)越多,也越來(lái)越復(fù)雜; 這使計(jì)算機(jī)軟件的功能、規(guī)模及復(fù)雜性與日俱增; 軟件的復(fù)雜性達(dá)到了它的開(kāi)發(fā)者難以控制的程度; 大系統(tǒng)的復(fù)雜性是小程序無(wú)法比擬的。 (2)軟件危機(jī)的表現(xiàn) 不

5、能真正滿足用戶需要、供求關(guān)系失調(diào) 開(kāi)發(fā)費(fèi)用失控、進(jìn)度拖延、可靠性差、開(kāi)發(fā)效率低下 維護(hù)極為困難、重用程度很低、可靠性差。,軟件與軟件危機(jī)4-3,軟件與軟件危機(jī)4-4,尋求擺脫危機(jī)的出路 程序設(shè)計(jì)方法學(xué)的研究 著眼于程序本身,研究怎樣才能寫出高質(zhì)量的程序。如結(jié)構(gòu)化程序設(shè)計(jì)方法。 軟件工程學(xué)的研究 著眼于軟件生產(chǎn)的全過(guò)程(編程只是其中的一個(gè)階段),研究用工程學(xué)的方法來(lái)開(kāi)發(fā)軟件。 其它 如并發(fā)程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與算法、以及編程語(yǔ)言等方面的研究。,一個(gè)現(xiàn)實(shí)世界的問(wèn)題,寵物現(xiàn)實(shí)世界的對(duì)象 如何在計(jì)算機(jī)中描述它?,從現(xiàn)實(shí)中抽象出類分三步: 1. 找出它的種類 2. 找出它的屬性 3. 找出它的行為,用面向

6、對(duì)象描述世界3-1,用面向?qū)ο蟮乃枷朊枋鍪澜?第一步:發(fā)現(xiàn)類,根據(jù)“對(duì)象”抽象出“類”,class Dog ,名詞,各個(gè)狗對(duì)象,用面向?qū)ο竺枋鍪澜?-2,第二步:發(fā)現(xiàn)類的屬性,狗類共有的特征: 1. 品種 2. 年齡 3. 昵稱 4. 健康情況 5. 跟主人的親密度 ,class Dog String name = 旺財(cái); / 昵稱 int health = 100; / 健康值 int love = 0; / 親密度 String strain = 拉布拉多犬; / 品種 ,只放我關(guān)心的屬性,名詞,用面向?qū)ο竺枋鍪澜?-3,第三步:發(fā)現(xiàn)類的方法,狗類共有的行為: 1. 跑 2. 吠 3. 輸

7、出狗的信息 ,動(dòng)詞,class Dog String name = 旺財(cái); / 昵稱 int health = 100; / 健康值 int love = 0; / 親密度 String strain = 拉布拉多犬; / 品種 /* 輸出狗的信息 */ public void print() / 輸出狗信息的代碼 ,只放我關(guān)心的方法,類圖,使用類圖描述類 用于分析和設(shè)計(jì)“類” 直觀、容易理解,“+”:public “-”:private,類名,返回值類型,類型,屬性名,參數(shù): 名字:類型,名字:類型,方法名,小結(jié)1,面向?qū)ο笤O(shè)計(jì)的過(guò)程是什么? 抽象的原則是什么? 為什么說(shuō)類圖是面向?qū)ο笤O(shè)計(jì)的

8、好工具?,實(shí)現(xiàn)領(lǐng)養(yǎng)寵物,實(shí)現(xiàn)領(lǐng)養(yǎng)寵物功能 編寫寵物類Dog和Penguin 創(chuàng)建寵物對(duì)象,輸入寵物信息,最后輸出,構(gòu)造方法 3-1,對(duì)象初始化,Penguin pgn = new Penguin(); = qq; pgn.sex = Q仔;,class Penguin / 屬性 /* 無(wú)參構(gòu)造方法 */ public Penguin() name = qq; love = 20; sex = Q仔; System.out.println(執(zhí)行構(gòu)造方法); ,使用構(gòu)造方法: Penguin pgn1 = new Penguin();,能否在創(chuàng)建對(duì)象的同時(shí)就完成賦值?,構(gòu)造方法,

9、構(gòu)造方法 3-2,構(gòu)造方法負(fù)責(zé)對(duì)象成員的初始化工作,為實(shí)例變量賦予合適的初始值,public 構(gòu)造方法名( ) /初始化代碼 ,與類名相同,沒(méi)有返回值類型,public Penguin() name = qq; love = 20; sex = Q仔; System.out.println(執(zhí)行構(gòu)造方法); ,可以指定參數(shù),構(gòu)造方法 3-3,閱讀代碼,說(shuō)出運(yùn)行結(jié)果,并指出原因,class Penguin public void Penguin() health=10; sex=雄; System.out.println(執(zhí)行構(gòu)造方法); public void print() System.o

10、ut.println(企鵝的名字是 + name + ,健康值是 + health + ,性別是 + sex); ,Penguin pgn3=new Penguin(); pgn3.print();,有返回值類型,不是構(gòu)造方法,常見(jiàn)錯(cuò)誤,請(qǐng)指出下面代碼的錯(cuò)誤,class Dog private String name = 旺財(cái); / 昵稱 private int health = 100; / 健康值 private int love = 0; / 親密度 public void play(int n) int localv; health = health - n; System.out.p

11、rintln(name+ +localv+ +health+ +love); public static void main(String args) Dog d=new Dog(); d.play(5); ,局部變量沒(méi)有初始化,小結(jié) 2,編寫一個(gè)類Book2,代表教材: 具有屬性:名稱(title)、頁(yè)數(shù)(pageNum),其中頁(yè)數(shù)不能少于200頁(yè),否則輸出錯(cuò)誤信息,并賦予默認(rèn)值200 具有方法:Sdetail,用來(lái)在控制臺(tái)輸出每本教材的名稱和頁(yè)數(shù) 具有帶參數(shù)的構(gòu)造方法:用來(lái)完成對(duì)象的初始化工作,并在構(gòu)造方法中完成對(duì)頁(yè)數(shù)的最小值限制 編寫測(cè)試類Book2Test進(jìn)行測(cè)試:初始化一個(gè)Book2

12、對(duì)象,并調(diào)用該Book2對(duì)象的detail方法,看看輸出是否正確,完整代碼實(shí)現(xiàn),靜態(tài)常量,static可以用來(lái)修飾屬性、方法和代碼塊 static修飾的屬性和方法稱為類屬性(類變量)、類方法 不使用static修飾的屬性和方法,屬于單個(gè)對(duì)象,通常稱為實(shí)例屬性(實(shí)例變量)、實(shí)例方法 static修飾的變量和方法可以通過(guò)類名和對(duì)象名訪問(wèn),而不用static修飾的變量和方法只能通過(guò)對(duì)象名訪問(wèn) final可以用來(lái)修飾屬性、方法和類 用final修飾的變量成為常量,其值固定不變,Penguin pgn1 = new Penguin(); pgn1.sex = Penguin.SEX_MALE;,clas

13、s Penguin static final String SEX_MALE=Q仔; static final String SEX_FEMALE=Q妹; ,Java中定義常量的語(yǔ)法,static void print() ,用類名調(diào)用:Dog.print();,使用static定義變量,使用static定義方法,可否這樣賦值?,常見(jiàn)錯(cuò)誤,請(qǐng)指出下面代碼的錯(cuò)誤,class Dog private String name = 旺財(cái); / 昵稱 private int health = 100; / 健康值 private int love = 0; / 親密度 public void play(

14、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變量,方法重載4-1,一個(gè)類是否可以有多個(gè)構(gòu)造方法? 方法重載,指同一個(gè)類中多個(gè)方法: 方法名相同 參數(shù)列表不同,與返回值、訪問(wèn)修飾符無(wú)關(guān),方法重載4-2,類,方法,方法參數(shù),方法實(shí)現(xiàn),司機(jī),轎車,巴士,火車,駕駛,啟動(dòng)、行駛、,等待乘客

15、上車、啟動(dòng)、 行駛、到站停車、,正點(diǎn)發(fā)車、行駛、 到站停車、,如果用代碼實(shí)現(xiàn),我們需要三個(gè)方法,這些方法的方法名稱相同,參數(shù)類型不同,方法重載4-3,方法重載并不陌生 java.io.PrintStream類的println方法能夠打印數(shù)據(jù)并換行,根據(jù)數(shù)據(jù)類型的不同,有多種實(shí)現(xiàn)方式,public class Test public static void main(String args) int i = 0; char c = z; String str = hello; System.out.println(i); System.out.println(c); System.out.pri

16、ntln(str); ,PrintStream,println(int) println(char) println(String) ,方法名相同,參數(shù)類型不同,調(diào)用不同的println方法,方法重載,方法重載4-4,java.lang.Math類的max()方法能夠從兩個(gè)數(shù)字中取出最大值,它有多種實(shí)現(xiàn)方式 運(yùn)行時(shí),Java虛擬機(jī)先判斷給定參數(shù)的類型,然后決定到底執(zhí)行哪個(gè)max()方法,public class Test public static void main(String args) Math.max(1,2); Math.max(1.0F,2.0F); Math.max(1.0,2

17、); ,方法重載,構(gòu)造方法重載 2-1,構(gòu)造方法重載是方法重載的典型示例,public class AccpTeacher7 private String name; / 教員姓名 private String school = 北京中心; / 所在中心 public AccpTeacher7(String name) = name; /設(shè)定教員姓名 public AccpTeacher7(String name, String school) = name; /設(shè)定教員姓名 this.school = school; /設(shè)定教員的所在中心 public

18、 String introduction() return 大家好!我是 + school + 的 + name ; ,構(gòu)造方法重載,構(gòu)造方法重載 2-2,通過(guò)調(diào)用不同的構(gòu)造方法來(lái)表達(dá)對(duì)象的多種初始化行為 例如: 默認(rèn)情況下,教師來(lái)自北京中心,初始化時(shí),只需提供教員姓名 有時(shí),需要提供所在中心名稱及教員姓名,public class AccpTeacher7Test public static void main(String args) AccpTeacher7 teacher1 = new AccpTeacher7(李芳); System.out.println(r

19、oduction(); AccpTeacher7 teacher2 = new AccpTeacher7(張欣, 天津中心); System.out.println(roduction(); ,大家好!我是北京中心的李芳 大家好!我是天津中心的張欣,小結(jié) 3,編寫一個(gè)類Book3,代表教材: 具有屬性:名稱(title)、頁(yè)數(shù)(pageNum)、類型(type) 具有方法:detail,用來(lái)在控制臺(tái)輸出每本教材的名稱、頁(yè)數(shù)、類型 具有兩個(gè)帶參構(gòu)造方法:第一個(gè)構(gòu)造方法中,設(shè)置教材類型為“計(jì)算機(jī)”(固定),其余屬性的值由參數(shù)給定;第二個(gè)構(gòu)造方法中,所有屬性的值都由參數(shù)給定

20、編寫測(cè)試類Book3Test進(jìn)行測(cè)試: 分別以兩種方式完成對(duì)兩個(gè)Book3對(duì)象的初始化工作,并分別調(diào)用它們的detail方法,看看輸出是否正確,為什么要使用封裝,下面代碼有什么問(wèn)題? 如何解決上面設(shè)計(jì)的缺陷?,Dog d = new Dog(); d.health = 1000;,不合理的賦值,使用封裝,什么是封裝,面向?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),如何使用封裝,封裝的步驟,修改屬性的可見(jiàn)性,創(chuàng)

21、建getter/setter方法,在getter/setter方法中加入屬性控制語(yǔ)句,設(shè)為private,用于屬性的讀寫,對(duì)屬性值的合法性進(jìn)行判斷,class Dog private String name = 旺財(cái); / 昵稱 private int health = 100; / 健康值 private int love = 0; / 親密度 private String strain = 拉布拉多犬; / 品種 public int getHealth() return health; public void setHealth (int health) if (health 100 |

22、 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ì)象,1,2,2,3,小結(jié) 4,請(qǐng)通過(guò)代碼封裝,實(shí)現(xiàn)如下需求: 編寫一個(gè)類Book,代表教材: 具有屬性:名稱(title)、頁(yè)數(shù)(pageNum),其中頁(yè)數(shù)不能少于200頁(yè),否則輸出錯(cuò)誤信息,并賦予默認(rèn)值200 為各屬性設(shè)置賦值和取值方法 具有方法:detail,用來(lái)在控制臺(tái)輸出每本教材的名稱和頁(yè)數(shù) 編寫測(cè)試類BookTest進(jìn)行測(cè)試:為Bo

23、ok對(duì)象的屬性賦予初始值,并調(diào)用Book對(duì)象的detail方法,看看輸出是否正確,this的用法,this關(guān)鍵字的用法 調(diào)用屬性 調(diào)用方法 調(diào)用構(gòu)造方法,this.health = 100; = 大黃;,this.print();,this();,如果使用,必須是構(gòu)造方法中的第一條語(yǔ)句,this(小黑,100,100,雄);,小結(jié)5,分析需求,用封裝方式設(shè)計(jì)類,畫出類圖 汽車銷售人員銷售汽車,可售款式有凱越、君威 每款汽車有款式和編號(hào),款式、編號(hào)不能修改 汽車銷售人員有姓名,姓名不能修改 銷售人員有兩種銷售方式: 按車輛銷售,每次一輛 按車型銷售(凱越),要同時(shí)告訴銷售人員

24、購(gòu)買數(shù)量,凱越,君威,銷售員,練習(xí)用類圖設(shè)計(jì)Dog和Penguin類,需求說(shuō)明: 運(yùn)用面向?qū)ο笏枷氤橄蟪鯠og類和Penguin類,畫出對(duì)應(yīng)類圖 根據(jù)類圖編寫Dog類和Penguin類 添加默認(rèn)構(gòu)造方法,完成時(shí)間:20分鐘,指導(dǎo)打印Dog信息2-1,訓(xùn)練要點(diǎn): 類的結(jié)構(gòu),對(duì)象的創(chuàng)建,類的屬性和方法的調(diào)用 類的封裝 需求說(shuō)明: 根據(jù)控制臺(tái)提示信息選擇領(lǐng)養(yǎng)寵物(狗), 輸入昵稱、品種、健康值 打印寵物信息 要保證健康值的有效性(在1到100之間),講解需求說(shuō)明,指導(dǎo)打印Dog信息2-2,實(shí)現(xiàn)思路: 修改Dog類 編寫Test類,完成時(shí)間:30分鐘,從控制臺(tái)輸入寵物信息,打印寵物信息,保證健康值的有效性,否則取默認(rèn)值60,共性問(wèn)題集中講解,常見(jiàn)調(diào)試問(wèn)題及解決辦法 代碼規(guī)范問(wèn)題,共性問(wèn)題集中講解,練

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論