天天看點

面向對象概念、特征、原則歸納

摘要:自從計算機學科引入面向對象以來,面向對象的概念已經在計算機軟體領域中經曆翻天覆地地變化。從60年代中後期的Simula到現在流行的java、C#等面向對象的程式設計語言,面向對象的理念早已深入到大多數開發者的心裡。然而,作為一名面向對象的開發人員來說,熟練掌握和了解好面向對象相關概念、特征及相應的設計原則也是非常重要的事情。本文主要歸納了面向對象的相關概念、特征及原則,希望給大家帶來一定的收獲。

一、面向對象的相關概念

1、面向對象概念的組成
a、類:一個類即為使用者根據自己需要定義的一種類型,類型實際包含了一組屬性與對這些屬性操作的一些操作。
b、對象:對象為實際業務過程定義的一個具體實體,它屬于一種類型。
c、消息:在運作時期,對象之間為了實作互相的通信而傳遞的一些資訊(可能是一些數值、對象引用)。
2、軟體開發中涉及英文概念
a、OO(Object-Oriented)面向對象:基于對象概念,以對象為中心,以類和繼承為構造機制,來認識、了解、刻畫客觀世界。
b、OOA(Object-Oriented Analysis) 面向對象分析:無論是整個軟體系統、還是相對較小的一個軟體子產品在分析階段應采用面向對象的方式去分析。
c、OOD(Object-Oriented Design)面向對象設計:主要作用是對OOA分析的結果作進一步的規範化整理,以便能夠被開發人員接受。
d、OOP(Object-Oriented Programming)面向對象程式設計:把面向對象的思想應用于軟體系統的編寫。

二、面向對象的特征

1、抽象(abstract):對現實生活中的抽象。
2、封裝(encapsulation):控制對象的邊界以及充值對象對外的接口。封裝使我們對邊界内部代碼的修改不會影響到邊界外代碼的實作。
3、繼承(inheritance):”is a“關系。從一般到特殊,表現一種分類關系。
4、多态(polymorphism):一種行為在不通的條件下會表現出不同的行為方式。編譯時多态,即方法的重載,屏蔽方法的差異。運作時多态,也叫引用多态,屏蔽子類的差異。

三、面向對象的原則

1、封裝變化:找出應用中的不變之處,把他們獨立出來,不要和那些不變的代碼混合在一起。
2、SRP(Single Responsibility Principle)單一職責原則:就一個類而言,應該僅有一個引起它變化的原因。
3、OCP(Open-Closed Principle)開-閉原則:一個軟體實體應該對拓展開放,對修改關閉。
4、LSP(Liskov Substation Principle)裡氏代換原則:一個軟體實體如果使用的是一個父類的話,那麼一定适用于其子類,而且它察覺不出父類對象和子類對象的差別。并且利用子類替換它的父類,程式的行為沒有變化。
5、DIP(Dependency Inversion Principle)依賴倒轉原則:抽象不應該依賴細節,細節應該依賴于抽象。
6、ISP(Interface Segregation Principle)接口隔離原則:使用多個專門的接口,比使用單一的接口好。
7、CARP(Composition/Aggregationn Principle)組合/聚合原則:應該盡量使用組合和聚合來實作複用而不是繼承。
8、LOD(Law of Demeter)迪米特原則:又稱為最少知識原則,一個對象應當對其他對象有盡可能少的了解。

四、總結

以上隻是個人在學習使用過程中的一個總結,其中參考了《Java 程式設計思想》、《大話設計模式》及網絡上一些朋友的思想。這裡主要以歸納為主,如果對其中有問題的話,大家一起交流。