




已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
主講教師: xxx,Java語(yǔ)言程序設(shè)計(jì), Java語(yǔ)言程序設(shè)計(jì),第二章: 面向?qū)ο蟪绦蛟O(shè)計(jì),2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-1,一、面向過(guò)程的程序設(shè)計(jì)方法 以前,人們把程序看成是處理數(shù)據(jù)的一系列過(guò)程。過(guò)程或函數(shù)定義為一個(gè)接一個(gè)執(zhí)行的一組指令。數(shù)據(jù)與程序分開(kāi)存儲(chǔ),編程的主要技巧在于追蹤哪些函數(shù)調(diào)用哪些函數(shù);哪些數(shù)據(jù)發(fā)生了變化。為解決其中可能存在的問(wèn)題,結(jié)構(gòu)化編程(1969年)應(yīng)運(yùn)而生。 結(jié)構(gòu)化程序設(shè)計(jì)的主要思想是功能分解并逐步求精。當(dāng)一些任務(wù)十分復(fù)雜以至無(wú)法描述時(shí),可以將它拆分為一系列較小的功能部件,直到這些自完備的子任務(wù)小到易于理解的程度。,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-2,一、面向過(guò)程的程序設(shè)計(jì)方法 例如,計(jì)算一個(gè)公司中每一個(gè)職員的平均工資是一項(xiàng)較為復(fù)雜的任務(wù)??梢詫⑵洳鸱譃橐韵碌淖尤蝿?wù): (1)計(jì)算職員總數(shù) (2)計(jì)算工資總額 (3)用工資總額除以職員總數(shù) 計(jì)算工資總額本身又可分為一系列子任務(wù): (1)找出每個(gè)職員的檔案 (2)讀出工資數(shù)額 (3)把工資加到部分和上 (4)讀出下個(gè)職員的檔案,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-3,一、面向過(guò)程的程序設(shè)計(jì)方法 類(lèi)似地,讀出每個(gè)職員檔案中的記錄又可以分解為一系列子任務(wù): (1)打開(kāi)職員的檔案 (2)找出正確記錄 (3)從磁盤(pán)讀取數(shù)據(jù) 結(jié)構(gòu)化程序設(shè)計(jì)成功地為處理復(fù)雜問(wèn)題提供了有力的手段。然而到80年代末,它些缺點(diǎn)越來(lái)越突出。 當(dāng)數(shù)據(jù)量增大時(shí),數(shù)據(jù)與處理這些數(shù)據(jù)的方法之間的分離使程序變得越來(lái)越難以理解。對(duì)數(shù)據(jù)處理能力的需求越強(qiáng),這種分離所造成的負(fù)作用越顯著。,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-4,一、面向過(guò)程的程序設(shè)計(jì)方法 采用結(jié)構(gòu)化程序設(shè)計(jì)方法的程序員發(fā)現(xiàn),每一種相對(duì)于老問(wèn)題的新方法都要帶來(lái)額外的開(kāi)銷(xiāo),與可重用性相對(duì),通常稱(chēng)這為重復(fù)投人?;诳芍赜眯缘乃枷胧侵附⒁恍┚哂幸阎匦缘牟考?,在需要時(shí)可以插人到程序之中。這是一種模仿硬件組合方式的做法,當(dāng)工程師需要一個(gè)新的晶體管時(shí),他不用自己去發(fā)明,只要到倉(cāng)庫(kù)去找就行了。對(duì)于軟件工程師來(lái)說(shuō),在面向?qū)ο蟪绦蛟O(shè)計(jì)出現(xiàn)之前,一直缺乏具備這種能力的工具。,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-5,二、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法 面向?qū)ο蟪绦蛟O(shè)計(jì)的本質(zhì)是把數(shù)據(jù)和處理數(shù)據(jù)的過(guò)程當(dāng)成一個(gè)整體對(duì)象。Java全面支持面向?qū)ο蟪绦蛟O(shè)計(jì)。面向?qū)ο蟪绦蛟O(shè)計(jì)的實(shí)現(xiàn)需要封裝和數(shù)據(jù)隱藏技術(shù),需要繼承和多態(tài)性技術(shù)。,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-6,二、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法 1封裝和數(shù)據(jù)隱藏 當(dāng)一個(gè)技術(shù)員要安裝一臺(tái)電腦時(shí),他將各個(gè)設(shè)備組裝起來(lái)。當(dāng)他想要一個(gè)聲卡時(shí),不需要用原始的集成電路芯片和材料去制作一個(gè)聲卡,而是來(lái)到電腦公司,購(gòu)買(mǎi)一個(gè)他所需要的某種功能的聲卡。技術(shù)員關(guān)心的是聲卡的功能,并不關(guān)心聲卡內(nèi)部的工作原理。聲卡是自成一體的。這種自成一體性稱(chēng)為封裝性。無(wú)需知道封裝單元內(nèi)部是如何工作就能使用的思想稱(chēng)為數(shù)據(jù)隱藏。,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-7,二、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法 聲卡的所有屬性都封裝在聲卡中,不會(huì)擴(kuò)展到聲卡之外。因?yàn)槁暱ǖ臄?shù)據(jù)隱藏在該電路板上。技術(shù)員無(wú)需知道聲卡的工作原理就能有效地使用它。 Java通過(guò)建立 類(lèi) 來(lái)支持封裝性和數(shù)據(jù)隱藏。完好定義的類(lèi)一旦建立,就可看成是完全封裝的實(shí)體,可以作為一個(gè)整體單元使用。類(lèi)的實(shí)際內(nèi)部工作應(yīng)當(dāng)隱藏起來(lái),使用完好定義的類(lèi)的用戶(hù),不需要知道類(lèi)是如何工作的,只要知道如何使用它就行。,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-8,二、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法 2繼承和重用 要制造新的電視機(jī),可以有兩種選擇:一種是從草圖開(kāi)始,另一種是對(duì)現(xiàn)有的型號(hào)加以改進(jìn)。也許現(xiàn)有的型號(hào)已經(jīng)令人滿(mǎn)意,但如果再加一個(gè)功能,會(huì)更加完美。電視機(jī)工程師肯定不想從頭開(kāi)始,而是希望制造另一種新型電視機(jī),該機(jī)是在原有的型號(hào)基礎(chǔ)上增加一組電路做成的。新的電視機(jī)很快就制造出來(lái)了,被賦予一種新的型號(hào),于是新型電視機(jī)就誕生了。這是繼承和重用的實(shí)例。,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-9,二、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法 Java采用繼承支持重用的思想,程序可以在擴(kuò)展現(xiàn)有類(lèi)型的基礎(chǔ)上聲明新類(lèi)型。新子類(lèi)是從現(xiàn)有類(lèi)型派生出來(lái)的,稱(chēng)為派生類(lèi)。新型電視機(jī)是在原有型號(hào)的電視機(jī)上增加若干種功能而得到的,所以新型電視機(jī)是原有電視機(jī)的派生,繼承了原有電視機(jī)的所有屬性,并在此基礎(chǔ)上增加了新的功能。,2.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法-10,二、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法 3多態(tài)性 通過(guò)繼承的方法構(gòu)造類(lèi),采用多態(tài)性為每個(gè)類(lèi)指定表現(xiàn)行為。例如,學(xué)生類(lèi)應(yīng)該有一個(gè)計(jì)算成績(jī)的操作。大學(xué)生繼承了中學(xué)生,或者說(shuō)是中學(xué)生的延伸。對(duì)于中學(xué)生,計(jì)算成績(jī)的操作表示語(yǔ)文、數(shù)學(xué)、英語(yǔ)等課程的計(jì)算,而對(duì)于后繼的大學(xué)生,計(jì)算成績(jī)的操作表示高等數(shù)學(xué)、計(jì)算機(jī)、普通物理等課程的計(jì)算。,2.2 什么是對(duì)象-1,對(duì)象是一些相關(guān)的變量和方法的軟件集。軟件對(duì)象經(jīng)常用于模仿現(xiàn)實(shí)世界中我們身邊的一些對(duì)象。對(duì)象是理解面向?qū)ο蠹夹g(shù)的關(guān)鍵。你在學(xué)習(xí)之前可以看看現(xiàn)實(shí)生活中的對(duì)象,比如狗、桌子、電視、自行車(chē)等等。你可以發(fā)現(xiàn)現(xiàn)實(shí)世界中的對(duì)象有兩個(gè)共同特征:它們都有狀態(tài)和行為。比如狗有自己的狀態(tài)(比如名字、顏色等等)和行為(比如搖尾巴、汪汪叫等等)。同樣自行車(chē)也有自己的狀態(tài)(比如當(dāng)前檔位、兩個(gè)輪子等等)和行為(比如剎車(chē)、加速、減速以及改變檔位等等)。,2.2 什么是對(duì)象-2,軟件對(duì)象實(shí)際上是現(xiàn)實(shí)世界對(duì)象的造型,因?yàn)樗瑯佑袪顟B(tài)和行為。一個(gè)軟件對(duì)象利用一個(gè)或者多個(gè)變量來(lái)維持它的狀態(tài)。變量是由用戶(hù)標(biāo)識(shí)符來(lái)命名的數(shù)據(jù)項(xiàng)。軟件對(duì)象用它的方法來(lái)執(zhí)行它的行為。方法是跟對(duì)象有關(guān)聯(lián)的函數(shù)(子程序)。 你可以利用軟件對(duì)象來(lái)代表現(xiàn)實(shí)世界中的對(duì)象。你用可以控制電子自行車(chē)的程序來(lái)代表現(xiàn)實(shí)世界的自行車(chē)。同樣你可以使用軟件對(duì)象來(lái)造型抽象的概念,比如,事件是一個(gè)用在GUI窗口系統(tǒng)的公共對(duì)象,它可以代表用戶(hù)按下鼠標(biāo)按鈕或者鍵盤(pán)上的按鍵的反應(yīng)。,2.2 什么是對(duì)象-3,如下圖是一個(gè)軟件對(duì)象的公共可視代表。,2.2 什么是對(duì)象-4,軟件對(duì)象的狀態(tài)和行為都可以用在對(duì)象中的變量和方法來(lái)表達(dá)。構(gòu)造現(xiàn)實(shí)世界的自行車(chē)的軟件對(duì)象,要有指示自行車(chē)的當(dāng)前狀態(tài)的變量:速度為20mph,它的當(dāng)前檔位為第三檔。這些變量就是我們熟知的實(shí)例變量,因?yàn)樗鼈儼擞糜谔厥庾孕熊?chē)對(duì)象的狀態(tài),并且在面向?qū)ο蠹夹g(shù)中,特殊的對(duì)象稱(chēng)為實(shí)例。 如下圖所示,是作為軟件對(duì)象的自行車(chē)造型。,2.2 什么是對(duì)象-5,軟件對(duì)象的自行車(chē)造型,2.3 什么是消息-1,軟件對(duì)象之間進(jìn)行交互作用和通訊是利用消息的。單一的一個(gè)對(duì)象通常不是很有用的。相反,一個(gè)對(duì)象通常是一個(gè)包含了許多其它對(duì)象的更大的程序或者應(yīng)用程序。通過(guò)這些對(duì)象的交互作用,程序員可以獲得高階的功能以及更為復(fù)雜的行為。你的自行車(chē)如果不使用它的時(shí)候,它就是一堆鋁合金和橡膠,它沒(méi)有任何的活動(dòng)。而只有當(dāng)有其它的對(duì)象來(lái)和它交互的時(shí)候才是有用的。軟件對(duì)象與其它對(duì)象進(jìn)行交互與通訊是利用發(fā)送給其它對(duì)象來(lái)實(shí)現(xiàn)的。當(dāng)對(duì)象A想對(duì)象B來(lái)執(zhí)行一個(gè)B中的方法,對(duì)象A就會(huì)消息給對(duì)象B。如下圖所示。,2.3 什么是消息-2,2.3 什么是消息-3,有時(shí)候,接收的對(duì)象需要更多的信息以至于它可以正確知道該如何做。比如,當(dāng)你想改變自行車(chē)的齒輪,你就必須指出哪個(gè)齒輪。一個(gè)消息由三個(gè)部分組成: 1被尋址消息的對(duì)象(YourBicycle) 2要執(zhí)行方法的名字(changeGears) 3這個(gè)方法需要的所有參數(shù)(lowerGear),2.3 什么是消息-4,2.4 什么是類(lèi)-1,類(lèi)實(shí)際上是對(duì)某種類(lèi)型的對(duì)象定義變量和方法的原型。在現(xiàn)實(shí)世界中,你經(jīng)??吹较嗤?lèi)型的許多對(duì)象。比如 ,你的自行車(chē)只是現(xiàn)實(shí)世界中許多自行車(chē)的其中一輛。使用面向?qū)ο蠹夹g(shù),我們可以說(shuō)你的自行車(chē)是自行車(chē)對(duì)象類(lèi)的一個(gè)實(shí)例。通常,自行車(chē)有一些狀態(tài)(當(dāng)前檔位、兩個(gè)輪子等等)以及行為(改變檔位、剎車(chē)等等)。但是,每輛自行車(chē)的狀態(tài)都是獨(dú)立的并且跟其它自行車(chē)不同。當(dāng)廠(chǎng)家制造自行車(chē)的時(shí)候,廠(chǎng)商利用了自行車(chē)共有的特性來(lái)根據(jù)相同的藍(lán)圖制造許多自行車(chē)。如果制造一輛自行車(chē)就要產(chǎn)生一個(gè)新藍(lán)圖,那效率就太低了。,2.4 什么是類(lèi)-2,在面向?qū)ο筌浖?,同樣地,可以讓相同種類(lèi)地許多對(duì)象來(lái)共有一些特性,比如矩形、雇員記錄、視頻夾等等。就象自行車(chē)制造商人,你可以利用相同種類(lèi)的對(duì)象是相似的事實(shí)并且你可以為這些對(duì)象創(chuàng)建一個(gè)藍(lán)圖。對(duì)對(duì)象的軟件藍(lán)圖叫做類(lèi)。自行車(chē)的類(lèi)需要定義一些實(shí)例變量來(lái)包括當(dāng)前檔位、當(dāng)前速度等等。這個(gè)類(lèi)將為實(shí)例方法定義和提供實(shí)施方法,它允許騎車(chē)者改變檔位、剎車(chē)以及改變腳踏板的節(jié)奏,如下圖所示:,2.4 什么是類(lèi)-3,2.4 什么是類(lèi)-4,當(dāng)你創(chuàng)建了自行車(chē)類(lèi)以后,你可以從這個(gè)類(lèi)創(chuàng)建任意個(gè)自行車(chē)對(duì)象。當(dāng)你創(chuàng)建了一個(gè)類(lèi)的實(shí)例后,系統(tǒng)將為這個(gè)對(duì)象和的實(shí)例變量分配內(nèi)存。每個(gè)實(shí)例將給所有實(shí)例變量的副本定義在類(lèi)中。如下圖所示:,2.4 什么是類(lèi)-5,2.4 什么是類(lèi)-6,2.4 什么是類(lèi)-7,除了實(shí)例變量,類(lèi)還要定義類(lèi)的變量。類(lèi)變量包含了被類(lèi)所有實(shí)例共享的信息。比如,假設(shè)所有的自行車(chē)有相同的檔位數(shù)。在本例子中,要定義一個(gè)實(shí)例變量來(lái)容納檔位數(shù)。每一個(gè)實(shí)例都會(huì)有變量的副本,但是在每一個(gè)實(shí)例中數(shù)值都是相同的。在這樣的情況下,你可以定義一個(gè)類(lèi)變量來(lái)包含檔位數(shù),這樣所有的類(lèi)的實(shí)例都共享這個(gè)變量。如果一個(gè)對(duì)象改變了變量,它就為改變那個(gè)類(lèi)的所有對(duì)象。類(lèi)同樣可以定義類(lèi)方法。你可以直接從類(lèi)中調(diào)用類(lèi)方法,然而你必須在特定的實(shí)例中調(diào)用實(shí)例方法。如下圖所示。,2.4 什么是類(lèi)-8,2.4 什么是類(lèi)-9,2.5 什么是繼承 -1,一個(gè)類(lèi)可以從它的父類(lèi)繼承狀態(tài)和行為。繼承為組織和構(gòu)造軟件程序提供了一個(gè)強(qiáng)大的和自然的機(jī)理。 總得說(shuō)來(lái),對(duì)象是以類(lèi)得形式來(lái)定義得。你可能現(xiàn)在已經(jīng)可以從它類(lèi)知道許多對(duì)象了。即使你不知道,如果我告訴你它是一輛自行車(chē),你就會(huì)知道它有兩個(gè)輪子和腳踏板等等。面向?qū)ο笙到y(tǒng)就更深入一些了,它允許類(lèi)在其它類(lèi)中定義。比如,山地自行車(chē)、賽車(chē)以及串座雙人自行車(chē)都是各種各樣的自行車(chē)。在面向?qū)ο蠹夹g(shù)中,山地自行車(chē)、賽車(chē)以及串座雙人自行車(chē)都是自行車(chē)類(lèi)的子類(lèi)。同樣地,自行車(chē)類(lèi)是山地自行車(chē)、賽車(chē)以及串座雙人自行車(chē)的父類(lèi)。這個(gè)父子關(guān)系可以如下圖所示:,2.5 什么是繼承 -2,2.5 什么是繼承 -3,每一個(gè)子類(lèi)從父類(lèi)中繼承了狀態(tài)。山地自行車(chē)、賽車(chē)以及串座雙人自行車(chē)共享了這些狀態(tài):比如速度等。同樣,每一個(gè)子類(lèi)繼承類(lèi)從父類(lèi)的方法,山地自行車(chē)、賽車(chē)以及串座雙人自行車(chē)共享了這些行為:剎車(chē)、改變腳踏速度等等。然而,子類(lèi)不能受到父類(lèi)提供的狀態(tài)和行為的限制。子類(lèi)可以增加變量和方法到從父類(lèi)繼承而來(lái)的變量和方法。比如,串座雙人自行車(chē)有兩個(gè)座位,這是它的父類(lèi)沒(méi)有的。子類(lèi)同樣可以重載繼承的方法并且為這些方法提供特殊執(zhí)行方法。比如 ,如果
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年網(wǎng)絡(luò)營(yíng)銷(xiāo)能力測(cè)試試卷及答案
- 2025年數(shù)字媒體與設(shè)計(jì)考試試卷及答案
- 2025年全球化與區(qū)域經(jīng)濟(jì)一體化試題及答案
- 2025年計(jì)算機(jī)科學(xué)知識(shí)考試試卷及答案
- 2025年電子工程與通信技術(shù)能力考核試題及答案
- 2025年兒童心理發(fā)展考試試題及答案
- 2025年公共關(guān)系學(xué)專(zhuān)業(yè)考試題及答案
- 一本珍貴的書(shū)400字9篇
- 寫(xiě)人作文勤勞的交警叔叔250字9篇
- 構(gòu)建應(yīng)用型人才培養(yǎng)模式的策略及實(shí)施路徑
- 《精餾塔工作原理》課件
- 基于學(xué)科核心素養(yǎng)的初中歷史大單元教學(xué)設(shè)計(jì)研究
- 北師大版二年級(jí)下冊(cè)數(shù)學(xué)計(jì)算題每日一練帶答案(共20天)
- 北師大版四年級(jí)下冊(cè)數(shù)學(xué)計(jì)算題每日一練帶答案(共30天)
- 建筑給排水班組勞動(dòng)合同
- 中醫(yī)診所信息安全管理制度
- 工程五金知識(shí)培訓(xùn)課件
- 永久性用電施工方案
- 柴油發(fā)電機(jī)組降噪解決方案
- 《老年人權(quán)益保障法》課件
- 2022年高中英語(yǔ)學(xué)科教學(xué)計(jì)劃
評(píng)論
0/150
提交評(píng)論