“面向過(guò)程”(Procedure Oriented)是一種以過(guò)程為中心的編程思想。就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。
面向過(guò)程其實(shí)是最為實(shí)際的一種思考方式,就算是面向?qū)ο蟮姆椒ㄒ彩呛忻嫦蜻^(guò)程的思想??梢哉f(shuō)面向過(guò)程是一種基礎(chǔ)的方法。它考慮的是實(shí)際地實(shí)現(xiàn)。一般的面向過(guò)程是從上往下步步求精,所以面向過(guò)程最重要的是模塊化的思想方法。
面向?qū)ο蟮母拍?/div>
簡(jiǎn)單地說(shuō) 面向?qū)ο缶幊蹋∣bject Oriented Programming)簡(jiǎn)稱OOP 就是使我們分析、設(shè)計(jì)和實(shí)現(xiàn)一個(gè)系統(tǒng)的方法盡可能地接近我們認(rèn)識(shí)一個(gè)系統(tǒng)的方法。面向?qū)ο蟮膬?yōu)點(diǎn)主要體現(xiàn)在代碼的可重用性、可擴(kuò)展性和可管理性上。OOP的四個(gè)基本機(jī)制 :抽象、封裝、繼承與派生、多態(tài)性
面向?qū)ο蠹夹g(shù)主要圍繞以下幾個(gè)概念:
對(duì)象、抽象數(shù)據(jù)類型、類、類型層次(子類)、繼承性、多態(tài)性。
面向?qū)ο骎S面向過(guò)程
面向過(guò)程:
過(guò)程化設(shè)計(jì)先確定算法,再確定數(shù)據(jù)結(jié)構(gòu);面向過(guò)程的程序員習(xí)慣于建立數(shù)據(jù)結(jié)構(gòu)存放數(shù)據(jù)并定義方法(函數(shù))來(lái)操作數(shù)據(jù);
面向?qū)ο螅?/strong>
面向?qū)ο缶幊滔却_定數(shù)據(jù)結(jié)構(gòu),再確定算法;而面向?qū)ο蟪绦騿T則構(gòu)造對(duì)象模型,將數(shù)據(jù)與方法組織在一起。
可以拿生活中的實(shí)例來(lái)理解面向過(guò)程與面向?qū)ο?,例如五子棋,面向過(guò)程的設(shè)計(jì)思路就是首先分析問題的步驟:1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結(jié)果。把上面每個(gè)步驟用不同的方法來(lái)實(shí)現(xiàn)。
如果是面向?qū)ο蟮脑O(shè)計(jì)思想來(lái)解決問題。面向?qū)ο蟮脑O(shè)計(jì)則是從另外的思路來(lái)解決問題。整個(gè)五子棋可以分為1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統(tǒng),負(fù)責(zé)繪制畫面,3、規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等。第一類對(duì)象(玩家對(duì)象)負(fù)責(zé)接受用戶輸入,并告知第二類對(duì)象(棋盤對(duì)象)棋子布局的變化,棋盤對(duì)象接收到了棋子的變化就要負(fù)責(zé)在屏幕上面顯示出這種變化,同時(shí)利用第三類對(duì)象(規(guī)則系統(tǒng))來(lái)對(duì)棋局進(jìn)行判定。
可以明顯地看出,面向?qū)ο笫且怨δ軄?lái)劃分問題,而不是步驟。同樣是繪制棋局,這樣的行為在面向過(guò)程的設(shè)計(jì)中分散在了多個(gè)步驟中,很可能出現(xiàn)不同的繪制版本,因?yàn)橥ǔTO(shè)計(jì)人員會(huì)考慮到實(shí)際情況進(jìn)行各種各樣的簡(jiǎn)化。而面向?qū)ο蟮脑O(shè)計(jì)中,繪圖只可能在棋盤對(duì)象中出現(xiàn),從而保證了繪圖的統(tǒng)一。