面向對象開發游戲的好處:
面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結果。把上面每個步驟用分別的函數來實現,問題就解決了。
而面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分為 1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪制畫面,3、規則系統,負責判定諸如犯規、輸贏等。第一類對象(玩家對象)負責接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的i變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。
可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟。同樣是繪制棋局,這樣的行為在面向過程的設計中分散在了總多步驟中,很可能出現不同的繪制版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一。
功能上的統一保證了面向對象設計的可擴展性。比如我要加入悔棋的功能,如果要改動面向過程的設計,那么從輸入到判斷到顯示這一連串的步驟都要改動,甚至步驟之間的循序都要進行大規模調整。如果是面向對象的話,只用改動棋盤對象就行了,棋盤系統保存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規則判斷則不用顧及,同時整個對對象功能的調用順序都沒有變化,改動只是局部的。
再比如我要把這個五子棋游戲改為圍棋游戲,如果你是面向過程設計,那么五子棋的規則就分布在了你的程序的每一個角落,要改動還不如重寫。但是如果你當初就是面向對象的設計,那么你只用改動規則對象就可以了,五子棋和圍棋的區別不就是規則嗎?(當然棋盤大小好像也不一樣,但是你會覺得這是一個難題嗎?直接在棋盤對象中進行一番小改動就可以了。)而下棋的大致步驟從面向對象的角度來看沒有任何變化。
對C語言過程式解決問題時。一般是將現有的數據結構先定義出來。然后想辦法構造出算法了。
而用C++這樣的面向對象求解時,先是將對象抽出來。構造成一個仿真的環境,然后在這個環境里,把與最終要解決的問題間建立一個方法。
所以面向過程的程序設計有挑戰性,技巧性強。
而面向對象主要在于對象抽象有技術性
使用面向對象的分析和設計方法,其實是一個把業務邏輯從具體的編程技術中抽象出來的一個過程,而這個過程是從下向上的,非常符合人類分析問題的思維習慣,也就是先不考慮解決問題的具體細節,把問題的最主要的方面抽象為一個簡單的框架,集中精力思考該如何解決主要矛盾,然后在解決問題的主要過程中,把大的問題分割成一個一個的小問題,在專門解決細節問題。
面向對象設計要和面向過程設計進行比較才好理解
一個人可以看成對象。同樣一個人身體的各個部位也可以看成對象。
面向過程設計就比如做一個人,從頭開始做 慢慢的在完善化,最后在把這個人不斷的豐富起來。意思就是從一點開始設計
面向對象設計一個人。首相把一個人的各個部位看做對象
例如手,腳,頭,他們都是獨立的對象,可以分別設計,每個對象設計好后 在把他們按照借口拼接起來
最大的優點就是要修改的時候不必從頭到尾進行修改,如果手有問題,那么修改手這個對象就好了。
如果要做另一個人的話,直接吧這個人的需要的對象 拿來,,例如已經做好的 手等等。再加以修改
代碼易于維護,重用率高。
詳細的說明,請見:
鏈接: https://pan.baidu.com/s/1baI0oOIkM8Jd-Mh-dzDQ4w 提取碼: un1h
另外我的相關培訓視頻請看:
歡迎觀看我發布的各個課程: https://edu.51cto.com/lecturer/8896847.html
另外我的免費的linux各種驅動開發課程如下:
https://edu.51cto.com/course/17138.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。