面向過程
面向過程是一種以事件為中心的編程思想,編程的時候把解決問題的步驟分析出來,然后用函數(shù)把這些步驟實(shí)現(xiàn),在一步一步的具體步驟中再按順序調(diào)用函數(shù)。

舉個例子,一個下五子棋的程序:
下五子棋{
開始游戲();
while{
黑子先走();
繪制畫面();
判斷輸贏();
輪到白子();
繪制畫面();
if 判斷輸贏(){
break
}
};
輸出最后結(jié)果;
}
可見,面向過程始終關(guān)注的是怎么一步一步地判斷棋局輸贏的,通過控制代碼,從而實(shí)現(xiàn)函數(shù)的順序執(zhí)行。
面向?qū)ο?/h2>
在工作中,簡單的問題用面向過程的思路來解決直接有效。但是當(dāng)問題規(guī)模變大時,用面向過程的思想是遠(yuǎn)遠(yuǎn)不夠的。所以就出現(xiàn)了面向?qū)ο蟮木幊趟枷搿?/p>
世界上有很多人和事物,每一個都可以看做一個對象,而每個對象都有自己的屬性和行為,對象與對象之間通過方法來交互。面向?qū)ο笫且环N以“對象”為中心的編程思想,把要解決的問題分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個對象在整個解決問題的步驟中的屬性和行為。
類是一個抽象的概念,而對象是一個具體的事物。對象是基于類這個抽象的模板而建立的實(shí)例。
在下五子棋的例子中,用面向?qū)ο蟮姆椒▉斫鉀Q的話,首先將整個五子棋游戲分為三個類:
棋子類,定義棋子,顏色,位置坐標(biāo),監(jiān)聽下棋動作。
棋盤類,定義棋盤樣式,棋譜,位置狀態(tài)(是否有棋子),增加棋子動作,
規(guī)則類,定義規(guī)則、判斷是否犯規(guī)、輸贏等。
然后基于上述類創(chuàng)建對象,并賦予每個對象一些屬性和行為:
第一類的對象為黑棋和白棋,負(fù)責(zé)接受用戶輸入,并告知第二類對象(棋盤系統(tǒng))棋子布局的變化,棋盤系統(tǒng)對象接收到了棋子的變化,并負(fù)責(zé)在屏幕上面顯示出這種變化,同時利用第三類對象(規(guī)則系統(tǒng))來對棋局進(jìn)行判定。
可以看出,面向?qū)ο笫且怨δ軄韯澐謫栴},而不是以步驟解決。比如繪制畫面這個行為,在面向過程中是分散在了多個步驟中的,可能會出現(xiàn)不同的繪制版本。
比如要加入悔棋的功能,如果要改動面向過程的設(shè)計,那么從輸入到判斷到顯示這一連串的步驟和順序都要改動。如果是面向?qū)ο蟮脑?,只用改動棋盤對象就行了,棋盤系統(tǒng)保存了黑白雙方的棋譜,回溯就可以了,而顯示和規(guī)則判斷則不用 顧及,同時整個對對象功能的調(diào)用順序都沒有變化,改動只是局部的。
類,與類的特性
類是同一類事物的統(tǒng)稱。如個人證件作為一類都有id,姓名,年齡,照片的屬性,都具有驗(yàn)證本人身份的功能
1. 封裝
將對象的屬性和行為封裝起來,只通過對象訪問屬性或者方法。還可以設(shè)置訪問權(quán)限。
2. 繼承
假如想建立駕照類時,我們想到可以將個人證件類拿來復(fù)用,保留個人證件具有的屬性和方法,但是不具有駕駛信息的屬性和合法開車的功能。
3. 多態(tài)
一個類可以繼承多種接口,一個父類也可以被多種子類所繼承。父類的方法也可以被子類重寫。這些都是多態(tài)的特征,即一個父類有多種子類的形態(tài),一個方法也有多種實(shí)現(xiàn)方法。