




已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
主講教師: xxx,Java語言程序設計, Java語言程序設計,第二章: 面向?qū)ο蟪绦蛟O計,2.1 面向?qū)ο蟮某绦蛟O計方法-1,一、面向過程的程序設計方法 以前,人們把程序看成是處理數(shù)據(jù)的一系列過程。過程或函數(shù)定義為一個接一個執(zhí)行的一組指令。數(shù)據(jù)與程序分開存儲,編程的主要技巧在于追蹤哪些函數(shù)調(diào)用哪些函數(shù);哪些數(shù)據(jù)發(fā)生了變化。為解決其中可能存在的問題,結(jié)構(gòu)化編程(1969年)應運而生。 結(jié)構(gòu)化程序設計的主要思想是功能分解并逐步求精。當一些任務十分復雜以至無法描述時,可以將它拆分為一系列較小的功能部件,直到這些自完備的子任務小到易于理解的程度。,2.1 面向?qū)ο蟮某绦蛟O計方法-2,一、面向過程的程序設計方法 例如,計算一個公司中每一個職員的平均工資是一項較為復雜的任務??梢詫⑵洳鸱譃橐韵碌淖尤蝿眨?(1)計算職員總數(shù) (2)計算工資總額 (3)用工資總額除以職員總數(shù) 計算工資總額本身又可分為一系列子任務: (1)找出每個職員的檔案 (2)讀出工資數(shù)額 (3)把工資加到部分和上 (4)讀出下個職員的檔案,2.1 面向?qū)ο蟮某绦蛟O計方法-3,一、面向過程的程序設計方法 類似地,讀出每個職員檔案中的記錄又可以分解為一系列子任務: (1)打開職員的檔案 (2)找出正確記錄 (3)從磁盤讀取數(shù)據(jù) 結(jié)構(gòu)化程序設計成功地為處理復雜問題提供了有力的手段。然而到80年代末,它些缺點越來越突出。 當數(shù)據(jù)量增大時,數(shù)據(jù)與處理這些數(shù)據(jù)的方法之間的分離使程序變得越來越難以理解。對數(shù)據(jù)處理能力的需求越強,這種分離所造成的負作用越顯著。,2.1 面向?qū)ο蟮某绦蛟O計方法-4,一、面向過程的程序設計方法 采用結(jié)構(gòu)化程序設計方法的程序員發(fā)現(xiàn),每一種相對于老問題的新方法都要帶來額外的開銷,與可重用性相對,通常稱這為重復投人?;诳芍赜眯缘乃枷胧侵附⒁恍┚哂幸阎匦缘牟考?,在需要時可以插人到程序之中。這是一種模仿硬件組合方式的做法,當工程師需要一個新的晶體管時,他不用自己去發(fā)明,只要到倉庫去找就行了。對于軟件工程師來說,在面向?qū)ο蟪绦蛟O計出現(xiàn)之前,一直缺乏具備這種能力的工具。,2.1 面向?qū)ο蟮某绦蛟O計方法-5,二、面向?qū)ο蟮某绦蛟O計方法 面向?qū)ο蟪绦蛟O計的本質(zhì)是把數(shù)據(jù)和處理數(shù)據(jù)的過程當成一個整體對象。Java全面支持面向?qū)ο蟪绦蛟O計。面向?qū)ο蟪绦蛟O計的實現(xiàn)需要封裝和數(shù)據(jù)隱藏技術,需要繼承和多態(tài)性技術。,2.1 面向?qū)ο蟮某绦蛟O計方法-6,二、面向?qū)ο蟮某绦蛟O計方法 1封裝和數(shù)據(jù)隱藏 當一個技術員要安裝一臺電腦時,他將各個設備組裝起來。當他想要一個聲卡時,不需要用原始的集成電路芯片和材料去制作一個聲卡,而是來到電腦公司,購買一個他所需要的某種功能的聲卡。技術員關心的是聲卡的功能,并不關心聲卡內(nèi)部的工作原理。聲卡是自成一體的。這種自成一體性稱為封裝性。無需知道封裝單元內(nèi)部是如何工作就能使用的思想稱為數(shù)據(jù)隱藏。,2.1 面向?qū)ο蟮某绦蛟O計方法-7,二、面向?qū)ο蟮某绦蛟O計方法 聲卡的所有屬性都封裝在聲卡中,不會擴展到聲卡之外。因為聲卡的數(shù)據(jù)隱藏在該電路板上。技術員無需知道聲卡的工作原理就能有效地使用它。 Java通過建立 類 來支持封裝性和數(shù)據(jù)隱藏。完好定義的類一旦建立,就可看成是完全封裝的實體,可以作為一個整體單元使用。類的實際內(nèi)部工作應當隱藏起來,使用完好定義的類的用戶,不需要知道類是如何工作的,只要知道如何使用它就行。,2.1 面向?qū)ο蟮某绦蛟O計方法-8,二、面向?qū)ο蟮某绦蛟O計方法 2繼承和重用 要制造新的電視機,可以有兩種選擇:一種是從草圖開始,另一種是對現(xiàn)有的型號加以改進。也許現(xiàn)有的型號已經(jīng)令人滿意,但如果再加一個功能,會更加完美。電視機工程師肯定不想從頭開始,而是希望制造另一種新型電視機,該機是在原有的型號基礎上增加一組電路做成的。新的電視機很快就制造出來了,被賦予一種新的型號,于是新型電視機就誕生了。這是繼承和重用的實例。,2.1 面向?qū)ο蟮某绦蛟O計方法-9,二、面向?qū)ο蟮某绦蛟O計方法 Java采用繼承支持重用的思想,程序可以在擴展現(xiàn)有類型的基礎上聲明新類型。新子類是從現(xiàn)有類型派生出來的,稱為派生類。新型電視機是在原有型號的電視機上增加若干種功能而得到的,所以新型電視機是原有電視機的派生,繼承了原有電視機的所有屬性,并在此基礎上增加了新的功能。,2.1 面向?qū)ο蟮某绦蛟O計方法-10,二、面向?qū)ο蟮某绦蛟O計方法 3多態(tài)性 通過繼承的方法構(gòu)造類,采用多態(tài)性為每個類指定表現(xiàn)行為。例如,學生類應該有一個計算成績的操作。大學生繼承了中學生,或者說是中學生的延伸。對于中學生,計算成績的操作表示語文、數(shù)學、英語等課程的計算,而對于后繼的大學生,計算成績的操作表示高等數(shù)學、計算機、普通物理等課程的計算。,2.2 什么是對象-1,對象是一些相關的變量和方法的軟件集。軟件對象經(jīng)常用于模仿現(xiàn)實世界中我們身邊的一些對象。對象是理解面向?qū)ο蠹夹g的關鍵。你在學習之前可以看看現(xiàn)實生活中的對象,比如狗、桌子、電視、自行車等等。你可以發(fā)現(xiàn)現(xiàn)實世界中的對象有兩個共同特征:它們都有狀態(tài)和行為。比如狗有自己的狀態(tài)(比如名字、顏色等等)和行為(比如搖尾巴、汪汪叫等等)。同樣自行車也有自己的狀態(tài)(比如當前檔位、兩個輪子等等)和行為(比如剎車、加速、減速以及改變檔位等等)。,2.2 什么是對象-2,軟件對象實際上是現(xiàn)實世界對象的造型,因為它同樣有狀態(tài)和行為。一個軟件對象利用一個或者多個變量來維持它的狀態(tài)。變量是由用戶標識符來命名的數(shù)據(jù)項。軟件對象用它的方法來執(zhí)行它的行為。方法是跟對象有關聯(lián)的函數(shù)(子程序)。 你可以利用軟件對象來代表現(xiàn)實世界中的對象。你用可以控制電子自行車的程序來代表現(xiàn)實世界的自行車。同樣你可以使用軟件對象來造型抽象的概念,比如,事件是一個用在GUI窗口系統(tǒng)的公共對象,它可以代表用戶按下鼠標按鈕或者鍵盤上的按鍵的反應。,2.2 什么是對象-3,如下圖是一個軟件對象的公共可視代表。,2.2 什么是對象-4,軟件對象的狀態(tài)和行為都可以用在對象中的變量和方法來表達。構(gòu)造現(xiàn)實世界的自行車的軟件對象,要有指示自行車的當前狀態(tài)的變量:速度為20mph,它的當前檔位為第三檔。這些變量就是我們熟知的實例變量,因為它們包含了用于特殊自行車對象的狀態(tài),并且在面向?qū)ο蠹夹g中,特殊的對象稱為實例。 如下圖所示,是作為軟件對象的自行車造型。,2.2 什么是對象-5,軟件對象的自行車造型,2.3 什么是消息-1,軟件對象之間進行交互作用和通訊是利用消息的。單一的一個對象通常不是很有用的。相反,一個對象通常是一個包含了許多其它對象的更大的程序或者應用程序。通過這些對象的交互作用,程序員可以獲得高階的功能以及更為復雜的行為。你的自行車如果不使用它的時候,它就是一堆鋁合金和橡膠,它沒有任何的活動。而只有當有其它的對象來和它交互的時候才是有用的。軟件對象與其它對象進行交互與通訊是利用發(fā)送給其它對象來實現(xiàn)的。當對象A想對象B來執(zhí)行一個B中的方法,對象A就會消息給對象B。如下圖所示。,2.3 什么是消息-2,2.3 什么是消息-3,有時候,接收的對象需要更多的信息以至于它可以正確知道該如何做。比如,當你想改變自行車的齒輪,你就必須指出哪個齒輪。一個消息由三個部分組成: 1被尋址消息的對象(YourBicycle) 2要執(zhí)行方法的名字(changeGears) 3這個方法需要的所有參數(shù)(lowerGear),2.3 什么是消息-4,2.4 什么是類-1,類實際上是對某種類型的對象定義變量和方法的原型。在現(xiàn)實世界中,你經(jīng)??吹较嗤愋偷脑S多對象。比如 ,你的自行車只是現(xiàn)實世界中許多自行車的其中一輛。使用面向?qū)ο蠹夹g,我們可以說你的自行車是自行車對象類的一個實例。通常,自行車有一些狀態(tài)(當前檔位、兩個輪子等等)以及行為(改變檔位、剎車等等)。但是,每輛自行車的狀態(tài)都是獨立的并且跟其它自行車不同。當廠家制造自行車的時候,廠商利用了自行車共有的特性來根據(jù)相同的藍圖制造許多自行車。如果制造一輛自行車就要產(chǎn)生一個新藍圖,那效率就太低了。,2.4 什么是類-2,在面向?qū)ο筌浖?,同樣地,可以讓相同種類地許多對象來共有一些特性,比如矩形、雇員記錄、視頻夾等等。就象自行車制造商人,你可以利用相同種類的對象是相似的事實并且你可以為這些對象創(chuàng)建一個藍圖。對對象的軟件藍圖叫做類。自行車的類需要定義一些實例變量來包括當前檔位、當前速度等等。這個類將為實例方法定義和提供實施方法,它允許騎車者改變檔位、剎車以及改變腳踏板的節(jié)奏,如下圖所示:,2.4 什么是類-3,2.4 什么是類-4,當你創(chuàng)建了自行車類以后,你可以從這個類創(chuàng)建任意個自行車對象。當你創(chuàng)建了一個類的實例后,系統(tǒng)將為這個對象和的實例變量分配內(nèi)存。每個實例將給所有實例變量的副本定義在類中。如下圖所示:,2.4 什么是類-5,2.4 什么是類-6,2.4 什么是類-7,除了實例變量,類還要定義類的變量。類變量包含了被類所有實例共享的信息。比如,假設所有的自行車有相同的檔位數(shù)。在本例子中,要定義一個實例變量來容納檔位數(shù)。每一個實例都會有變量的副本,但是在每一個實例中數(shù)值都是相同的。在這樣的情況下,你可以定義一個類變量來包含檔位數(shù),這樣所有的類的實例都共享這個變量。如果一個對象改變了變量,它就為改變那個類的所有對象。類同樣可以定義類方法。你可以直接從類中調(diào)用類方法,然而你必須在特定的實例中調(diào)用實例方法。如下圖所示。,2.4 什么是類-8,2.4 什么是類-9,2.5 什么是繼承 -1,一個類可以從它的父類繼承狀態(tài)和行為。繼承為組織和構(gòu)造軟件程序提供了一個強大的和自然的機理。 總得說來,對象是以類得形式來定義得。你可能現(xiàn)在已經(jīng)可以從它類知道許多對象了。即使你不知道,如果我告訴你它是一輛自行車,你就會知道它有兩個輪子和腳踏板等等。面向?qū)ο笙到y(tǒng)就更深入一些了,它允許類在其它類中定義。比如,山地自行車、賽車以及串座雙人自行車都是各種各樣的自行車。在面向?qū)ο蠹夹g中,山地自行車、賽車以及串座雙人自行車都是自行車類的子類。同樣地,自行車類是山地自行車、賽車以及串座雙人自行車的父類。這個父子關系可以如下圖所示:,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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化展覽現(xiàn)場安全監(jiān)管與責任保證書
- 抖音火花達人網(wǎng)紅獨家經(jīng)紀代理合同范本
- 展會臨時展具租賃與現(xiàn)場布置綜合服務協(xié)議
- 游泳教練崗位職責與培訓流程
- 文化藝術中心裝修的文明施工及環(huán)保措施
- 隧道工程混凝土施工方案與措施
- 物流與供應鏈初創(chuàng)企業(yè)人力資源計劃
- 小學乒乓球課堂教學計劃
- 防中毒安全小班教案
- 小學二年級下冊體育游戲教學計劃
- 養(yǎng)老院食堂管理制度
- 2025年廣東廣州中物儲國際貨運代理有限公司招聘筆試參考題庫附帶答案詳解
- 2025版各行業(yè)《重大事故隱患執(zhí)法檢查參考標準》
- 喬哈里視窗培訓課件
- 《免疫細胞療法》課件
- 社區(qū)居民對健康服務中心的滿意度調(diào)查與分析
- 商場物業(yè)人員缺失的補充措施
- 醫(yī)療護理醫(yī)學培訓 留置針的固定及維護課件
- 甘肅開放大學2024年《信息技術與信息管理》形考作業(yè)1-4
- 《尋常型銀屑病中西醫(yī)結(jié)合診療指南》
- 2025年國家電投所屬國核鈾業(yè)招聘筆試參考題庫含答案解析
評論
0/150
提交評論