第二章面向?qū)ο骭第1頁
第二章面向?qū)ο骭第2頁
第二章面向?qū)ο骭第3頁
第二章面向?qū)ο骭第4頁
第二章面向?qū)ο骭第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章面向?qū)ο蟮谝豁摚踩?,編輯?023年,星期五綱要面向?qū)ο笈c類1屬性分析2方法分析34構(gòu)造子分析歸屬權(quán)分析56第二頁,共三十六頁,編輯于2023年,星期五面向?qū)ο蟾耪撁嫦驅(qū)ο笫浅绦蛟O(shè)計(jì)的一種思想,是程序員認(rèn)識(shí)客觀世界的基本理論,是程序員描述事物縱向演進(jìn)和橫向聯(lián)系的基本世界觀。生生不息螳螂捕蟬第三頁,共三十六頁,編輯于2023年,星期五對象在面向?qū)ο罂磥恚瑢ο笫强陀^世界的最小單元,客觀世界的一切實(shí)體(具體事物),都是對象。任何一個(gè)對象,都是由兩部分組成的。即:狀態(tài)和行為。并且通過行為能夠影響到狀態(tài)的改變。比如,當(dāng)人處于饑餓狀態(tài),通過用餐這個(gè)行為,能夠使饑餓狀態(tài)得以改變。第四頁,共三十六頁,編輯于2023年,星期五類類是面向?qū)ο蟮幕靖拍?。是具有相同屬性的對象的集合。設(shè)計(jì)類在面向?qū)ο笾?,類用以描述對象的共性。一如上文所言,對象的本質(zhì)就是客觀實(shí)體,任何一個(gè)客觀實(shí)體都包括如下兩部分:====>狀態(tài)====>行為那么當(dāng)我們分析對象共性的時(shí)候,就是分析對象具有哪些相同的屬性和方法。并且完成如下映射:狀態(tài)====>屬性行為====>方法屬性和方法共同成為類的成員第五頁,共三十六頁,編輯于2023年,星期五舉個(gè)例子下面我們通過代碼描述類和對象的關(guān)系:關(guān)于人的描述第六頁,共三十六頁,編輯于2023年,星期五類和對象的關(guān)系類別物以類聚,人以群分。類就是具有共性的對象集合。任何對象,只要存在共性就可以分為一類.類型對象是類的一個(gè)實(shí)例??梢詫㈩惪醋鍪菍ο蟮哪0澹鴮ο罂梢钥醋鍪前凑赵撃0逯圃斐鰜淼臉?biāo)準(zhǔn)件。下面我們通過代碼描述類和對象的關(guān)系:關(guān)于人的描述第七頁,共三十六頁,編輯于2023年,星期五面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)所謂的面向?qū)ο蟪绦蛟O(shè)計(jì),就是分析客觀實(shí)體的屬性和方法,抽象其共性,形成類。封裝繼承多態(tài)通過類的繼承描述事物的縱向演進(jìn)通過類之間的調(diào)用關(guān)系,描述事物的橫向聯(lián)系。第八頁,共三十六頁,編輯于2023年,星期五方法剖析方法:對應(yīng)事物的行為。封裝了類對外界信息的處理過程。第九頁,共三十六頁,編輯于2023年,星期五方法剖析范圍方法參數(shù)分析

