在UML中,了解到了面向?qū)ο螅詫γ嫦驅(qū)ο笥袀€初步的認(rèn)識,為以后能夠更加方便的理解面向?qū)ο蟠蛳乱粋€好的基
在UML中,了解到了面向?qū)ο螅詫γ嫦驅(qū)ο笥袀€初步的認(rèn)識,為以后能夠更加方便的理解面向?qū)ο蟠蛳乱粋€好的基礎(chǔ)。
抽象、封裝、繼承和多態(tài),這是面向?qū)ο蠹夹g(shù)的四大基本特征,也是面向?qū)ο蟪绦蛟O(shè)計思想的組成。正是這些特征,使得程序的安全性、可靠性和可重用性得到保證,并且經(jīng)過發(fā)展,面向?qū)ο蟮乃枷霊?yīng)用范圍更加廣泛,不光是軟件,在硬件、人工智能、分布式計算、操作系統(tǒng)等領(lǐng)域的應(yīng)用也越來越重要。
抽象
抽象可以忽略事物中與當(dāng)前目標(biāo)無關(guān)的非本質(zhì)特征、強(qiáng)調(diào)與當(dāng)前目標(biāo)有關(guān)的特征。比如地球儀,我們的目標(biāo)是通過地球儀來認(rèn)識地球的全貌,而不考慮地球儀上的部分與地球?qū)?yīng)部分的比例是多少。這只是一個地球的模型,抽象的模型越簡單、展露的特點越少,模型就越通用。我們通過觀察地球儀,可以找到大家公認(rèn)的七大洲四大洋,并不一定要知道每個大洲或大洋的具體模樣,在地球儀上都有,隨便一看就可以分辨出來。
抽象也可以對信息進(jìn)行分類處理,將對象按照一定的標(biāo)準(zhǔn)進(jìn)行劃分,實現(xiàn)抽象模型的層次結(jié)構(gòu),更加通用和易處理。這樣,抽象出來的類就為對象的重用提供了保障。
封裝
把對象的狀態(tài)和行為綁到一起的機(jī)制,使對象形成一個獨立的整體,并且盡可能的隱藏對象的內(nèi)部細(xì)節(jié)。封裝的信息屏蔽作用反應(yīng)了事物的相對獨立性,幫助保護(hù)數(shù)據(jù)的完整性。綁定有兩個含義:一時把對象的全部狀態(tài)和行為結(jié)合在一起,形成一個不可分割的整體。對象的私有屬性只能夠由對象的行為來修改和讀取;二是盡可能隱蔽對象的內(nèi)部細(xì)節(jié),與外界的聯(lián)系只能通過外部接口來實現(xiàn)。封裝的結(jié)果是使對象以外的部分不能隨意更改對象的內(nèi)部屬性或狀態(tài),可以通過公共訪問控制器來控制對象封裝了的屬性或狀態(tài)的改變。
在面向?qū)ο蟮某绦蛟O(shè)計中,不能一味的限制對象的屬性被外部直接讀取,否則將增加很多無用的操作,要對對象的屬性進(jìn)行分析后再設(shè)置。
繼承
各種事物之間不光有它們的共性,還有各個事物自己的特性,如果忽略了事物的特性,那么世界就會變得一層不變,失去了特色的精彩世界。事物的各自的特色和個性是這個層次的世界穩(wěn)固的原因,這些特色也是來區(qū)別事物共性的部分,相輔相成。
與抽象對比,抽象是把事物間的特性舍棄,抽象出事物間的共性成為一個類;而繼承則是提取了事物間的不同特性形成的多個類,這個類具有前一個類的全部特征,是前一個類的子集,形成了一個層次的結(jié)構(gòu)。這樣就可以看出,繼承和抽象是兩個相逆的過程,抽象是從多個對象中抽象出來了共性的類,是一個由多到少的過程;繼承則是從對象類中分層為多個具有自己特性的子類,是一個由少到多的過程。
特別的,繼承意味著“自動擁有”,即在特殊類中不必重新對已經(jīng)存在一般類中的所定義過的屬性和行為進(jìn)行定義,而是特殊類自動的,隱含的擁有其一般類的屬性和行為,且繼承后這些屬性和行為都是自己確實存在的。一般類稱為基類,特殊類稱為派生類。以上圖為例,小學(xué)生和中學(xué)生,大學(xué)生,研究生這四個特殊類是學(xué)生類這個一般類的子類,也是從學(xué)生類中繼承來的新類,它們自動的擁有了所有屬于學(xué)生類的屬性和方法,而同時它們又有自己的特性,不用再重新定義在學(xué)生類中已經(jīng)定義過的屬性和方法。學(xué)生類是基類,小學(xué)生等類是派生類。
繼承在面向?qū)ο筌浖拈_發(fā)過程中有如下目的,或者可以說是優(yōu)勢:1.對類的描述更加簡潔;2.能夠重用和擴(kuò)展現(xiàn)有類庫資源;3.是軟件易于維護(hù)和修改。
多態(tài)
多態(tài)是指兩個或多個屬于不同類的對象,對于同一個消息或方法調(diào)用所作出的不同相應(yīng)的能力。在面向?qū)ο蟮某绦蛟O(shè)計中,多態(tài)性是指在兩個或多個屬于不同類的同一函數(shù)名對應(yīng)于多個具有相似功能的不同函數(shù),可以使用相同的調(diào)用方式來調(diào)用這些具有不同功能的同名函數(shù)。這個可以這樣理解,在一個圖形的基類中有一個方法是畫圖,派生類矩形和派生類橢圓中也有畫圖的方法,但是通過同一個畫圖動作,矩形類畫出來的圖形是矩形,橢圓中畫圖畫出來的是橢圓。
繼承性和多態(tài)性的結(jié)合,實現(xiàn)了軟件的個性化設(shè)計。面向?qū)ο笾械某橄蠛屠^承更加重要,對面向?qū)ο蟮睦斫夥浅S袔椭?dāng)對面向?qū)ο竽吧臅r候可以以這兩個為突破點,全面理解面向?qū)ο蟆?/p>
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com