1. 程式人生 > >面向物件程式設計的特徵,原則

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

OOP:(Object Oriented Programming),面向物件的程式設計。所謂“物件”在顯式支援面向物件的語言中,一般是指類在記憶體中裝載的例項,具有相關的成員變數和成員函式(也稱為:方法)。

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

特徵一  封裝

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

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

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

特徵二  繼承

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

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

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

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

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

特徵三  多型

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

實現多型,重寫和過載.

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

特徵四  抽象

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

 

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


開閉原則(Open-Closed Principle, OCP)

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

單一職責原則SRP(Single Responsibility Principle)

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

里氏代換原則(對於繼承)(Liskov Substitution Principle,LSP)

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

介面分離原則(the Interface 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、介面隔離原則。