課件-面向?qū)ο?抽象_第1頁
課件-面向?qū)ο?抽象_第2頁
課件-面向?qū)ο?抽象_第3頁
課件-面向?qū)ο?抽象_第4頁
課件-面向?qū)ο?抽象_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1/10/20231第3章抽象1/10/20232抽象是指對于一個過程或者一件制品的某些細節(jié)有目的的隱藏,以便把其他方面、細節(jié)或者結(jié)構(gòu)表達得更加清楚。(信息隱藏)抽象,是控制復(fù)雜性時最重要的工具。老虎、獅子(猛獸)抽象1/10/20233如果打開一本地圖集,一般看到的常是一幅世界地圖。該地圖只顯示了一些最主要的特征,如主要的山脈、海洋等等,但細節(jié)基本上都被忽略了。隨后的一系列地圖將覆蓋小一些的地理區(qū)域,也能處理更多的細節(jié)。例如,一塊大陸(如各大洲)的地圖將包括國家的邊界和主要的國家。更小的區(qū)域(如國家)地圖,將包括城市、各山峰的名稱。一個城市的地圖可能會包括進出該城市的主要道路,再小一些的地圖甚至還會畫出一些建筑物。抽象實例:地圖集

1/10/20234每個抽象層次,包括了某些信息,也忽略了某些信息。人們通常使用一些簡單的工具來建立、理解和管理復(fù)雜的系統(tǒng)。其中最重要的技術(shù)稱為“抽象”(abstraction)。

抽象技術(shù)1/10/20235在典型的OOP程序中,有許多級抽象。更高層次的抽象部分地體現(xiàn)了面向?qū)ο蟪绦蛎嫦驅(qū)ο蟮奶卣?。抽象的層?/10/20236在最高級別上,程序被視為一個對象的“團體”,這些對象間相互作用,以完成共同的目標(biāo)。抽象層次1-團體1/10/20237抽象層次11/10/20238在面向?qū)ο蟪绦蜷_發(fā)過程中,關(guān)于“團體”有兩個層次的含義:首先是指程序員的團體,他們在現(xiàn)實世界中相互作用,以便開發(fā)出應(yīng)用程序來。第二個團體是這些程序員創(chuàng)建的對象的團體,它們在虛擬世界中相互作用,以完成它們的共同目標(biāo)。信息隱藏和抽象均適用。團體1/10/20239許多語言允許協(xié)同工作的對象組合到一個“單元”(unit)中。例如,Java的“包”

(packages),C++的“名字空間”(name

spaces),Delphi中的“單元”(units)。這些單元允許某些特定的名稱暴露在單元以外,而其他特征則隱藏在單元中。抽象層次2-單元1/10/202310抽象層次2-單元1/10/202311處理兩個獨立對象之間的交互。兩個對象間交互時涉及兩層抽象:一個對象(服務(wù)者,

server)向另一個對象(客戶,

client)提供服務(wù),二者之間以通信來交互。廣告牌?抽象層次3-CS1/10/202312兩層抽象:服務(wù)者和客戶1/10/202313該級別抽象通常用接口來表示。定義行為,但不描述如何來實現(xiàn)。抽象層次31/10/202314考慮抽象行為的具體實現(xiàn)方式。例:多種實現(xiàn)堆棧方式。抽象層次4-服務(wù)實現(xiàn)方式1/10/202315關(guān)注執(zhí)行一個方法的具體操作實現(xiàn)。抽象層次5-具體實現(xiàn)1/10/202316在軟件開發(fā)的早期,關(guān)鍵的問題就是確定合適層次的抽象。既不要忽略太多的細節(jié),也不要包括太多的細節(jié)。確定正確的抽象級別1/10/202317抽象的思想可以劃分為不同的形式抽象形式1/10/202318分治法特殊化(具體化、專門化)不同視角抽象形式1/10/202319常用的一種抽象形式是將一層劃分為多個組成部分。例如,汽車是由發(fā)動機、傳動機構(gòu)、車身和車輪組成的。要理解汽車這個概念,只要依次檢查其組成部件就行了。這就是傳統(tǒng)的分治法(divide

and

conquer).抽象形式:分治法1/10/202320另一種抽象形式稱為特殊化或具體化(specialization)。如,汽車是一個有輪的載運工具,而有輪的載運工具又是一個載運工具。

我們所了解的關(guān)于有輪的載運工具的知識,同樣適用于汽車和自行車。