返回值分析重載分析第十頁,共三十六頁,編輯于2023年,星期五參數(shù)分析參數(shù):代表方法執(zhí)行期間處理的數(shù)據(jù),可以使任意數(shù)據(jù)類型,比如 int,String以及自己定義的類型。參數(shù)的傳遞值傳遞引用傳遞在實(shí)際應(yīng)用中,參數(shù)應(yīng)該具有一定的擴(kuò)展性擴(kuò)展性主要體現(xiàn)在兩個(gè)方面類型的擴(kuò)展性數(shù)量的擴(kuò)展性第十一頁,共三十六頁,編輯于2023年,星期五方法重載方法重載是構(gòu)成面向?qū)ο蠖鄳B(tài)的基石。重載只與參數(shù)有關(guān)重載的三大要素參數(shù)個(gè)數(shù)參數(shù)順序參數(shù)類型重載包括兩重含義:事物針對外界不同的刺激,做出不同的反應(yīng),是類多態(tài)性的基礎(chǔ)。針對同一行為,給出不同解決方案。第十二頁,共三十六頁,編輯于2023年,星期五返回值分析返回值代表方法的處理結(jié)果。第十三頁,共三十六頁,編輯于2023年,星期五構(gòu)造子分析構(gòu)造子的意義:在類被實(shí)例化時(shí)自動(dòng)調(diào)用,告訴外界按照什么標(biāo)準(zhǔn)將類實(shí)例化。每個(gè)類都有一個(gè)默認(rèn)的無參構(gòu)造子構(gòu)造子可以私有構(gòu)造子可以多態(tài)第十四頁,共三十六頁,編輯于2023年,星期五歸屬權(quán)分析歸屬權(quán),也就是成員歸類所有還是歸對象所有,語法表象上,就是成員是否是靜態(tài)(static)的。如果是靜態(tài)成員,表示該成員歸類所有,通過類名稱就可以直接訪問如果是非靜態(tài)成員,歸對象所有。需要將類實(shí)例化以后,通過對象進(jìn)行訪問。this代表當(dāng)前對象。可以通過this訪問一切對象成員。第十五頁,共三十六頁,編輯于2023年,星期五綱要面向?qū)ο蟮幕靖拍?封裝2繼承34多態(tài)訪問權(quán)限控制56final接口與抽象類應(yīng)用環(huán)境7第十六頁,共三十六頁,編輯于2023年,星期五面向?qū)ο蠡靖拍顚ο罂陀^世界中一切實(shí)體,都可以看做是對象。對象內(nèi)部包含了實(shí)體的屬性以及對屬性的操作,也就是方法。他們共同組成了對象的成員。類(類別)物以類聚,人以群分。類就是具有共性的對象集合。只要存在共性就可以分為一類.對象與類的關(guān)系(類型)對象是類的一個(gè)實(shí)例。可以將類看做是對象的模板,而對象可以看做是按照該模板制造出來的標(biāo)準(zhǔn)件。消息(參數(shù))對象之間溝通的信息。比如:小鬼子舉起的大白旗第十七頁,共三十六頁,編輯于2023年,星期五面向?qū)ο蟮幕嫦驅(qū)ο蠡驹斫⒃谌龎K基石之上:封裝繼承多態(tài)第十八頁,共三十六頁,編輯于2023年,星期五拷問封裝封裝:是將數(shù)據(jù)(屬性)和對數(shù)據(jù)的操作(方法)屏蔽在一個(gè)邏輯單元(類)中,對外界提供有限的訪問權(quán)限的一種機(jī)制。封裝:包括兩層含義:語法上:封裝了數(shù)據(jù)及其處理。語義上:封裝了可變性和復(fù)雜性。類是封裝的基本手段,封裝的目的:在于類別的發(fā)現(xiàn).找到同一類事物,描述它們的共性!找到事物,封裝其屬性和行為第十九頁,共三十六頁,編輯于2023年,星期五繼承從表面看,是一個(gè)類獲得另外一個(gè)類的成員.那么為什么要繼承哪,繼承的本質(zhì)目的又是什么那?繼承體現(xiàn)的是事物的縱向演進(jìn),是對事物的重新分類的過程,只有在分類學(xué)有意義的時(shí)候,才可以使用繼承.從這個(gè)角度來說繼承樹上的每個(gè)節(jié)點(diǎn),都是一個(gè)新的種群.如果單存為了代碼的復(fù)用,沒有必要繼承.第二十頁,共三十六頁,編輯于2023年,星期五那些成員可以被繼承子類可以繼承父類的一切成員,請牢記這一點(diǎn).第二十一頁,共三十六頁,編輯于2023年,星期五動(dòng)態(tài)方法調(diào)度動(dòng)態(tài)方法調(diào)度程序運(yùn)行期間,通過父類的變量引用子類的實(shí)例.public

