《JAVA面向?qū)ο缶幊獭稰PT課件.ppt
《《JAVA面向?qū)ο缶幊獭稰PT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《JAVA面向?qū)ο缶幊獭稰PT課件.ppt(35頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 第 3章 面向?qū)ο缶幊? 3.1面向?qū)ο髥?wèn)題求解的提出 3.2面向?qū)ο蟮姆治雠c設(shè)計(jì) 面向?qū)ο蟮姆治觯?OOA) 面向?qū)ο蟮脑O(shè)計(jì)( OOD) 3.3面向?qū)ο蟪绦蛟O(shè)計(jì)方法的優(yōu)點(diǎn) 可重用性 可擴(kuò)展性 可管理性 3.4Java中類的定義和使用 類聲明 類體 3.1面向?qū)ο髥?wèn)題求解的提出 程序設(shè)計(jì)語(yǔ)言的發(fā)展階段: 第一代語(yǔ)言 (1GL) : 二進(jìn)制機(jī)器代碼( 0101001 ) 第二代語(yǔ)言 (2GL) : 匯編語(yǔ)言 (Low Level Language LLL) ( mov, add ) 第三代語(yǔ)言 (3GL): 高級(jí)語(yǔ)言 (HLL)
2、(以 C語(yǔ)言為代表 , 過(guò)程式編程語(yǔ)言) 第四代語(yǔ)言 (4GL) : 面向?qū)ο笳Z(yǔ)言( OOP )非過(guò)程化 / 面向?qū)ο蟮木幊陶Z(yǔ)言 OOP最大的優(yōu)點(diǎn)是具備了隱藏庫(kù)執(zhí)行的某些方面的功 能,另一個(gè)重要優(yōu)點(diǎn)是過(guò)程與數(shù)據(jù)結(jié)構(gòu)聯(lián)合,這種數(shù) 據(jù)屬性與方法的結(jié)合稱為類。 最早的面向?qū)ο蟮木幊陶Z(yǔ)言是 1966年推出的 Simlula, 它首次提出模擬人類的思維方式,把數(shù)據(jù)和相關(guān)的操 作集成在一起的思想。 20世紀(jì) 80年代末期,以 C++為代表的面向?qū)ο蟪绦蛟O(shè) 計(jì)( OOP)才流行起來(lái)。其優(yōu)點(diǎn)為隱藏庫(kù)執(zhí)行的某些 方面的功能,另一個(gè)優(yōu)點(diǎn)是過(guò)程與數(shù)據(jù)結(jié)構(gòu)聯(lián)合。 Java是 20世紀(jì) 90年代新出
3、現(xiàn)的面向?qū)ο蟮木幊陶Z(yǔ)言, 它去除 C++中非面向?qū)ο蟮膬?nèi)容,并實(shí)現(xiàn)一次編寫, 多次使用的跨平臺(tái)特點(diǎn),是面向?qū)ο箝_(kāi)發(fā)工具中極具 潛力的成員之一。 3.2面向?qū)ο蟮姆治雠c設(shè)計(jì) 軟件工程的新途徑 面向?qū)ο笞鳛橐环N思想及編程語(yǔ)言,為軟件開(kāi)發(fā)的整個(gè) 過(guò)程:從分析設(shè)計(jì)到實(shí)現(xiàn),提供了一個(gè)完整解決方案。 面向?qū)ο罂胺Q是軟件發(fā)展取得的里程碑式的偉大成就。 面向?qū)ο蠓椒ê?jiǎn)介 從 80年代后期開(kāi)始,進(jìn)行了面向?qū)ο蠓治觯?OOA)、 面向?qū)ο笤O(shè)計(jì)( OOD)和面向?qū)ο蟪绦蛟O(shè)計(jì)( OOP) 等新的系統(tǒng)開(kāi)發(fā)方式模型的研究,在有些文獻(xiàn)中統(tǒng)稱為 OO范型。 需求分析 需求模型化 概要設(shè)計(jì) 詳細(xì)
4、設(shè)計(jì) 實(shí)現(xiàn) 用戶需求 明確細(xì)化 需求 分析 實(shí)現(xiàn) 設(shè)計(jì) 重新明確需求 用戶需求 可重用部件的引用和開(kāi)發(fā) 修改詳細(xì)設(shè)計(jì) 選擇開(kāi)發(fā)工具 編碼 設(shè)計(jì)界面管理、任務(wù) 管理和數(shù)據(jù)管理 抽取對(duì)象模型、屬性、結(jié)構(gòu)、建立 OOA 模型 需求陳述 修改概要設(shè)計(jì) 圖 1-1 面向?qū)ο筌浖_(kāi)發(fā)過(guò)程(軟件生命周期) 3.3面向?qū)ο蟪绦蛟O(shè)計(jì)方法的優(yōu)點(diǎn) 與傳統(tǒng)的方法相比,面向?qū)ο蟮膯?wèn)題求解具有更好的可重 用性,可擴(kuò)展性和可管理性 3.3.1可重用性 可重用性是面向?qū)ο筌浖_(kāi)發(fā)的一個(gè)核心思路,面向?qū)ο?程序設(shè)計(jì)的抽象、封裝、繼承、多態(tài)四大特點(diǎn)都圍繞這個(gè) 核心服務(wù)。
5、 1.抽象: 抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面, 以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算 了解全部問(wèn)題,而只是選擇其中的一部分,暫時(shí)不用部分 細(xì)節(jié)。比如,我們要設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理系統(tǒng),考察學(xué) 生這個(gè)對(duì)象時(shí),我們只關(guān)心他的班級(jí)、學(xué)號(hào)、成績(jī)等,而 不用去關(guān)心他的身高、體重這些信息。抽象包括兩個(gè)方面, 一是過(guò)程抽象,二是數(shù)據(jù)抽象。 過(guò)程抽象 是指任何一個(gè)明 確定義功能的操作都可被使用者看作單個(gè)的實(shí)體看待,盡 管這個(gè)操作實(shí)際上可能由一系列更低級(jí)的操作來(lái)完成。 數(shù) 據(jù)抽象 定義了數(shù)據(jù)類型和施加于該類型對(duì)象上的操作,并 限定了對(duì)象的值只能通過(guò)使用這些操作修改和觀察。
6、2.繼承: 為什么會(huì)有繼承?建立一個(gè)類后,發(fā)現(xiàn)另一個(gè)新的類有相 同的特性,兩個(gè)選擇:重新定義一個(gè)新的類;在已有類的 基礎(chǔ)上,修改 (加加 /減減 ) 繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵(lì)類的重用, 它提供了一種明確表述共性的方法。新類繼承了原始類的 特性,新類稱為原始類的派生類(子類),而原始類稱為 新類的基類(父類)。繼承性很好的解決了軟件的可重用 性問(wèn)題。 運(yùn)輸工具 航空運(yùn)輸工具 陸地運(yùn)輸工具 水上運(yùn)輸工具 人力驅(qū)動(dòng) 引擎驅(qū)動(dòng) 二輪 四輪 客運(yùn) 貨運(yùn) 3.封裝: 封裝是面向?qū)ο蟮奶卣髦?,是?duì)象和類概念的主要 特性。封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能
7、 通過(guò)已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即 現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這 些對(duì)象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。一旦定義了 一個(gè)對(duì)象的特性,則有必要決定這些特性的可見(jiàn)性,即哪 些特性對(duì)外部世界是可見(jiàn)的,哪些特性用于表示內(nèi)部狀態(tài)。 在這個(gè)階段定義對(duì)象的接口。通常,應(yīng)禁止直接訪問(wèn)一個(gè) 對(duì)象的實(shí)際表示,而應(yīng)通過(guò)操作接口訪問(wèn)對(duì)象,這稱為信 息隱藏。事實(shí)上,信息隱藏是用戶對(duì)封裝性的認(rèn)識(shí),封裝 則為信息隱藏提供支持。封裝保證了模塊具有較好的獨(dú)立 性,使得程序維護(hù)修改較為容易。對(duì)應(yīng)用程序的修改僅限 于類的內(nèi)部,因而可以將應(yīng)用程序修改帶來(lái)的影響減少到 最低限度。 4.
8、多態(tài)性: 多態(tài)性是指允許不同類的對(duì)象對(duì)同一消息作出響應(yīng)。 多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì), 很好的解決了應(yīng)用程序函數(shù)同名問(wèn)題。 表現(xiàn)在繼承中 方法的重寫 子類從父類繼承 (extends擴(kuò)展 )而來(lái) 多個(gè)子類同屬一個(gè)父類,所有子類有相同的父類 繼承父類的方法 在不同的子類中有不同的表現(xiàn)形式 表現(xiàn)在用一個(gè)類中 方法的重載 多態(tài)性在繼承中的表現(xiàn) 3.3.2可擴(kuò)展性 3.3.3可管理性 類的實(shí)現(xiàn)包括 類聲明 和 類體 3.4.1 類聲明 class Mankind class 定義類的關(guān)鍵字 。(注
9、意不要把 class寫成 Class)。 Mankind 類的名稱,習(xí)慣上,類名的首字母大寫,并且 命名的規(guī)則符合標(biāo)識(shí)符的規(guī)則。 3.4 java中類的定義和使用 3.4.2 類體 類體包含數(shù)據(jù)(變量)的定義和方法的定義。只可以 在類體中定義數(shù)據(jù)、初始化數(shù)據(jù)、定義方法的語(yǔ)句,而不 能有其他的語(yǔ)句,如控制語(yǔ)句、賦值語(yǔ)句等。 class 在定義類的成員變量時(shí)可以同時(shí)賦初值,但對(duì)于成員變量 的操作只能放在方法中。例如: class Tom int x=98, y; y=87; //此語(yǔ)句對(duì)成員變量
10、y進(jìn)行了賦值操作 一個(gè)簡(jiǎn)單的類 class Student String name, stuNumber; double score1, score2, score3; void set1(String s1, String s2) name = s1; stuNumber = s2; System.out.println(name + “ “ + stuNumber); double setScore(double d1, double d2, double d3) double d; score1 = d1; score2
11、= d2; score3 = d3; d = d1 d2 + d3; return d; 1、變量的定義 ( 1)成員變量 在類體中定義的變量稱為類的成員變量。其類型可以是 java中的 任一類型。成員變量在聲明它的整個(gè)類中有效。 成員變量又可以分為: 類成員變量(類變量) :類變量前有 static關(guān)鍵字修飾,所有的 對(duì)象共享類變量。 改變一個(gè)對(duì)象的類變量會(huì)影響到其他對(duì)象的這個(gè) 變量 實(shí)例成員變量(實(shí)例變量) :實(shí)例變量前無(wú) static修飾,所有的 對(duì)象擁有各自不同的實(shí)例變量,存儲(chǔ)空間也不同。 Java 實(shí)例 class M
12、ankind String name=“Tom”,sex=“man”; static float salary= 3000.0f; void printInf(String n,String s,float m) int count=1; System.out.println(“person:”+n+”sex:”+s+ ”salary:”+m); System.out.println(“count=“+count); ( 2)局部變量 在方法體中定義的變量和方法的參數(shù)稱為局部變量。如
13、n,s,m,count; 其類型可以是 java中的任一類型。 其作用域只限制在定義它的方法內(nèi)。 如果局部變量的名字與成員變量的名字相同,成員變量 被隱蔽,即暫時(shí)無(wú)效。 例 3.2 class Tom int x=98,y; // 實(shí)例變量 static int a; // 類變量 void f( ) //方法 f int x=3; //x為局部變量 y=x; y=this.x; 如果局部變量與成員變量的名字相同,在該方法內(nèi)引用 成員變量,則必須使用關(guān)鍵字 thi
14、s(類的當(dāng)前對(duì)象 ) 2、方法的定義 方法聲明部分: 方法名和方法的返回類型 方法體 : 局部變量的定義和合法的 java語(yǔ)句 class Tom int x=98,y; static int a; void f( ) int x=3; y=x; y=this.x; 方法聲明 方 法 體 方法分類 ( 1)類方法 方法前有 static修飾的方法,類方法只能對(duì)類變 量進(jìn)行操作。
15、 類方法調(diào)用: 類名 .方法名 或者 對(duì)象名 .方法名 類變量的調(diào)用: 類名 .類變量名 或者 對(duì)象名 .類變量名 ( 2)實(shí)例方法 方法前無(wú) static修飾的為實(shí)例方法,實(shí)例方法 既能對(duì)類變量操作也可以對(duì)實(shí)例變量操作。 實(shí)例方法調(diào)用: 對(duì)象名 .方法名 實(shí)例變量的調(diào)用: 對(duì)象名 .實(shí)例變量名 class Test public static void main(String args) double d_product; Area myArea; myArea = new Area(); myAre
16、a.setV(21,23); d_product = myArea.product(); System.out.println(d_product); class Area double width, height; void setV(double w, double h) width = w; height = h; double product() return width*height; Java實(shí)例 -例 3.3 class A int a=5; static int b; void c() //實(shí)例方法
17、 b=10; //在實(shí)例方法中可對(duì)類變量進(jìn)行操作 A.f(b); //類方法可以由類名調(diào)用,也可以寫成 f(b) System.out.println(“from instance method,b=”+b); static void f(int x) //類方法 b=x; // a=x; a是實(shí)例變量,要?jiǎng)?chuàng)建對(duì)象來(lái)引用它 System.out.println(“from class method,b=”+b); public static void main(String args) A.f(15); /
18、/A.c();實(shí)例方法不可以由類名調(diào)用 A t=new A(); t.c(); 輸出結(jié)果 from class method,b=15 from class method,b=10 from instance method,b=10 作業(yè): 設(shè)計(jì)一個(gè)學(xué)生類 Student,包含的成員變量有 “學(xué)號(hào)”、“班級(jí)”、“姓名”、“年齡”, 成員方法有“獲得 學(xué)號(hào)”“獲得班級(jí)”“獲 得姓名”“獲得年齡”、“修改年齡”。 ( 3)方法重載( method Overloading) 所謂方法重載就是在一個(gè)類中可以有多個(gè)方 法具有相同的名字,但這些方法的參數(shù)
19、必須不 同,或者是個(gè)數(shù)或者是類型。 注意:不可以以方法的返回值為基礎(chǔ)構(gòu)成重 載方法 方法的重載 (overload) 方法名相同,但方法的參數(shù)不同 方法描述 方法名 (標(biāo)識(shí)符 ) 參數(shù)類型 方法返回值 絕對(duì)值 abs(a) int int 絕對(duì)值 abs(a) long long 絕對(duì)值 abs(a) float float 絕對(duì)值 abs(a) double double pu
20、blic static int abs(int a) public static long abs(long a) public static float abs(float a) public static double abs(double a) class Calculation void add(int a,int b) int c; c=a+b; System.out.println(c); // int add(int a,int b) return (a+b); float a
21、dd(float a,float b) float c=a+b; return c; void add(String a,String b) String c=a+b; System.out.println(c); public static void main(String args ) Calculation c=new Calculation(); c.add(12,12); c.add(“good ”,” morning”); float x=c.add(5f,3f); // float x=
22、c.add(5,3);出錯(cuò) System.out.println(“x=”+x); 作業(yè): 利用重載的方法 square計(jì)算一個(gè)整型數(shù)和一個(gè) 雙精度數(shù)的平方。 (4)構(gòu)造方法 構(gòu)造方法名 與類名相同 ; 構(gòu)造方法 沒(méi)有返回類型 ,也不是 void; 構(gòu)造方法的主要作用是對(duì) 成員變量的初始化 。 如果沒(méi)有定義構(gòu)造方法時(shí),各種類型的默認(rèn)值; 構(gòu)造方法不能由編程人員顯式地直接調(diào)用,在 創(chuàng)建某個(gè)類的對(duì)象時(shí),設(shè)置的構(gòu)造方法將 自行 調(diào)用 。 使用不同數(shù)量、不同類型的參數(shù)對(duì)類初始化會(huì) 擁有多個(gè)構(gòu)造方法; Java實(shí)例 例 3.5 class Number
23、 private int n; Number(int m) n=m; void setNumber(int i) n= i; int getNuber( ) return n; boolean isEven( ) if(n%2==0) return ture; else return false; class Class1 public static void main(Sting args) Number n=new Number(10); boolean b= n.isEven
24、(); System.out.println(n.getNumber( )+”is Even:”+b); (5)重載構(gòu)造方法( Overloaded Constructor) class Stu static int count=0; //計(jì)數(shù)器,類變量 int id; //成員變量 String name; //成員變量 Stu(String n) id=++count; name=n; Stu(int i,String n) id=i; name=n; String getN
25、ame( ) return name; int getId() return id; class Main() public static void main(String args) Stu lily=new Stu( “l(fā)ily” ); Stu maga=new Stu( 1001,”maga” ); System.out.println(“student id:”+lily.getId()+”,name:”+lily.getName()); System.out.println(“student id:”+maga.getId()+”,name:”+maga.getName());
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版必修五《林教頭風(fēng)雪山神廟》ppt課件
- 人教版《分?jǐn)?shù)的意義和性質(zhì)》(完美版)課件
- 正比例函數(shù)及性質(zhì)
- 企業(yè)戰(zhàn)略環(huán)境分析
- 前列腺增生3課件
- 煉鐵基礎(chǔ)非高爐煉鐵課件
- 小兒腹瀉小講課分析課件
- 職業(yè)經(jīng)理人的壓力管理課件
- 街道改造PPT方案展示-項(xiàng)目概況案例分析現(xiàn)存建筑質(zhì)量設(shè)計(jì)理念課件
- 2022年北師大版小學(xué)數(shù)學(xué)《小數(shù)目物品平均分》課件
- 作文指導(dǎo)--場(chǎng)面描寫-PPT
- 肺癌診斷和治療的幾個(gè)問(wèn)題
- 一下《王二小》
- 第八章專題八(教育精品)
- 六年級(jí)數(shù)學(xué)下冊(cè) 正負(fù)數(shù) 2課件 人教新課標(biāo)