物件導向設計的3個基本特徵和5個原則

2021-09-10 19:59:18 字數 1524 閱讀 2206

物件導向的基本特徵

1.封裝

簡單來講: 將現實世界的事物抽象成計算機領域中的物件,物件同時具有屬性和行為,這種抽象就是封裝.

封裝的乙個重要特性: 資料隱藏. 物件只對外提供與其它物件互動的必要介面,而將自身的某些屬性和實現細節對外隱藏,

通過這種方式,物件對內部資料提供了不同級別的保護,以防止程式中無關的部分意外的改變或錯誤的使用了物件的私有部分。

這樣就在確保正常互動的前提下,保證了安全性.

2.繼承

物件導向的乙個重要特性是復用性.繼承是實現復用性的乙個重要手段.

可以在不重複編寫以實現的功能的前提下,對功能進行復用和拓展.

繼承概念的實現方式有二類:實現繼承與介面繼承。

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

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

3.多型

當存在繼承關係時,允許將父類物件看成為和它的乙個或多個子類物件等同.

這樣,可以根據當前賦給父類物件的子物件的具體特性以不同的方式進行執行.

多型的幾個前提

* a:要有繼承關係。

* b:要有方法重寫。

* c:要有父類引用指向子類物件。

多型的好處

* a:提高了**的維護性(繼承保證)

* b:提高了**的擴充套件性(由多型保證)

多型的限制

* 不能使用子類的特有屬性和行為。

五大基本原則 

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

是指乙個類的功能要單一,不能包羅永珍。

開放封閉原則ocp(open-close principle) 

乙個模組在擴充套件性方面應該是開放的,而在更改性方面應該是封閉的。

比如:乙個網路模組,原來只服務端功能,而現在要加入客戶端功能,那麼應當在不用修改服務端功能**的前提下,就能夠增加客戶端功能的實現**

這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。

替換原則(the liskov substitution principle lsp) 

子類應當可以替換父類並出現在父類能夠出現的任何地方。

比如:公司搞年度晚會,所有員工可以參加**,那麼不管是老員工還是新員工,也不管是總部員工還是外派員工,都應當可以參加**,否則這公司就不和諧了。

依賴原則(the dependency inversion principle dip)

具體依賴抽象,上層依賴下層。

假設b是較a低的模組,但b需要使用到a的功能,這個時候,b不應當直接使用a中的具體類: 而應當由b定義一抽象介面,並由a來實現這個抽象介面,b只使用這個抽象介面:  這樣就達到了依賴倒置的目的,b也解除了對a的依賴,反過來是a依賴於b定義的抽象介面。

通過上層模組難以避免依賴下層模組,假如b也直接依賴a的實現,那麼就可能造成迴圈依賴。  

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

模組間要通過抽象介面隔離開,而不是通過具體的類強耦合起來

物件導向的3個基本特徵

1.封裝 封裝最好理解了。封裝是物件導向的特徵之一,是物件和類概念的主要特性。隱藏具體的內部實現細節,僅向外部提供簡單的介面 優點 2.繼承 繼承就是在父類的基礎上,作出擴充套件,定義乙個子類,而子類跟父類的關係就是is a的關係。繼承實現了 is a 關係,例如 cat 和 animal 就是一種...

物件導向的三個基本特徵 物件導向基本特徵

物件導向的三個基本特徵 封裝是物件和類概念的主要特徵,就是把客觀的封裝起來,只對外暴露出來,並把自己的資料和方法只讓可信的類或物件操作作用 隱藏實現細節,使得 模組化 使用現有類的所有功能,並且無需重新編寫原來的類中的方法對這些功能的擴充套件,oc只能實現單繼承,如果想要實現多繼承的話可以通過分類或...

物件導向基本特徵

通過學習設計模式對物件導向程式設計有了更深層次的了解。在 大話設計模式 一書中的第乙個設計模式裡 簡單工廠模式 體會到了自己學習物件導向程式設計時的歷程。首先要保證 無錯,我想這是大部分初學者的心願。其次就是 規範,這一點是很重要的,程式不僅僅是寫給自己看的,更需要讓別人能看懂。別人能看懂還不行,畢...