1. 程式人生 > >關於面試中談談你對面向物件思想的認知的小結

關於面試中談談你對面向物件思想的認知的小結

        關於面向物件思想,想必在面試中被問到是家常便飯的事,今天結合自己的體會(雖然工作一年沒怎麼寫過C++),和藉助於網際網路資訊,對較好的觀點進行了彙總(大神可以繞道了,哈哈。)。當然在提到面向物件思想的同時,我們還不得不提到面向過程的思想。

        1.比較精闢的回答。面向過程,自己造電腦。面向物件,自己組裝電腦。

      2.自己理解的回答。面向過程是一件事“該怎麼做“,面向物件是一件事“該讓誰來做”,然後那個“誰”就是物件,他要怎麼做是他自己的事,反正最後一群物件合力能把事做好就行了。

     3.較好觀點。

       面向物件是基於萬物皆物件這個哲學觀點. 把一個物件抽象成類,具體上就是把一個物件的靜態特徵和動態特徵抽象成屬性和方法,也就是把一類事物的演算法和資料結構封裝在一個類之中,程式就是多個物件和互相之間的通訊組成的.

       面向物件具有封裝性,繼承性,多型性.封裝隱蔽了物件內部不需要暴露的細節,使得內部細節的變動跟外界脫離,只依靠介面進行通訊.封裝性降低了程式設計的複雜性. 通過繼承,使得新建一個類變得容易,一個類從派生類那裡獲得其非私有的方法和公用屬性的繁瑣工作交給了編譯器. 而 繼承和實現介面和執行時的型別繫結機制 所產生的多型,使得不同的類所產生的物件能夠對相同的訊息作出不同的反應,極大地提高了程式碼的通用性. 

       總之,面向物件的特性提高了大型程式的重用性和可維護性.

      4.在孫鑫的《VC++深入詳解》中提到類和物件的概念是這樣描述的。

       C++語言是面向物件的語言,那麼,什麼是類?什麼是物件呢?

    類描述了一類事物,以及事物所應具有的屬性,例如:我們可以定義“電腦”這個類,那麼作為“電腦”這個類,它應該具有顯示器、主機板、CPU、記憶體、硬碟,等等。那麼什麼是“電腦”的物件呢?例如,我們組裝的一臺具體的電腦,它的顯示器是美格的,主機板是華碩的,CPU是Intel的,記憶體是現代的,硬碟用的是希捷的,也就是“電腦”這個類所定義的屬性,在我們購買的這臺具體的電腦中,有了具體的值。

    這臺具體的電腦就是我們“電腦”這個類的一個物件。我們還經常聽到“類的例項”,什麼是“類的例項”呢?實際上,類的例項和類的物件是一個概念。

    物件是可以銷燬的。例如,我們購買的這臺電腦,它是可以被損毀的。而類是不能被損毀的,我們不能說把電腦毀掉,

“電腦”類是一個抽象的概念。

        5.完善的筆試題總結(***黑馬程式設計師)。

      面向物件相對於面向過程來說,它從現實世界中客觀存在的事物(即物件)出發來構造軟體系統,並根據這些事物的本質特點,把它們抽象地表示為系統中的基本構成單位,更能接近現實事物本來的特性和麵貌。
     面向物件優點:
     1.一切皆物件,相對於面向過程程式設計而言提高了程式碼的可重用性;
     2.面向物件的三個重要特徵:封裝、繼承、多型,提高了系統的靈活性與健壯性;
     3.面向物件的中的屬性和方法的可訪問性提高了程式的安全性,資料調取的多樣性.

總結。以上基本上是我也比較認可的觀點的彙總。至於自己到底能夠理解有多深入,還需在不斷的實踐中自己去領悟。繼續努力吧!