怎樣理解OOP?OOP又是什麼?

    下面淺談下我對OOP思想的理解,OOP思想中很重要的有五點,類,對象,還有面向對象的三大特徵:繼承,多態和封裝。

    類:對現實世界事物的抽象表示,包括事物的狀態信息(成員變量)和行爲信息(成員方法)。我們要讓我們的計算機程序設計更有意思,也更有邏輯性,則我們的程序中對事物的描敘就必須符合真實情況,同時符合人類的思維習慣。因此,我們如果在計算中要描敘人這個事物,也是一類事物,我們就必須把該事物的所有特點包含進來,用成員變量描敘人的基本屬性,如:身高,體重,年齡,性別等。這樣就可以描敘一個“靜態”的人了,所謂靜態的意思也就是該人並不參與任何社會活動,沒有任何行爲。但是這樣並不符合現實意義,那樣我們必須爲人添上行爲,讓他參加社會活動有自己的行爲。所以我們需要用成員方法來描敘人的活動,如:吃飯,洗澡,睡覺等。

    對象:對抽象事物的具體表示,使其具有自身的特點。類好比一個大的集合,裏面的元素都有共同的特點,但是比較每個元素又可以發現每個有其自身的特點,對象就是這樣,它是一個類的具體化,也是實例化,類是泛指,而對象是特指。雖然人都有身高,體重,年齡,同時有行爲有吃飯,洗澡,睡覺等,但是當具體到某個人的時候就會有不同,例如:老人和小孩的年齡就有不同,所以,從類到對象是我們把現實事物進行計算機描敘的過程,同時也是一個從抽象到具體的過程,這很符合我們的真實思維邏輯。

    下面淺談一下面向對象的三大特徵的基本思想。

    多態:用一種解決方案來解決對一類問題,對於不同的事物解決途徑和結果不同。在C++中實現多態性有三種方法,分別是:虛函數,函數重載和運算符重載。這三種方法大家都可以看到我們解決問題的初衷是一樣的,都是利用同名函數,同名的運算符號,這抽象出來也就是解決問題的方法,但是對於不同的事物的反應卻是不同的,例如:當用一個getPadNumber()方法來得到普通自行車和雙人自行車的坐墊數量的時候,返回的結果是一個和兩個,這就是具體的事物返回的結果不同。

    繼承:讓抽象出來的事物具有本應該具有的聯繫。我們能用類來描敘一個抽象的事物,同時能用對象來描敘具體的事物,但是這些事物都是獨立的,彼此之間沒有應該有的聯繫,這樣的孤立設計並不符合現實邏輯,讓事物之間的聯繫得到描敘,我們就需要繼承,例如:發明自行車的人並不是一開始就發明了多人自行車,這些都是從雙輪自行車演變和發展而來,但是他們都有共同的特點,有輪子,有車架子,等等。讓我們用繼承的關係把這兩個現實的抽象聯繫起來,這樣我們就能設計出不孤立的類,而是和其他類有聯繫的類。

    封裝:讓抽象的事物保護自身的狀態,防止非其他事物對其進行錯誤的狀態改變操作。我們抽象完一個事物後,可能在特定的條件下,其本身的狀態需要改變,但是這個改變並允許其他的事物來進行,這樣的改變只允許這個事物認同的操作域來進行,可以是該事物本身,也可以是它信任的其他事物。這樣我們就能對我們抽象完的每個事物進行自身數據的保護。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章