OOP思想應該怎樣來理解?


https://blog.csdn.net/qq157962718/article/details/50990154

https://www.cnblogs.com/xiaosongluffy/p/5072501.html

https://blog.csdn.net/sinat_37212928/article/details/72874598

它強調對象的“抽象”、“封裝”、“繼承”、“多態”。

  OOP思想淺談 收藏 
07年11月27號在校內舉辦了第一次技術講座,主題是Java now and future.和以往的同主題的講座不同,我在講座里面着重講了一下我對OOP思想的理解並對比了Java和C++的區別,這也是很多編程愛好者所津津樂道的話題,至於大家喜歡哪種編程語言我個人覺得主要決定於自己的性格,當初喜歡Java也是因為其跨平台的特點,和外向興趣廣泛的我一樣,能讓生活充滿更多的樂趣和顏色。

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

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

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

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

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

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

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM