JAVA大學(xué)教學(xué)課件第二章面向?qū)ο蟪绦蛟O(shè)計.ppt_第1頁
JAVA大學(xué)教學(xué)課件第二章面向?qū)ο蟪绦蛟O(shè)計.ppt_第2頁
JAVA大學(xué)教學(xué)課件第二章面向?qū)ο蟪绦蛟O(shè)計.ppt_第3頁
JAVA大學(xué)教學(xué)課件第二章面向?qū)ο蟪绦蛟O(shè)計.ppt_第4頁
JAVA大學(xué)教學(xué)課件第二章面向?qū)ο蟪绦蛟O(shè)計.ppt_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

主講教師: xxx,Java語言程序設(shè)計, Java語言程序設(shè)計,第二章: 面向?qū)ο蟪绦蛟O(shè)計,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-1,一、面向過程的程序設(shè)計方法 以前,人們把程序看成是處理數(shù)據(jù)的一系列過程。過程或函數(shù)定義為一個接一個執(zhí)行的一組指令。數(shù)據(jù)與程序分開存儲,編程的主要技巧在于追蹤哪些函數(shù)調(diào)用哪些函數(shù);哪些數(shù)據(jù)發(fā)生了變化。為解決其中可能存在的問題,結(jié)構(gòu)化編程(1969年)應(yīng)運(yùn)而生。 結(jié)構(gòu)化程序設(shè)計的主要思想是功能分解并逐步求精。當(dāng)一些任務(wù)十分復(fù)雜以至無法描述時,可以將它拆分為一系列較小的功能部件,直到這些自完備的子任務(wù)小到易于理解的程度。,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-2,一、面向過程的程序設(shè)計方法 例如,計算一個公司中每一個職員的平均工資是一項(xiàng)較為復(fù)雜的任務(wù)??梢詫⑵洳鸱譃橐韵碌淖尤蝿?wù): (1)計算職員總數(shù) (2)計算工資總額 (3)用工資總額除以職員總數(shù) 計算工資總額本身又可分為一系列子任務(wù): (1)找出每個職員的檔案 (2)讀出工資數(shù)額 (3)把工資加到部分和上 (4)讀出下個職員的檔案,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-3,一、面向過程的程序設(shè)計方法 類似地,讀出每個職員檔案中的記錄又可以分解為一系列子任務(wù): (1)打開職員的檔案 (2)找出正確記錄 (3)從磁盤讀取數(shù)據(jù) 結(jié)構(gòu)化程序設(shè)計成功地為處理復(fù)雜問題提供了有力的手段。然而到80年代末,它些缺點(diǎn)越來越突出。 當(dāng)數(shù)據(jù)量增大時,數(shù)據(jù)與處理這些數(shù)據(jù)的方法之間的分離使程序變得越來越難以理解。對數(shù)據(jù)處理能力的需求越強(qiáng),這種分離所造成的負(fù)作用越顯著。,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-4,一、面向過程的程序設(shè)計方法 采用結(jié)構(gòu)化程序設(shè)計方法的程序員發(fā)現(xiàn),每一種相對于老問題的新方法都要帶來額外的開銷,與可重用性相對,通常稱這為重復(fù)投人?;诳芍赜眯缘乃枷胧侵附⒁恍┚哂幸阎匦缘牟考?,在需要時可以插人到程序之中。這是一種模仿硬件組合方式的做法,當(dāng)工程師需要一個新的晶體管時,他不用自己去發(fā)明,只要到倉庫去找就行了。對于軟件工程師來說,在面向?qū)ο蟪绦蛟O(shè)計出現(xiàn)之前,一直缺乏具備這種能力的工具。,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-5,二、面向?qū)ο蟮某绦蛟O(shè)計方法 面向?qū)ο蟪绦蛟O(shè)計的本質(zhì)是把數(shù)據(jù)和處理數(shù)據(jù)的過程當(dāng)成一個整體對象。Java全面支持面向?qū)ο蟪绦蛟O(shè)計。面向?qū)ο蟪绦蛟O(shè)計的實(shí)現(xiàn)需要封裝和數(shù)據(jù)隱藏技術(shù),需要繼承和多態(tài)性技術(shù)。,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-6,二、面向?qū)ο蟮某绦蛟O(shè)計方法 1封裝和數(shù)據(jù)隱藏 當(dāng)一個技術(shù)員要安裝一臺電腦時,他將各個設(shè)備組裝起來。當(dāng)他想要一個聲卡時,不需要用原始的集成電路芯片和材料去制作一個聲卡,而是來到電腦公司,購買一個他所需要的某種功能的聲卡。技術(shù)員關(guān)心的是聲卡的功能,并不關(guān)心聲卡內(nèi)部的工作原理。聲卡是自成一體的。這種自成一體性稱為封裝性。無需知道封裝單元內(nèi)部是如何工作就能使用的思想稱為數(shù)據(jù)隱藏。,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-7,二、面向?qū)ο蟮某绦蛟O(shè)計方法 聲卡的所有屬性都封裝在聲卡中,不會擴(kuò)展到聲卡之外。因?yàn)槁暱ǖ臄?shù)據(jù)隱藏在該電路板上。技術(shù)員無需知道聲卡的工作原理就能有效地使用它。 Java通過建立 類 來支持封裝性和數(shù)據(jù)隱藏。完好定義的類一旦建立,就可看成是完全封裝的實(shí)體,可以作為一個整體單元使用。類的實(shí)際內(nèi)部工作應(yīng)當(dāng)隱藏起來,使用完好定義的類的用戶,不需要知道類是如何工作的,只要知道如何使用它就行。,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-8,二、面向?qū)ο蟮某绦蛟O(shè)計方法 2繼承和重用 要制造新的電視機(jī),可以有兩種選擇:一種是從草圖開始,另一種是對現(xiàn)有的型號加以改進(jìn)。也許現(xiàn)有的型號已經(jīng)令人滿意,但如果再加一個功能,會更加完美。電視機(jī)工程師肯定不想從頭開始,而是希望制造另一種新型電視機(jī),該機(jī)是在原有的型號基礎(chǔ)上增加一組電路做成的。新的電視機(jī)很快就制造出來了,被賦予一種新的型號,于是新型電視機(jī)就誕生了。這是繼承和重用的實(shí)例。,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-9,二、面向?qū)ο蟮某绦蛟O(shè)計方法 Java采用繼承支持重用的思想,程序可以在擴(kuò)展現(xiàn)有類型的基礎(chǔ)上聲明新類型。新子類是從現(xiàn)有類型派生出來的,稱為派生類。新型電視機(jī)是在原有型號的電視機(jī)上增加若干種功能而得到的,所以新型電視機(jī)是原有電視機(jī)的派生,繼承了原有電視機(jī)的所有屬性,并在此基礎(chǔ)上增加了新的功能。,2.1 面向?qū)ο蟮某绦蛟O(shè)計方法-10,二、面向?qū)ο蟮某绦蛟O(shè)計方法 3多態(tài)性 通過繼承的方法構(gòu)造類,采用多態(tài)性為每個類指定表現(xiàn)行為。例如,學(xué)生類應(yīng)該有一個計算成績的操作。大學(xué)生繼承了中學(xué)生,或者說是中學(xué)生的延伸。對于中學(xué)生,計算成績的操作表示語文、數(shù)學(xué)、英語等課程的計算,而對于后繼的大學(xué)生,計算成績的操作表示高等數(shù)學(xué)、計算機(jī)、普通物理等課程的計算。,2.2 什么是對象-1,對象是一些相關(guān)的變量和方法的軟件集。軟件對象經(jīng)常用于模仿現(xiàn)實(shí)世界中我們身邊的一些對象。對象是理解面向?qū)ο蠹夹g(shù)的關(guān)鍵。你在學(xué)習(xí)之前可以看看現(xiàn)實(shí)生活中的對象,比如狗、桌子、電視、自行車等等。你可以發(fā)現(xiàn)現(xiàn)實(shí)世界中的對象有兩個共同特征:它們都有狀態(tài)和行為。比如狗有自己的狀態(tài)(比如名字、顏色等等)和行為(比如搖尾巴、汪汪叫等等)。同樣自行車也有自己的狀態(tài)(比如當(dāng)前檔位、兩個輪子等等)和行為(比如剎車、加速、減速以及改變檔位等等)。,2.2 什么是對象-2,軟件對象實(shí)際上是現(xiàn)實(shí)世界對象的造型,因?yàn)樗瑯佑袪顟B(tài)和行為。一個軟件對象利用一個或者多個變量來維持它的狀態(tài)。變量是由用戶標(biāo)識符來命名的數(shù)據(jù)項(xiàng)。軟件對象用它的方法來執(zhí)行它的行為。方法是跟對象有關(guān)聯(lián)的函數(shù)(子程序)。 你可以利用軟件對象來代表現(xiàn)實(shí)世界中的對象。你用可以控制電子自行車的程序來代表現(xiàn)實(shí)世界的自行車。同樣你可以使用軟件對象來造型抽象的概念,比如,事件是一個用在GUI窗口系統(tǒng)的公共對象,它可以代表用戶按下鼠標(biāo)按鈕或者鍵盤上的按鍵的反應(yīng)。,2.2 什么是對象-3,如下圖是一個軟件對象的公共可視代表。,2.2 什么是對象-4,軟件對象的狀態(tài)和行為都可以用在對象中的變量和方法來表達(dá)。構(gòu)造現(xiàn)實(shí)世界的自行車的軟件對象,要有指示自行車的當(dāng)前狀態(tài)的變量:速度為20mph,它的當(dāng)前檔位為第三檔。這些變量就是我們熟知的實(shí)例變量,因?yàn)樗鼈儼擞糜谔厥庾孕熊噷ο蟮臓顟B(tài),并且在面向?qū)ο蠹夹g(shù)中,特殊的對象稱為實(shí)例。 如下圖所示,是作為軟件對象的自行車造型。,2.2 什么是對象-5,軟件對象的自行車造型,2.3 什么是消息-1,軟件對象之間進(jìn)行交互作用和通訊是利用消息的。單一的一個對象通常不是很有用的。相反,一個對象通常是一個包含了許多其它對象的更大的程序或者應(yīng)用程序。通過這些對象的交互作用,程序員可以獲得高階的功能以及更為復(fù)雜的行為。你的自行車如果不使用它的時候,它就是一堆鋁合金和橡膠,它沒有任何的活動。而只有當(dāng)有其它的對象來和它交互的時候才是有用的。軟件對象與其它對象進(jìn)行交互與通訊是利用發(fā)送給其它對象來實(shí)現(xiàn)的。當(dāng)對象A想對象B來執(zhí)行一個B中的方法,對象A就會消息給對象B。如下圖所示。,2.3 什么是消息-2,2.3 什么是消息-3,有時候,接收的對象需要更多的信息以至于它可以正確知道該如何做。比如,當(dāng)你想改變自行車的齒輪,你就必須指出哪個齒輪。一個消息由三個部分組成: 1被尋址消息的對象(YourBicycle) 2要執(zhí)行方法的名字(changeGears) 3這個方法需要的所有參數(shù)(lowerGear),2.3 什么是消息-4,2.4 什么是類-1,類實(shí)際上是對某種類型的對象定義變量和方法的原型。在現(xiàn)實(shí)世界中,你經(jīng)??吹较嗤愋偷脑S多對象。比如 ,你的自行車只是現(xiàn)實(shí)世界中許多自行車的其中一輛。使用面向?qū)ο蠹夹g(shù),我們可以說你的自行車是自行車對象類的一個實(shí)例。通常,自行車有一些狀態(tài)(當(dāng)前檔位、兩個輪子等等)以及行為(改變檔位、剎車等等)。但是,每輛自行車的狀態(tài)都是獨(dú)立的并且跟其它自行車不同。當(dāng)廠家制造自行車的時候,廠商利用了自行車共有的特性來根據(jù)相同的藍(lán)圖制造許多自行車。如果制造一輛自行車就要產(chǎn)生一個新藍(lán)圖,那效率就太低了。,2.4 什么是類-2,在面向?qū)ο筌浖?,同樣地,可以讓相同種類地許多對象來共有一些特性,比如矩形、雇員記錄、視頻夾等等。就象自行車制造商人,你可以利用相同種類的對象是相似的事實(shí)并且你可以為這些對象創(chuàng)建一個藍(lán)圖。對對象的軟件藍(lán)圖叫做類。自行車的類需要定義一些實(shí)例變量來包括當(dāng)前檔位、當(dāng)前速度等等。這個類將為實(shí)例方法定義和提供實(shí)施方法,它允許騎車者改變檔位、剎車以及改變腳踏板的節(jié)奏,如下圖所示:,2.4 什么是類-3,2.4 什么是類-4,當(dāng)你創(chuàng)建了自行車類以后,你可以從這個類創(chuàng)建任意個自行車對象。當(dāng)你創(chuàng)建了一個類的實(shí)例后,系統(tǒng)將為這個對象和的實(shí)例變量分配內(nèi)存。每個實(shí)例將給所有實(shí)例變量的副本定義在類中。如下圖所示:,2.4 什么是類-5,2.4 什么是類-6,2.4 什么是類-7,除了實(shí)例變量,類還要定義類的變量。類變量包含了被類所有實(shí)例共享的信息。比如,假設(shè)所有的自行車有相同的檔位數(shù)。在本例子中,要定義一個實(shí)例變量來容納檔位數(shù)。每一個實(shí)例都會有變量的副本,但是在每一個實(shí)例中數(shù)值都是相同的。在這樣的情況下,你可以定義一個類變量來包含檔位數(shù),這樣所有的類的實(shí)例都共享這個變量。如果一個對象改變了變量,它就為改變那個類的所有對象。類同樣可以定義類方法。你可以直接從類中調(diào)用類方法,然而你必須在特定的實(shí)例中調(diào)用實(shí)例方法。如下圖所示。,2.4 什么是類-8,2.4 什么是類-9,2.5 什么是繼承 -1,一個類可以從它的父類繼承狀態(tài)和行為。繼承為組織和構(gòu)造軟件程序提供了一個強(qiáng)大的和自然的機(jī)理。 總得說來,對象是以類得形式來定義得。你可能現(xiàn)在已經(jīng)可以從它類知道許多對象了。即使你不知道,如果我告訴你它是一輛自行車,你就會知道它有兩個輪子和腳踏板等等。面向?qū)ο笙到y(tǒng)就更深入一些了,它允許類在其它類中定義。比如,山地自行車、賽車以及串座雙人自行車都是各種各樣的自行車。在面向?qū)ο蠹夹g(shù)中,山地自行車、賽車以及串座雙人自行車都是自行車類的子類。同樣地,自行車類是山地自行車、賽車以及串座雙人自行車的父類。這個父子關(guān)系可以如下圖所示:,2.5 什么是繼承 -2,2.5 什么是繼承 -3,每一個子類從父類中繼承了狀態(tài)。山地自行車、賽車以及串座雙人自行車共享了這些狀態(tài):比如速度等。同樣,每一個子類繼承類從父類的方法,山地自行車、賽車以及串座雙人自行車共享了這些行為:剎車、改變腳踏速度等等。然而,子類不能受到父類提供的狀態(tài)和行為的限制。子類可以增加變量和方法到從父類繼承而來的變量和方法。比如,串座雙人自行車有兩個座位,這是它的父類沒有的。子類同樣可以重載繼承的方法并且為這些方法提供特殊執(zhí)行方法。比如 ,如果

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論