溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

關(guān)于面向?qū)ο蟮木幊趟枷牒头椒?/h1>
發(fā)布時(shí)間:2020-08-04 01:15:46 來(lái)源:網(wǎng)絡(luò) 閱讀:501 作者:GaoNeil 欄目:移動(dòng)開(kāi)發(fā)

關(guān)于面向?qū)ο蟮木幊趟枷牒头椒?/h2>

面向?qū)ο箝_(kāi)發(fā)游戲的好處:
面向過(guò)程就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。

面向?qū)ο笫前褬?gòu)成問(wèn)題事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)解決問(wèn)題的步驟中的行為。

例如五子棋,面向過(guò)程的設(shè)計(jì)思路就是首先分析問(wèn)題的步驟:1、開(kāi)始游戲,2、黑子先走,3、繪制畫(huà)面,4、判斷輸贏(yíng),5、輪到白子,6、繪制畫(huà)面,7、判斷輸贏(yíng),8、返回步驟2,9、輸出最后結(jié)果。把上面每個(gè)步驟用分別的函數(shù)來(lái)實(shí)現(xiàn),問(wèn)題就解決了。
而面向?qū)ο蟮脑O(shè)計(jì)則是從另外的思路來(lái)解決問(wèn)題。整個(gè)五子棋可以分為 1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤(pán)系統(tǒng),負(fù)責(zé)繪制畫(huà)面,3、規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏(yíng)等。第一類(lèi)對(duì)象(玩家對(duì)象)負(fù)責(zé)接受用戶(hù)輸入,并告知第二類(lèi)對(duì)象(棋盤(pán)對(duì)象)棋子布局的變化,棋盤(pán)對(duì)象接收到了棋子的i變化就要負(fù)責(zé)在屏幕上面顯示出這種變化,同時(shí)利用第三類(lèi)對(duì)象(規(guī)則系統(tǒng))來(lái)對(duì)棋局進(jìn)行判定。

可以明顯地看出,面向?qū)ο笫且怨δ軄?lái)劃分問(wèn)題,而不是步驟。同樣是繪制棋局,這樣的行為在面向過(guò)程的設(shè)計(jì)中分散在了總多步驟中,很可能出現(xiàn)不同的繪制版本,因?yàn)橥ǔTO(shè)計(jì)人員會(huì)考慮到實(shí)際情況進(jìn)行各種各樣的簡(jiǎn)化。而面向?qū)ο蟮脑O(shè)計(jì)中,繪圖只可能在棋盤(pán)對(duì)象中出現(xiàn),從而保證了繪圖的統(tǒng)一。
功能上的統(tǒng)一保證了面向?qū)ο笤O(shè)計(jì)的可擴(kuò)展性。比如我要加入悔棋的功能,如果要改動(dòng)面向過(guò)程的設(shè)計(jì),那么從輸入到判斷到顯示這一連串的步驟都要改動(dòng),甚至步驟之間的循序都要進(jìn)行大規(guī)模調(diào)整。如果是面向?qū)ο蟮脑?huà),只用改動(dòng)棋盤(pán)對(duì)象就行了,棋盤(pán)系統(tǒng)保存了黑白雙方的棋譜,簡(jiǎn)單回溯就可以了,而顯示和規(guī)則判斷則不用顧及,同時(shí)整個(gè)對(duì)對(duì)象功能的調(diào)用順序都沒(méi)有變化,改動(dòng)只是局部的。

再比如我要把這個(gè)五子棋游戲改為圍棋游戲,如果你是面向過(guò)程設(shè)計(jì),那么五子棋的規(guī)則就分布在了你的程序的每一個(gè)角落,要改動(dòng)還不如重寫(xiě)。但是如果你當(dāng)初就是面向?qū)ο蟮脑O(shè)計(jì),那么你只用改動(dòng)規(guī)則對(duì)象就可以了,五子棋和圍棋的區(qū)別不就是規(guī)則嗎?(當(dāng)然棋盤(pán)大小好像也不一樣,但是你會(huì)覺(jué)得這是一個(gè)難題嗎?直接在棋盤(pán)對(duì)象中進(jìn)行一番小改動(dòng)就可以了。)而下棋的大致步驟從面向?qū)ο蟮慕嵌葋?lái)看沒(méi)有任何變化。
對(duì)C語(yǔ)言過(guò)程式解決問(wèn)題時(shí)。一般是將現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)先定義出來(lái)。然后想辦法構(gòu)造出算法了。

而用C++這樣的面向?qū)ο笄蠼鈺r(shí),先是將對(duì)象抽出來(lái)。構(gòu)造成一個(gè)仿真的環(huán)境,然后在這個(gè)環(huán)境里,把與最終要解決的問(wèn)題間建立一個(gè)方法。
所以面向過(guò)程的程序設(shè)計(jì)有挑戰(zhàn)性,技巧性強(qiáng)。
而面向?qū)ο笾饕谟趯?duì)象抽象有技術(shù)性

使用面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法,其實(shí)是一個(gè)把業(yè)務(wù)邏輯從具體的編程技術(shù)中抽象出來(lái)的一個(gè)過(guò)程,而這個(gè)過(guò)程是從下向上的,非常符合人類(lèi)分析問(wèn)題的思維習(xí)慣,也就是先不考慮解決問(wèn)題的具體細(xì)節(jié),把問(wèn)題的最主要的方面抽象為一個(gè)簡(jiǎn)單的框架,集中精力思考該如何解決主要矛盾,然后在解決問(wèn)題的主要過(guò)程中,把大的問(wèn)題分割成一個(gè)一個(gè)的小問(wèn)題,在專(zhuān)門(mén)解決細(xì)節(jié)問(wèn)題。
面向?qū)ο笤O(shè)計(jì)要和面向過(guò)程設(shè)計(jì)進(jìn)行比較才好理解
一個(gè)人可以看成對(duì)象。同樣一個(gè)人身體的各個(gè)部位也可以看成對(duì)象。
面向過(guò)程設(shè)計(jì)就比如做一個(gè)人,從頭開(kāi)始做 慢慢的在完善化,最后在把這個(gè)人不斷的豐富起來(lái)。意思就是從一點(diǎn)開(kāi)始設(shè)計(jì)
面向?qū)ο笤O(shè)計(jì)一個(gè)人。首相把一個(gè)人的各個(gè)部位看做對(duì)象
例如手,腳,頭,他們都是獨(dú)立的對(duì)象,可以分別設(shè)計(jì),每個(gè)對(duì)象設(shè)計(jì)好后 在把他們按照借口拼接起來(lái)
最大的優(yōu)點(diǎn)就是要修改的時(shí)候不必從頭到尾進(jìn)行修改,如果手有問(wèn)題,那么修改手這個(gè)對(duì)象就好了。

如果要做另一個(gè)人的話(huà),直接吧這個(gè)人的需要的對(duì)象 拿來(lái),,例如已經(jīng)做好的 手等等。再加以修改
代碼易于維護(hù),重用率高。

詳細(xì)的說(shuō)明,請(qǐng)見(jiàn):
鏈接: https://pan.baidu.com/s/1baI0oOIkM8Jd-Mh-dzDQ4w 提取碼: un1h

另外我的相關(guān)培訓(xùn)視頻請(qǐng)看:
歡迎觀(guān)看我發(fā)布的各個(gè)課程: https://edu.51cto.com/lecturer/8896847.html

另外我的免費(fèi)的linux各種驅(qū)動(dòng)開(kāi)發(fā)課程如下:
https://edu.51cto.com/course/17138.html

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI