定義
- 面向過程:一種以事件為中心的編程思想
- 面向?qū)ο螅阂环N以“對象”為中心的編程思想
面向過程
??編程的時候把解決問題的步驟分析出來淌山,然后用函數(shù)把這些步驟實(shí)現(xiàn),在一步一步的具體步驟中再按順序調(diào)用函數(shù)笆豁。
- 舉例:下五子棋
面向過程的解法:
第一步:開始游戲 第二步:黑子先走
第三步:繪制畫面 第四步:判斷輸贏
第五步:輪到白子 第六步:繪制畫面
第七步:判斷輸贏 第八步:返回步驟(2) 第九步:輸出最后結(jié)果
- 舉例:下五子棋
下五子棋{
開始游戲()票髓;
黑子先走()珍策;
繪制畫面()毅人;
判斷輸贏()吭狡;
輪到白子();
繪制畫面()丈莺;
判斷輸贏()划煮;
返回到 黑子先走();
輸出最后結(jié)果缔俄;
}
核心點(diǎn):分而治之般此、關(guān)注過程
面向?qū)ο?/h1>
??把要解決的問題分解成各個對象,建立對象的目的不是為了完成一個步驟牵现,而是為了描敘某個對象在整個解決問題的步驟中的屬性和行為
- 舉例:下五子棋
面向?qū)ο蟮慕夥ǎ?/strong>
第一步:
將整個五子棋游戲分為三個對象:
(1)黑白雙方,這兩方的行為是一樣的
(2)棋盤系統(tǒng)邀桑,負(fù)責(zé)繪制畫面
(3)規(guī)則系統(tǒng)瞎疼,負(fù)責(zé)判定犯規(guī)、輸贏等
第二步:
賦予每個對象一些屬性和行為:
??第一類對象(黑白雙方)負(fù)責(zé)接受用戶輸入壁畸,并告知第二類對象(棋盤系統(tǒng))棋子布局的變化贼急,棋盤系統(tǒng)接收到了棋子的變化,并負(fù)責(zé)在屏幕上面顯示出這種變化捏萍,同時利用第三類對象(規(guī)則系統(tǒng))來對棋局進(jìn)行判定
核心點(diǎn):建模對象太抓、行為通訊
- 舉例:下五子棋
優(yōu)缺點(diǎn)比較
面向過程【面向簡單問題】
優(yōu)點(diǎn):
- 流程化使得編程任務(wù)明確,在開發(fā)之前基本考慮了實(shí)現(xiàn)方式和最終結(jié)果令杈,具體步驟清楚走敌,便于節(jié)點(diǎn)分析
- 效率高,面向過程強(qiáng)調(diào)代碼的短小精悍逗噩,善于結(jié)合數(shù)據(jù)結(jié)構(gòu)來開發(fā)高效率的程序
缺點(diǎn):
- 需要深入的思考掉丽,耗費(fèi)精力,代碼重用性低异雁,擴(kuò)展能力差捶障,后期維護(hù)難度比較大
面向?qū)ο蟆久嫦驈?fù)雜問題】
優(yōu)點(diǎn):
- 結(jié)構(gòu)清晰,程序是模塊化和結(jié)構(gòu)化纲刀,更加符合人類的思維方式
- 易擴(kuò)展项炼,代碼重用率高,可繼承,可覆蓋锭部,可以設(shè)計出低耦合的系統(tǒng)
- 易維護(hù)暂论,系統(tǒng)低耦合的特點(diǎn)有利于減少程序的后期維護(hù)工作量
缺點(diǎn):
- 開銷大,當(dāng)要修改對象內(nèi)部時空免,對象的屬性不允許外部直接存取空另,所以要增加許多沒有其他意義、只負(fù)責(zé)讀或?qū)懙男袨樘Q狻_@會為編程工作增加負(fù)擔(dān)扼菠,增加運(yùn)行開銷框沟,并且使程序顯得臃腫
- 性能低飞涂,由于面向更高的邏輯抽象層硼端,使得面向?qū)ο笤趯?shí)現(xiàn)的時候嗅回,不得不做出性能上面的犧牲咙轩,計算時間和空間存儲大小都開銷很大