面向過程程式設計和物件導向程式設計
一、面向過程程式設計
面向過程程式設計將程式分成了"資料"和"處理函式"兩部分,程式以"處理函式"為核心,如果要執行什麼操作,就將"資料"傳給相應的"處理函式",返回我們需要的結果.
面向過程的思路很好掌握,上手容易,但它存在三方面的問題:
1、資料和處理函式沒有直接的關聯,在執行操作的時候,我們不但要選擇相應的處理函式,還要自己準備處理函式的資料,也就是說,在執行操作時,我們需要同時關注處理函式和資料.
2、資料和處理函式都城暴露在同一作用域內,沒有私有和公有的概念,整個程式中所有的資料和處理函式都可以互相訪問,在開發初期也許會開發速度很快,但到了開發後期和維護階段,由於整個程式耦合得非常緊,任何乙個處理函式和資料都有可能關聯到其他地方,容易牽一髮而全身動,從而加大了修改難度.
3、面向過程的思維方式是典型的計算機思維方式--輸入資料給處理器,處理器內部執行運算,處理器返回結果.而實際生活中,我們的思路卻不是這樣--實際生活中所有的東西都是有狀態有動作的物件,能用面向過程思維描述的只是物件的動作.用面向過程的思維方式程式設計,是無法描繪客觀世界的事物的,我們程式設計的時候無法直接使用生活中的思維方式.
二、物件導向程式設計
物件導向程式設計是拋開計算機思維,使用生活中的思維時行程式設計的程式設計方式.面向過程的思維就是描述乙個個"動作",而物件導向的思維就是描述乙個個"物件",客觀生活中的物件,都可以通過物件導向思維對映到程式中--如果你使用的程式語言支援物件導向,在程式中我們管"物件"叫做"物件",物件由兩部分組成:"屬性"和"行為",對應客觀世界中的物件的"狀態"和"動作".
程式由變數和函式組成,屬性本質其實是個變數,也就是面向過程中的資料,而行為的本質其實是函式,也就是面向過程中和處理函式.不同的是,面向過程中,資料和處理函式並沒有關聯起來,共同屬於某個物件.物件導向將資料和處理函式定義到了乙個物件的內部,作為這個物件的屬性和行為存在.在物件外部,屬性和行為可以用物件的屬性和物件的行為來呼叫,從而讓程式有了按真實世界的思維方式進行描述的能力.在物件內部,物件的屬性和行為通過this關鍵字關聯起來.
[color=darkred][b]面向過程程式設計[/b][/color]所有的資料和處理函式都是公有的,整個程式設計的思維過程就是定義資料,定義處理函式,然後將資料傳給處理函式進行處理,處理函式之間也可以互相呼叫,資料和處理函式緊密耦合.
[color=darkred][b]物件導向程式設計[/b][/color]的思維過程是定義乙個個物件,物件有自己的屬性和行為,因為屬性和行為都是從屬於物件的,於是有了"物件內"和"物件外"的概念,整個程式可以由一堆物件組成,物件與物件之間可能會有通訊,為了實現這種通訊,物件會將自己的部分屬性和行為設計成公有,暴露出來成為通訊的介面.物件和物件之間的通訊都城是建立在介面的基礎上的.當然我們可以將物件所有的屬性和行為都設為公有的,全部都作為介面,但介面越多,會讓物件之間耦合越緊密,增加維護難度,所以一般情況下,我們都會盡量將物件的屬性和行為設為私有,只將必要的屬性和行為設為公有.但物件的公有屬性和公有行為越少,整個程式的擴充套件性會越差,所以我們在設計公有和私有的時候需要權衡一下,在不影響擴充套件性的前提下,盡量將屬性和行為設為私有.
面向過程程式設計和物件導向程式設計
面向過程程式設計和物件導向程式設計 面向過程程式設計是一種以 過程為中心 的程式設計思想 分析出解決問題的步驟,然後用函式把這些步驟一步一步實現 面向過程程式設計,資料和對資料的操作是分離的。物件導向程式設計 物件導向程式設計是 將事物物件化,通過物件通訊來解決問題 物件導向程式設計,資料和對資料的...
《面向過程和物件導向的程式設計》
關於寫 面向過程和物件導向的程式設計 這個話題我很矛盾,我擔心許多程式設計師對此話題不太感興趣,可能他們不太懂得面向過程和物件導向程式設計的巨大差距,以及對程式設計水平的影響。在我整個程式設計生涯中,有無數的轉變和變化讓我銘記在心。從彙編到 c語言,從檔案系統到資料庫,從 c語言倒 dbase,從c...
程式設計思想 物件導向和面向過程
何謂物件導向?何謂面向過程?對於這程式設計界的兩大思想,一直貫穿在我們學習和工作當中。我們知道面向過程和物件導向,但要讓我們講出來個所以然,又感覺是不知從何說起,最後可能也只會說出一句就是那樣啦,你知道啦。而這種茫然,其實就是對這兩大程式設計思想的迷糊之處。本文通過學生到校報道註冊的例項,闡述了面向...