我們所了解的關(guān)于載運工具的知識,同樣適用于馬匹和自行車。面向?qū)ο蟮恼Z言,常常使用這種形式的抽象抽象形式:特化分層1/10/202321另一種形式的抽象,是對同一件物品提供不同的視角。每一個視角會強調(diào)某一些細節(jié)而忽略其他細節(jié),因此,對同一對象描述出不同的特性。例如,機械師眼里的汽車和外行眼里的汽車,看法是很不一樣的。抽象形式:不同視角1/10/202322當(dāng)系統(tǒng)中組件數(shù)量變大時,常用分類(Catalogs)來進行組織。日常生活中常用到不同類型的分類。例如電話號碼簿、Internet搜索引擎等。相似地,軟件中也有很多分類。例如,類的列表、類中定義的方法的列表等。抽象形式:分類(

Catalogs

)1/10/202323對接口和實現(xiàn)的劃分,不僅從高層的角度對設(shè)計易于理解,而且使軟件組件的替換成為可能。接口描述軟件組件所提供的服務(wù),卻不必描述完成服務(wù)所使用的技術(shù),這個思想是理解和處理復(fù)雜軟件系統(tǒng)的核心手段。服務(wù)視角1/10/202324團體的每一個成員,都提供一種被團隊的其他成員使用的服務(wù)。沒有一個成員,可以獨立解決問題。只有共同、協(xié)調(diào)工作,才能完成整體任務(wù)。服務(wù)視角1/10/202325組合,是另一個由簡單部分構(gòu)建復(fù)雜結(jié)構(gòu)的有力技術(shù)。(復(fù)合)其中心思想,是由少量簡單的形式,根據(jù)一些組合規(guī)則,構(gòu)建出新的形式。

組合中的關(guān)鍵之處,在于既可對初始形式進行組合,也可以對新形式進行組合。抽象形式:組合(Composition)1/10/202326正則表達式

a,b,c,dabc,abcddcbaabc|abd|abaab(a|c|d)(((a|b)*c)|dd)a類型系統(tǒng)的基礎(chǔ)函數(shù)庫/類庫組合例1/10/202327另一種處理復(fù)雜性的方式,是使用特殊化的層次來構(gòu)建抽象。有時這也稱為分類法(taxonomy).

例如,生物分為動物和植物,動物又分為脊椎動物和無脊椎動物,脊椎動物包括哺乳動物,哺乳動物又分為貓、狗……,等等抽象形式:特化分層1/10/202328鴨嘴獸提醒我們,總會有例外(非標(biāo)準(zhǔn)行為)面向?qū)ο蟮恼Z言,也需要有一種機制來覆蓋從上一級繼承來的信息。非標(biāo)準(zhǔn)行為1/10/202329Is-a繼承Has-a繼承繼承方式1/10/202330在我們遇到新問題時,大多數(shù)人都會查看已經(jīng)解決過的老問題中,是否有與新問題相似的情況。以前的問題可以作為一個解決問題的模型,略做修改可能就能解決新問題了。這就是軟件模式(pattern)的思想。廣泛應(yīng)用于對象團體中成員之間的相互作用方式。抽象形式:模式1/10/202331例-代理模式1/10/202332面向?qū)ο蠹夹g(shù)并非革命性的,是過程-模塊-抽象數(shù)據(jù)類型-面向?qū)ο蟪橄髾C制發(fā)展簡史1/10/202333匯編語言:最早的抽象機制過程/函數(shù)抽象機制發(fā)展簡史1/10/202334部分信息隱藏堆棧例過程1/10/2023354個例程均不能局部創(chuàng)建堆棧本身所包含的數(shù)據(jù)。無法限制名字的可存取性和可視性。復(fù)用困難觀察1/10/2023363.模塊:解決全局名稱空間擁擠問題。用來改善建立和管理名稱集合及其相關(guān)數(shù)值的一種技術(shù)。抽象機制發(fā)展簡史1/10/202337堆棧例:希望公開信息:接口限制存取信息:堆棧數(shù)據(jù)模塊提供了將名稱空間劃分成兩個部分的能力。公有部分可以在模塊外存取,私有部分只能從模塊內(nèi)存取。模塊1/10/202338希望有兩個堆棧,如何處理?復(fù)數(shù)?思考1/10/202339模塊不允許實現(xiàn)實例化。實例化是一種能夠建立數(shù)據(jù)區(qū)域多份拷貝的能力。實例化1/10/2023404.抽象數(shù)據(jù)類型。目標(biāo):1).定義抽象,創(chuàng)建多個實例;

2).使用實例,知其所提供操作,不必知道如何實現(xiàn)。抽象機制發(fā)展簡史1/10/202341ADT通過抽象規(guī)范來定義。例:堆棧數(shù)據(jù)類型的規(guī)范包括:入棧、出棧、返回棧頂三種操作。與ADT匹配的是一個或多個實現(xiàn)方式。抽象數(shù)據(jù)類型1/10/202342

溫馨提示

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

評論

0/150

提交評論