它強調對象的“抽象”、“封裝”、“繼承”、“多態”。
OOP思想淺談 收藏
07年11月27號在校內舉辦了第一次技術講座,主題是Java now and future.和以往的同主題的講座不同,我在講座裡面著重講了一下我對OOP思想的理解並對比了Java和C++的區別,這也是很多編程愛好者所津津樂道的話題,至於大家喜歡哪種程式設計語言我個人覺得主要決定於自己的性格,當初喜歡Java也是因為其跨平台的特點,和外向興趣廣泛的我一樣,能讓生活充滿更多的樂趣和顏色。
下面淺談下我對OOP思想的理解,OOP思想中很重要的有五點,類,對象,還有物件導向的三大特徵:繼承,多態和封裝。
類:對現實世界事物的抽象表示,包括事物的狀態資訊(成員變數)和行為資訊(成員方法)。我們要讓我們的電腦程式設計更有意思,也更有邏輯性,則我們的程式中對事物的描敘就必須符合真實情況,同時符合人類的思維習慣。因此,我們如果在計算中要描敘人這個事物,也是一類事物,我們就必須把該事物的所有特點包含進來,用成員變數描敘人的基本屬性,如:身高,體重,年齡,性別等。這樣就可以描敘一個“靜態”的人了,所謂靜態意思也就是該人並不參與任何社會活動,沒有任何行為。但是這樣並不符合現實意義,那樣我們必須為人添上行為,讓他參加社會活動有自己的行為。所以我們需要用成員方法來描敘人的活動,如:吃飯,洗澡,睡覺等。
對象:對抽象事物的具體表示,使其具有自身的特點。類好比一個大的集合,裡面的元素都有共同的特點,但是比較每個元素又可以發現每個有其自身的特點,對象就是這樣,它是一個類的具體化,也是執行個體化,類是泛指,而對象是特指。雖然人都有身高,體重,年齡,同時有行為有吃飯,洗澡,睡覺等,但是當具體到某個人的時候就會有不同,例如:老人和小孩的年齡就有不同,所以,從類到對象是我們把現實事物進行電腦描敘的過程,同時也是一個從抽象到具體的過程,這很符合我們的真實思維邏輯。
下面淺談一下物件導向的三大特徵的基本思想。
多態:用一種解決方案來解決對一類問題,對於不同的事物解決途徑和結果不同。在C++中實現多態性有三種方法,分別是:虛函數,函數重載和運算子多載。這三種方法大家都可以看到我們解決問題的初衷是一樣的,都是利用同名函數,同名的運算子號,這抽象出來也就是解決問題的方法,但是對於不同的事物的反應卻是不同的,例如:當用一個getPadNumber()方法來得到普通單車和雙人單車的坐墊數量的時候,返回的結果是一個和兩個,這就是具體的事物返回的結果不同。
繼承:讓抽象出來的事物具有本應該具有的聯絡。我們能用類來描敘一個抽象的事物,同時能用對象來描敘具體的事物,但是這些事物都是獨立的,彼此之間沒有應該有的聯絡,這樣的孤立設計並不符合現實邏輯,讓事物之間的聯絡得到描敘,我們就需要繼承,例如:發明單車的人並不是一開始就發明了多人單車,這些都是從雙輪單車演變和發展而來,但是他們都有共同的特點,有輪子,有車架子,等等。讓我們用繼承的關係把這兩個現實的抽象聯絡起來,這樣我們就能設計出不孤立的類,而是和其他類有聯絡的類。
封裝:讓抽象的事物保護自身的狀態,防止非其他事物對其進行錯誤的狀態改變操作。我們抽象完一個事物後,可能在特定的條件下,其本身的狀態需要改變,但是這個改變並允許其他的事物來進行,這樣的改變只允許這個事物認同的操作域來進行,可以是該事物本身,也可以是它信任的其他事物。這樣我們就能對我們抽象完的每個事物進行自身資料的保護。