物件導向程式設計的特徵,原則

2021-09-05 11:33:29 字數 2339 閱讀 1755

oop:(object oriented programming),物件導向的程式設計。所謂「物件」在顯式支援物件導向的語言中,一般是指類在記憶體中裝載的例項,具有相關的成員變數和成員函式(也稱為:方法)。

oop 達到了軟體工程的三個主要目標:重用性、靈活性和擴充套件性。

特徵一  封裝

定義:隱藏物件的屬性和實現細節,僅對外公開介面,控制在程式中屬性的讀和修改的訪問級別。 

目的:增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是要通過外部介面,特定的訪問許可權來使用類的成員。

基本要求:屬性私有化,對每個屬性提供getter和setter方法.

特徵二  繼承

目的:**復用,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。

繼承的實現方式又分實現繼承,介面繼承.,可視繼承

實現繼承是指使用基類的屬性和方法而無需額外編碼的能力;

介面繼承是指僅使用屬性和方法的名稱、子類必須提供實現的能力;

可視繼承是指子窗體(類)使用基窗體(類)的外觀和實現**的能力。

特徵三  多型

定義:相同的事物,呼叫其相同的方法,引數也相同時,但表現的行為卻不同。

實現多型,重寫和過載.

[過載,多型在編譯期的表現形式。出現在乙個類中,判定過載的條件只有方法名一致,方法形參列表不同。其他的(如               返回值,訪問修飾符)都不可以判定。

重寫,多型在執行期的表現形式。出現在子父類,實現類與介面中。判定過載有乙個規律:「兩同兩小一大」

兩同:方法名和形參列表一致;

兩小:丟擲的異常和返回值相容於被重寫的方法.(一旦返回值是基本資料型別,

那重寫的方法返回值必須一致或者是object)

一大:訪問修飾符大於等於被重寫方法。

注意:對於重寫而言,只有可見的例項方法才可以被重寫。靜態方法和私有方法都是隱藏,不是重寫!]

目的:增強程式的可擴充套件性及可維護性。

需要注意的是,子類重寫父類方法時,修飾符許可權不能比父類嚴格.

特徵四  抽象

在物件導向的概念中,我們知道所有的物件都是通過類來描繪的,但是並不是所有的類都是用來描繪物件的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。是對一系列看上去不同,但是本質上相同的具體概念的抽象,我們不能把它們例項化(拿不出乙個具體的東西)所以稱之為抽象。比如水果,由重量.體積等共性,卻沒有特性(香蕉,蘋果)

抽象和封裝相似而又不同,封裝考慮內部實現,抽象考慮的是外部行為.封裝是遮蔽細節,抽象是提取共性.

開閉原則(open-closed principle, ocp)

軟體實體應該對擴充套件開放,對修改(對已有軟體模組、特別是最重要抽象層模組的的更改)關閉。

單一職責原則srp(single responsibility principle)

功能描述物件單一,不能複雜.

黎克特制代換原則(對於繼承)(liskov substitution principle,lsp)

繼承必須確保超類所擁有的性質在子類中仍然成立

介面分離原則(the inte***ce segregation principle isp)

乙個類對另外乙個類的依賴性應當是建立在最小的介面上的。

迪公尺特法則(對於封裝)(law of demeter lod)又叫做最少知識原則(least knowledge principle,lkp)

物件間盡量最少了解,徹底將api介面和具體實現相分離,模組間僅僅通過api進行通訊。迪公尺特法則的初衷在於降低類之間的耦合,也可能在一定程度上增加系統複雜度.

合成/聚合復用原則(對於繼承)(composite/aggregate reuse principle,carp)

在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部分:新的物件通過向這些物件的委派達到復用已有功能的目的。

依賴倒置原則(the dependency inversion principle dip)

抽象不應當依賴於細節,細節應當依賴於抽象.程式要依賴於抽象介面,不要依賴於具體實現。簡單的說就是要求對抽象進行程式設計,不要對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合。

另外:常說的oop三大特徵五大原則就是指其中的 :

封裝,繼承,多型.

1、單一職責原則;

2、開放閉合原則;

3、黎克特制替換原則;

4、依賴倒置原則;

5、介面隔離原則。

物件導向程式設計原則

很久以前就知道物件導向設計有一些公認的基本原則,可都是零零碎碎的了解一部分,雖然在實踐的過程中也有意識的用到了一些,可是從來沒有系統的總結過,這是我從網上找到的比較詳細的介紹,就當是讀書筆記吧 所有的設計模式都是對不同的可變性的封裝,從而使系統在不同角度達到 開閉原則 的要求。在軟體軟體系統中,乙個...

物件導向程式設計原則

宣告 下面列出的物件導向程式設計原則並非我個人總結,而是最近學習設計模式的筆記。目前只是列出剛看過的幾條,以後學到再繼續新增。1.單一職責原則 srp 單一職責原則,就是,就乙個類而言,應該僅有乙個引起它變化的原因。也就是說,乙個類應該只實現乙個單一的功能。為什麼呢?因為,如果乙個類承擔的職責過多,...

物件導向程式設計的原則

1.開閉原則 the open closed principle ocp 乙個模組在擴充套件性方面應該是開放的而在更改性方面應該是封閉的。因此在進行物件導向設計時要盡量考慮介面封裝機制 抽象機制和多型技術。該原則同樣適合於非物件導向設計的方法,是軟體工程設計方法的重要原則之一。我們以收音機的例子為例...