面向?qū)ο蟮娜蠡咎卣魑宕蠡驹瓌t_第1頁(yè)
面向?qū)ο蟮娜蠡咎卣魑宕蠡驹瓌t_第2頁(yè)
面向?qū)ο蟮娜蠡咎卣魑宕蠡驹瓌t_第3頁(yè)
面向?qū)ο蟮娜蠡咎卣魑宕蠡驹瓌t_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、面向?qū)ο蟮娜蠡咎卣?,五大基本原則網(wǎng)上的講解很多,但大都類(lèi)似,這里進(jìn)行轉(zhuǎn)載整理。三大基本特征是理解五大基本原則的前提。一、三大基本特征:封裝、繼承、多態(tài)1、封裝封裝就是隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開(kāi)接口,控制在程序中屬性的讀和修改的訪問(wèn)級(jí)別,將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個(gè)有機(jī)的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進(jìn)行有機(jī)的結(jié)合,形成“類(lèi)”,其中數(shù)據(jù)和函數(shù)都是類(lèi)的成員。封裝的目的是增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只是要通過(guò)外部接口,以特定的訪問(wèn)權(quán)限來(lái)使用類(lèi)的成員。面相對(duì)象的不就是使用程序處理事情時(shí)以對(duì)象為中心去分析嗎,與面向過(guò)程不同,面向過(guò)程關(guān)心處

2、理的邏輯、流程等問(wèn)題,而不關(guān)心事件主體。而面向?qū)ο蠹疵嫦蛑黧w,所以我們?cè)诮鉀Q問(wèn)題時(shí)應(yīng)該先進(jìn)行對(duì)象的封裝(對(duì)象是封裝類(lèi)的實(shí)例,比如張三是人,人是一個(gè)封裝類(lèi),張三只是對(duì)象中的一個(gè)實(shí)例、一個(gè)對(duì)象)。比如我們?nèi)粘I钪械男⊥米?、小綿羊都可以封裝為一個(gè)類(lèi)。比如兔子的屬性有兩只耳朵、四只腿、一雙眼睛、三瓣嘴等;行為(功能)有跑、跳、吃素等。2、繼承繼承是面向?qū)ο蟮幕咎卣髦?,繼承機(jī)制允許創(chuàng)建分等級(jí)層次的類(lèi)。繼承就是子類(lèi)繼承父類(lèi)的特征和行為,使得子類(lèi)對(duì)象(實(shí)例)具有父類(lèi)的實(shí)例域和方法,或子類(lèi)從父類(lèi)繼承方法,使得子類(lèi)具有父類(lèi)相同的行為。類(lèi)似下面這個(gè)圖:我們?cè)谏厦嬉呀?jīng)封裝了兔子這個(gè)類(lèi),其他動(dòng)物也一樣可以進(jìn)行封

3、裝。在封裝過(guò)程中我們發(fā)現(xiàn)兔子、綿羊這兩個(gè)類(lèi)具有相似的功能或特性如吃草,所以我們可以抽取共有特征和方法形成高一層的類(lèi),如這里的食草動(dòng)物、食肉動(dòng)物。繼承之間是子父類(lèi)的關(guān)系。繼承機(jī)制可以很好的描述一個(gè)類(lèi)的生態(tài),也提高了代碼復(fù)用率,在Java中的Object類(lèi)是所有類(lèi)的超類(lèi),常稱(chēng)作上帝類(lèi)。3、多態(tài)多態(tài)同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。是指一個(gè)類(lèi)實(shí)例(對(duì)象)的相同方法在不同情形有不同表現(xiàn)形式。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對(duì)象可以共享相同的外部接口。這意味著,雖然針對(duì)不同對(duì)象的具體操作不同,但通過(guò)一個(gè)公共的類(lèi),它們(那些操作)可以通過(guò)相同的方式予以調(diào)用。多態(tài)的優(yōu)點(diǎn):1. 消除類(lèi)型之間的耦合關(guān)系2

