回覆列表
-
1 # 使用者6484034300502
-
2 # 使用者1844319796352
1、面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候一個一個依次呼叫就可以了。
2、面向物件是把構成問題事務分解成各個物件,建立物件的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
面向過程,自己造電腦。面向物件,自己組裝電腦.
1.程式設計模型 所有計算機均由兩種元素組成:程式碼和資料.精確的說,有些程式是圍繞著"什麼正在發生"而編寫,有些則是圍繞"誰正在受影響"而編寫的. 第一種程式設計方式叫做"面向過程的模型",按這種模型編寫的程式以一系列的線性步驟(程式碼)為特徵,可被理解為作用於資料的程式碼.如 C 等過程化語言. 第二種程式設計方式叫做"面向物件的模型",按這種模型編寫的程式圍繞著程式的資料(物件)和針對該物件而嚴格定義的介面來組織程式,它的特點是資料控制程式碼的訪問.透過把控制權轉移到資料上,面向物件的模型在組織方式上有:抽象,封裝,繼承和多型的好處. 2.抽象 面向物件程式設計的基本要素是抽象,程式設計師透過抽象來管理複雜性. 管理抽象的有效方法是使用層次式的分類特性,這種方法允許使用者根據物理含義分解一個複雜的系統,把它劃分成更容易管理的塊.例如,一個計算機系統是一個獨立的物件.而在計算機系統內部由幾個子系統組成:顯示器,鍵盤,硬碟驅動器,DVD-ROM,軟盤,音響等,這些子系統每個又由專門的部件組成.關鍵是需要使用層次抽象來管理計算機系統(或其他任何複雜系統)的複雜性. 面向物件程式設計的本質:這些抽象的物件可以被看作具體的實體,這些實體對用來告訴我們作什麼的訊息進行響應. /* (我的理解) *計算機是一個實體,我要輸入字元,顯示器顯示出來,那麼 *計算機(物件).輸入(鍵盤屬性).顯示(顯示方法) *使用分層來引用,操作.而不用管計算機內部如何處理. *只要有計算機物件,它就能響應我的操作,而我敲鍵盤, *計算機物件就把這個訊息傳給螢幕,螢幕顯示. */ 計算機物件包含了它所有的屬性,以及操作,這就是面向物件程式設計的三大原則之一:封裝. 3.封裝 封裝是一種把程式碼和程式碼所操作的資料捆綁在一起,使這兩者不受外界干擾和誤用的機制.封裝可被理解為一種用做保護的包裝器,以防止程式碼和資料被包裝器外部所定義的其他程式碼任意訪問.對包裝器內部程式碼與資料的訪問透過一個明確定義的介面來控制.封裝程式碼的好處是每個人都知道怎樣訪問程式碼,進而無需考慮實現細節就能直接使用它,同時不用擔心不可預料的副作用. 在JAVA中,最基本的封裝單元是類,一個類定義著將由一組物件所共享的行為(資料和程式碼).一個類的每個物件均包含它所定義的結構與行為,這些物件就好象是一個模子鑄造出來的.所以物件也叫做類的例項. 在定義一個類時,需要指定構成該類的程式碼與資料.特別是,類所定義的物件叫做成員變數或例項變數.操作資料的程式碼叫做成員方法.方法定義怎樣使用成員變數,這意味著類的行為和介面要由操作例項資料的方法來定義. 由於類的用途是封裝複雜性,所以類的內部有隱藏實現複雜性的機制.所以JAVA中提供了私有和公有的訪問模式,類的公有介面代表外部的使用者應該知道或可以知道的每件東西.私有的方法資料只能透過該類的成員程式碼來訪問.這就可以確保不會發生不希望的事情. 4.繼承 繼承是指一個物件從另一個物件中獲得屬性的過程.是面向物件程式設計的三大原則之二,它支援按層次分類的概念.例如,波斯貓是貓的一種,貓又是哺乳動物的一種,哺乳動物又是動物的一種.如果不使用層次的概念,每個物件需要明確定義各自的全部特徵.透過層次分類方式,一個物件只需要在它的類中定義是它成為唯一的 各個屬性,然後從父類中繼承它的通用屬性.因此,正是由於繼承機制,才使得一個物件可以成為一個通用類的一個特定例項.一個深度繼承的子類將繼承它在類層次中的每個祖先的所有屬性. 繼承與封裝可以互相作用.如果一個給定的類封裝了某些屬性,它的任何子類將會含有同樣得屬性,另加各個子類所有得屬性.這是面向物件程式在複雜性上呈線性而非幾何增長的一個重要概念.新的子類繼承其所有祖先的所有屬性.子類和系統中的其他程式碼不會產生無法預料的互動作用. 5.多型 多型是指一個方法只能有一個名稱,但可以有許多形態,也就是程式中可以定義多個同名的方法,用"一個介面,多個方法"來描述.可以透過方法的引數和型別引用. 6.封裝,繼承,多型的組合使用 在由封裝,繼承,多型所組成的環境中,程式設計師可以編寫出比面向過程模型更健壯,更具擴充套件性的程式.經過仔細設計的類層次結構是重用程式碼的基礎.封裝能讓程式設計師不必修改公有介面的程式碼即可實現程式的移植.多型能使程式設計師開發出簡潔,易懂,易修改的程式碼.例如:汽車 從繼承的角度看,駕駛員都依靠繼承性來駕駛不同型別(子類)的汽車,無論這輛車是轎車還是卡車,是賓士牌還是菲亞特牌,駕駛員都能找到方向盤,手剎,換檔器.經過一段時間駕駛後,都能知道手動檔與自動檔之間的差別,因為他們實際上都知道這兩者的共同超類:傳動裝置. 從封裝的角度看,駕駛員總是看到封裝好的特性.剎車隱藏了許多複雜性,其外觀如此簡單,用腳就能操作它.發動機,手剎,輪胎大小的實現對與剎車類的定義沒有影響. 從多型的角度看,剎車系統有正鎖反鎖之分,駕駛員只用腳踩剎車停車,同樣的介面可以用來控制若干種不同的實現(正鎖或反鎖). 這樣各個獨立的構件才被轉換為汽車這個物件的.同樣,透過使用面向物件的設計原則,程式設計師可以把一個複雜程式的各個構件組合在一起,形成一個一致,健壯,可維護的程式