程式導向和麵向物件的對比(轉)

weixin_30639719發表於2020-04-05

 

  在閱讀張孝祥《Java就業培訓》的一書中,關於程式導向和麵向物件的描述,摘錄如下:

一:什麼是程式導向

  在早期出現的程式語言中,如大家非常熟悉的C語言,要用這種語言來定義一個複雜的資料型別,譬如Windows視窗時,可以用結構體(struct)來實現,只要在結構體中使用那些基本的資料型別來定義視窗的大小、位置、顏色、背景等屬性就可以了。如果要對一個Windows視窗進行各種操作,如隱藏視窗、移動視窗、最小化視窗等,就要為每個操作都定義一個函式,這些函式與視窗本身的定義沒有任何關係,如HideWindows、MoveWindows、MinimizeWindow,這些函式都需要接收一個引數,即要操作的視窗。這是一種謂語和賓語的關係,“隱藏”、“移動”等是謂語,“視窗”是賓語。程式的重心集中在函式(賓語)上。

 

二:什麼是物件導向

  在C++和Java語言中,我們可以將一個視窗當做一個主題(物件)來看待,定義視窗時,除了要指定在程式導向中規定的那些屬性,如大小、位置、顏色、、背景等外,還要指定可能具有的動作,如隱藏、移動、最小化等。在定義視窗時,就要定義好對應這些動作的函式(也叫方法),如Hide、Move、Minmize,注意體會這些函式名稱與上面的名稱的區別,這是作者刻意這麼安排的,讓讀者更好地去對比,從函式名稱上就能看出,這些函式都不再接受代表視窗的引數。這些函式被呼叫時,都是以某個視窗要隱藏、某個視窗要移動、某個視窗要最小化的語法格式來使用的。這是一種主語和謂語的關係,程式的重點集中在主體/物件(主語)上。雖然讀者在下面的講解中會發現物件導向的知識遠不止這一點(剛才講的只是物件導向的一個方面,即封裝性,用類封裝性了資料和函式),真正能體現物件導向的強大優勢的地方,是在物件導向的繼承與多型性方面,但作者認為,封裝性是物件導向的根源和最根本的屬性。

  Java類同其他物件導向的程式語言一樣,也支援物件導向(OOP)的三個特徵:

  1:封裝

  2:繼承

  3:多型

轉載於:https://www.cnblogs.com/reedom1991/p/6956898.html

相關文章