4、. 可替換性3. 可擴(kuò)充性4. 接口性5. 靈活性6. 簡(jiǎn)化性多態(tài)存在的三個(gè)必要條件:1. 繼承2. 重寫(xiě)(子類(lèi)繼承父類(lèi)后對(duì)父類(lèi)方法進(jìn)行重新定義)3. 父類(lèi)引用指向子類(lèi)對(duì)象簡(jiǎn)言之,多態(tài)其實(shí)是在繼承的基礎(chǔ)上的。比如說(shuō)今天我們要去動(dòng)物園參觀動(dòng)物,那么你說(shuō)我們?nèi)⒂^兔子、參觀綿羊、參觀獅子、參觀豹子都是對(duì)的,但你不能說(shuō)我們?nèi)⒂^汽車(chē)。在這個(gè)例子中,子類(lèi)具有多態(tài)性:除了使用自己的身份,還能充當(dāng)父類(lèi)。二、五大基本原則1、單一職責(zé)原則(SRP)一個(gè)類(lèi)應(yīng)該有且只有一個(gè)去改變它的理由,這意味著一個(gè)類(lèi)應(yīng)該只有一項(xiàng)工作。比如在職員類(lèi)里,將工程師、銷(xiāo)售人員、銷(xiāo)售經(jīng)理這些情況都放在職員類(lèi)里考慮,其結(jié)果將會(huì)非常混亂,在

5、這個(gè)假設(shè)下,職員類(lèi)里的每個(gè)方法都要if else判斷是哪種情況,從類(lèi)結(jié)構(gòu)上來(lái)說(shuō)將會(huì)十分臃腫。2、開(kāi)放封閉原則(OCP)對(duì)象或?qū)嶓w應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改封閉。更改封閉即是在我們對(duì)模塊進(jìn)行擴(kuò)展時(shí),勿需對(duì)源有程序代碼和DLL進(jìn)行修改或重新編譯文件!這個(gè)原則對(duì)我們?cè)谠O(shè)計(jì)類(lèi)的時(shí)候很有幫助,堅(jiān)持這個(gè)原則就必須盡量考慮接口封裝,抽象機(jī)制和多態(tài)技術(shù)!3、里氏替換原則(LSP)在對(duì)象 x 為類(lèi)型 T 時(shí) q(x) 成立,那么當(dāng) S 是 T 的子類(lèi)時(shí),對(duì)象 y 為類(lèi)型 S 時(shí) q(y) 也應(yīng)成立。(即對(duì)父類(lèi)的調(diào)用同樣適用于子類(lèi))4、依賴(lài)倒置原則(DIP)高層次的模塊不應(yīng)該依賴(lài)于低層次的模塊,他們都應(yīng)該依賴(lài)于抽象。具體實(shí)現(xiàn)應(yīng)該依賴(lài)于抽象,而不是抽象依賴(lài)于實(shí)現(xiàn)??梢赃@樣理解,上面我舉例子的時(shí)候先說(shuō)了兔子和綿羊,然后才推出食草動(dòng)物。但如果我們繼續(xù)認(rèn)識(shí)了牛、馬等食草動(dòng)物,我們會(huì)發(fā)現(xiàn)我們需要不斷調(diào)整食草動(dòng)物的描述,這樣程序會(huì)變得僵化,所以我們不應(yīng)該讓子類(lèi)依賴(lài)于實(shí)體,不應(yīng)該讓父類(lèi)模塊依賴(lài)于子類(lèi)模塊。所以我們需要將食草動(dòng)物設(shè)計(jì)為抽象類(lèi),即抽象類(lèi)或接口。這樣下層只需要實(shí)現(xiàn)相應(yīng)的細(xì)節(jié)而不會(huì)影響父類(lèi)。5、接口隔離原則(ISP)不應(yīng)強(qiáng)迫客戶(hù)端實(shí)現(xiàn)一個(gè)它用不上的接口,或是說(shuō)客戶(hù)端不應(yīng)該被迫依賴(lài)它們不使用的方法,使用多個(gè)專(zhuān)門(mén)的接口比使用單個(gè)接口要好的多!比如,為了減少接口的定義,將許多類(lèi)似的方法都放

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論