哈哈,一個辣雞大學生,今天在家喝了點酒,莫名的想起來一個曾經困擾的不行的問題
希望我這個酒后亂言能給你帶來幫助
開始了!!!
我們先說一下面向過程,
C語言就是標准的面向過程的語言,學過C的朋友們都知道,我們要實現一個功能是在我們的主程序中進行,使用子程序和和一些變量和一些頭文件來給我們的主程序做一系列的鋪墊、引用、或者說是解釋,那么這個主程序按照順序或者我們直接可以說按照“過程”的程序來實現我們需要的功能,就叫做面向過程。
再說一下面向對象,我認為有一句話說得很好,
面向對象能有效提高編程的效率,通過封裝技術,消息機制可以像搭積木的一樣快速開發出一個全新的系統。
通過這句話我們可以很清晰地看出,面向對象更多的是在功能上,進行划分,“模塊化”就是面向對象的主要核心。
百度上的五子棋例子,我感覺很好。
那就淺淺的談一下我對那個例子的理解。
同樣是一個五子棋的代碼
面向對象大概是這樣實現的:
1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結果。
面向對象大概是這樣實現的:
1、黑白雙方行為功能,2、棋盤功能,負責繪制畫面,3、規則功能,負責判定諸如犯規、輸贏等。第一類對象負責接受用戶輸入,然后第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。
兩者對比可以看出
面向對象更好去移植,比如我有一個圍棋的程序第一步完全可以吧我們的第一步紅黑雙方行為功能拷貝過去稍稍修改既可省去大量時間,當然面向過程也可以移植但明顯沒有面向對象牛,
當然面向過程也不是不優秀,在性能要比面向對象好很多。
至於利弊要根據實際情況。
好,就是這些,那如果還是沒有看懂,建議去看一看那些大佬們的博客多多百度,本文也是我去看博客和百度總結的,寫的不好,還請多多關照,寫的不對的歡迎大家提出意見,拜謝!!!
對了對了,我們老師說可以把面向對象看成是一個策划者行為,而面向過程則看成是執行者