classA1010DaoImplextendsBasicDaoImpl{……..}…….BasicDaoImpldao=newA1010DaoImpl();第二十二頁,共三十六頁,編輯于2023年,星期五方法覆蓋與重載方法覆蓋(重寫):定義:繼承關(guān)系發(fā)生以后,子類重寫了父類的某個(gè)非靜態(tài)方法.發(fā)生方法覆蓋以后,如果進(jìn)行動(dòng)態(tài)方法調(diào)度,調(diào)用的方法,為子類的方法實(shí)現(xiàn).方法重載繼承關(guān)系發(fā)生后子類可以進(jìn)行方法重載,表示子類對同一事件增加了新的處理辦法。但是,子類增加的方法,無法完成動(dòng)態(tài)方法調(diào)度。第二十三頁,共三十六頁,編輯于2023年,星期五方法隱藏繼承關(guān)系發(fā)生以后,子類中依然可以重寫父類的靜態(tài)方法。但是請注意,此時(shí),子類只是隱藏了父類的方法,而并非真正地覆蓋了父類中的方法實(shí)現(xiàn)。此時(shí)如果發(fā)生動(dòng)態(tài)方法調(diào)度,父類的變量調(diào)用的依然是父類中的方法實(shí)現(xiàn)。覆蓋與隱藏的區(qū)分對象方法被覆蓋,類的方法被隱藏(非靜態(tài)方法被覆蓋,靜態(tài)方法被隱藏)。第二十四頁,共三十六頁,編輯于2023年,星期五super的使用繼承關(guān)系發(fā)生以后,子類中依然可以訪問父類的非私有成員。訪問關(guān)鍵詞supersuper的用法一般分成兩種調(diào)用父類的構(gòu)造子super一定是子類構(gòu)造子的第一個(gè)語句訪問父類中被子類覆蓋的成員第二十五頁,共三十六頁,編輯于2023年,星期五繼承關(guān)系中代碼的集中方向方法向上集中父類中的方法,無論被多少個(gè)子類繼承,在內(nèi)存分配上,父類與子類共用一份內(nèi)存地址數(shù)據(jù)向下集中在內(nèi)存分配上,父類與子類數(shù)據(jù),使用獨(dú)立的是內(nèi)存單元.第二十六頁,共三十六頁,編輯于2023年,星期五成員的訪問控制權(quán)限第二十七頁,共三十六頁,編輯于2023年,星期五finalfinal一共有三種用法作用于類:禁止被繼承作用于方法:禁止被重載(覆蓋)作用于屬性:屬性由變量轉(zhuǎn)變成常量第二十八頁,共三十六頁,編輯于2023年,星期五接口與抽象類今天的軟件開發(fā),大多是基于分層體系結(jié)構(gòu)來完成的。軟件設(shè)計(jì)的第一步就是要分析整個(gè)系統(tǒng)都要完成哪些功能,此時(shí)是不可能考慮到怎么做的問題的。項(xiàng)目越大,越是如此。也就是說,我們設(shè)計(jì)軟件系統(tǒng)的時(shí)候,要將做什么與怎么做分步來實(shí)現(xiàn)。接口,就是用來定義軟件需要做什么的??紤]接口的時(shí)候,在于對問題的宏觀分析,而不是考慮具體實(shí)現(xiàn)的細(xì)節(jié)。接口只規(guī)定做什么,至于怎么做,則由其實(shí)現(xiàn)類完成,因此,接口中只有方法的定義,而沒有方法體.在實(shí)際的應(yīng)用中,接口中定義的方法,應(yīng)該是,該類事物中,外界可以使用的全部方法。接口與實(shí)現(xiàn)類的關(guān)系,很類似于酒店掌柜與伙計(jì)的關(guān)系。比如說,掌柜要思考的問題是管理好酒店,為此,每天要保持地板的清潔。但是,他不會(huì)自己去擦,只是定下了每天要擦地板這件事情。至于怎么去擦,那是由伙計(jì)去完成的。至于伙計(jì)是從東往西擦,還是從南往北擦,這個(gè),掌柜是不應(yīng)該去管的。第二十九頁,共三十六頁,編輯于2023年,星期五系統(tǒng)總體架構(gòu)圖第三十頁,共三十六頁,編輯于2023年,星期五抽象類抽象類是介于接口與實(shí)現(xiàn)類之間的一種數(shù)據(jù)類型。在實(shí)際的開發(fā)過程中,子類具有很多共同的行為,如果將這些行為在每個(gè)子類中都寫一遍,既造成代碼重復(fù),又給整個(gè)系統(tǒng)的維護(hù)造成了不必要的負(fù)擔(dān)。此時(shí)抽象類應(yīng)運(yùn)而生。我們可以讓抽象類先實(shí)現(xiàn)接口,同時(shí)在抽象類中完成子類的共性行為。然后再讓子類繼承抽象類。這樣就保證了代碼版本的單一性,簡化了系統(tǒng)的維護(hù)。比如,動(dòng)物的繼承關(guān)系,請看下圖:第三十一頁,共三十六頁,編輯于2023年,星期五三級繼承實(shí)現(xiàn)結(jié)構(gòu)圖第三十二頁,共三十六頁,編輯于2023年,星期五關(guān)于繼承的后繼話題在實(shí)際的軟件開發(fā)過程中,盡量不要讓具體類之間產(chǎn)生繼承關(guān)系,因此,從這個(gè)角度來說,繼承的等級結(jié)構(gòu),一般不超過兩級.在實(shí)際的操作過程中,繼承,只在抽象類與具體類之間發(fā)生.而具體類,一般來說,都是final的.第三十三頁,共三十六頁,編輯于2023年,星期五多態(tài)多態(tài):語法實(shí)現(xiàn)上是基于重載機(jī)制來完成的。多態(tài)的類型分為如下兩種1.宏觀多態(tài)一個(gè)接口各自實(shí)現(xiàn).由于繼承本質(zhì)上是對事物的重新分類,這樣同一物種的不同種群,為了適應(yīng)各自的生存環(huán)境,就要用不同的方式實(shí)現(xiàn)繼承自祖先的方法.比如繼承自同一動(dòng)物祖先的鷹,魚和老虎,在行動(dòng)方法上各不相同.2.微觀多態(tài)微觀多態(tài),體現(xiàn)的是同一動(dòng)物,針對外界不同的刺激,會(huì)做出不同的反應(yīng).比如,老鼠見到貓和見到奶油的表現(xiàn)是不一樣的體現(xiàn)到程序中,就是同一個(gè)類內(nèi)部的方法重載。第三十四頁,共三十六頁,編輯于2023年,星期五什么

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論