1. 程式人生 > >OOP-面向物件的程式設計思想

OOP-面向物件的程式設計思想

和同事這兩天一直在討論OOP思想,自己在這裡進行一些簡單的說明,純屬個人個人看法。

  ​OOP是面向物件的,這點毋庸置疑,那麼OOP到底是什麼呢?這是我們百度給我們的解釋:OOP: Object Oriented Programming,面向物件的程式設計。所謂“物件”在顯式支援面向物件的語言中,一般是指類在記憶體中裝載的例項,具有相關的成員變數和成員函式(也稱為:方法)。面向物件的程式設計完全不同於傳統的面向過程程式設計,它大大地降低了軟體開發的難度,使程式設計就像搭積木一樣簡單,是當今電腦程式設計的一股勢不可擋的潮流。

在設計面嚮物件語言的時候總結就一句話:OOP允許我們根據問題來描述問題,而不是根據方案。


在百度給我們的解釋中有“物件”這一個詞,我來解釋一下我的看法:每個物件都類似於一臺小計算機,他們都有自己的狀態,而且可要求他們進行特定的操作。

在面嚮物件語言中,Java是最具代表性的,Java語言的由來是根據Smalltalk這門語言的面向物件的原則而開發出來的,由此我們可以知道最純粹的面向物件的程式設計方法是什麼了:

(1)、所有的東西都是物件,可將物件想象成一種新型的變數,他儲存著資料,但可要求他自己對自己進行操作,在理論上講,可從要解決的問題身上提出所有概念性的元件,然後在程式中表達為一個物件。

(2)、程式是一大堆的物件的組合;通過訊息傳遞 ,各物件知道自己該做什麼,​​為了向物件發出請求,需向那個物件“傳送一條請求”,更加具體的形容,訊息就是呼叫的請求,它呼叫的是從屬於目標物件的一個子例程或函式。

(3)、每個物件都有自己的儲存空間,​並且可容納其他物件或者說通過封裝現有的物件,可製作出新的物件,所以,儘管物件的概念非常簡單,但在程式中卻可達到任意高的複雜程度。

(4)、​每個物件都有一種型別,根據語法每個物件都是某個“類”的一個“例項”,一個類最重要的特徵就是“能將什麼樣的資訊發給他”。

(5)、同一類所有的物件都能就收相同的訊息。

通過以上這幾點,其實就已經體現了,面向物件的三大特性:封裝、繼承、多型。​

元件 - 資料和功能一起在執行著的計算機程式中形成的單元,元件在 OOP 計算機程式中是模組和結構化的基礎。

封裝 : 也叫做資訊封裝:確保元件不會以不可預期的方式改變其它元件的內部狀態;只有在那些提供了內部狀態改變方法的元件中,才可以訪問其內部狀態。每類元件都提供了一個與其它元件聯絡的介面,並規定了其它元件進行呼叫的方法。

​繼承:允許在現存的元件基礎上建立子類元件,這統一併增強了多型性和封裝性。典型地來說就是用類來對元件進行分組,而且還可以定義新類為現存的類的擴充套件,這樣就可以將類組織成樹形或網狀結構,這體現了動作的通用性。

多型:元件的引用和類集會涉及到其它許多不同型別的元件,而且引用元件所產生的結果依據實際呼叫的型別。

通過上面的五大面向物件語言的設計原則,這面嚮物件語言的三大特性相結合,我們基本就可以瞭解到OOP的核心思想了:

總結:將資料及對資料的操作行為放在一起,作為一個相互依存、不可分割的整體——物件。對於相同型別的物件進行分類、抽象後,得出共同的特徵而形成了類。面向物件程式設計就是定義這些類。類是描述相同型別的物件集合。類定義好之後將作為資料型別用於建立類的物件。程式的執行表現為一組物件之間的互動通訊。​