• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        例程實作  ----庖丁解羊(上)(轉)

        例程實作 ----庖丁解羊(上)(轉)

        更新時間:2022-04-28 文章作者:未知 信息來源:網絡 閱讀次數:

        例程實作

        ----庖丁解羊(上)

        作者:HolyFire



        在《庖丁解羊----劃分》我們曾經將一只可愛的小羊拆成了零件,不知道是否還能否記得那道全羊譜。呵呵,說得口水都要流下來了。這里呢,沒有美味可口的羊肉,只有我在給各位講如何將我們學習的方法應用到編程中來。



        首先呢我們要把結構看清楚,也就是下面我東拼西湊起來的圖形,你們都看到了,我的ASCII藝術還差的遠呢,呵呵,不過還能看明白。





        山羊

        ┏━━━━━━━━━━━┳━━━┻━━━━━━━━━┳━━━━━━┓

        腦袋軀體尾部四肢

        ┏━━╋━━┳━━┓ ┏━┳━╋━┳━━┳━━┓┏━━╋━━┓ ┏━┻━┓

        骨架胡子五官 絨毛胸腹背 內臟絨毛骨架尾巴絨毛骨架前肢后肢

        ┏━━┳┻━┳━━┓┏━┳━┳┻┳━┳━┳━┓┏━━╋━━┳┛

        耳朵眼睛鼻子嘴巴 心脾肝肺胃腸腎腳絨毛骨架





        結構圖



        這樣一來,我們心里面就不是一塊一塊零碎的羊雜燴了,而是一部分一部分串在一起的整體。我們從底部開始向上觀察,你會發現這是一個重組的過程。反之是一個分解過程。



        而我們又將一些最小的單元歸結為{輪廓,顏色},這是外表上能感知到的信息。



        通過這些信息,我們發現自底向上解決這個問題好一些,人們總是樂意從簡單容易的地方入手,這也是我一開始要做劃分的原因。



        胡子{輪廓 , 顏色}絨毛{輪廓 , 顏色}骨架{輪廓 , 顏色}

        胸{輪廓 ,顏色}腹{輪廓 , 顏色}背{輪廓 , 顏色}

        眼睛{輪廓 , 顏色}鼻子{輪廓 , 顏色}嘴巴{輪廓 , 顏色}

        心{輪廓 ,顏色}脾{輪廓 , 顏色}肝{輪廓 , 顏色}

        腸{輪廓 ,顏色}腎{輪廓 , 顏色}腳{輪廓 , 顏色}

        尾巴{輪廓 , 顏色}耳朵{輪廓 , 顏色}肺{輪廓 , 顏色}

        胃{輪廓 ,顏色}



        可以看出這些單位的組成都是一樣的,我們可以將它統稱為羊的部分。



        部分{輪廓,顏色}

        絨毛,骨架,胸,腹,背,眼睛,鼻子,胡子,嘴巴,心,脾,肝,腸,腎,腳,尾巴,耳朵,肺,胃{{部分}}



        前肢{腳,絨毛,骨架}

        后肢{腳,絨毛,骨架}



        前肢與后肢也有著一樣的結構哦



        肢體{腳,絨毛,骨架}

        前肢,后肢{肢體}



        四肢{前肢,后肢}

        內臟{心,脾,肝,肺,胃,腸,腎}

        五官{耳朵,眼睛,鼻子,嘴巴}

        尾部{尾巴,絨毛,骨架}

        軀體{胸,腹,背,內臟,絨毛,骨架}

        腦袋{五官,胡子,絨毛,骨架}

        山羊{腦袋,軀體,四肢,尾部}



        其實,這些有各個部分組合起來的整體,如:前肢,后肢,軀體等等也是羊的一部分。



        肢體{{部分},腳,絨毛,骨架 }

        前肢,后肢{肢體}



        四肢{{部分},前肢,后肢}

        內臟{{部分},心,脾,肝,肺,胃,腸,腎}

        五官{{部分},耳朵,眼睛,鼻子,嘴巴}

        尾部{{部分},尾巴,絨毛,骨架}

        軀體{{部分},胸,腹,背,內臟,絨毛,骨架}

        腦袋{{部分},五官,胡子,絨毛,骨架}

        山羊{{腦袋},軀體,四肢,尾部}



        如果一個完整的整體是一個部分的特例的話,那么山羊也應該是一個部分。



        山羊{部分,腦袋,軀體,四肢,尾部}



        這樣一來,就可以方便的表示結構圖的部分--整體的關系了。



        部分{輪廓,顏色}

        絨毛,骨架,胸,腹,背,眼睛,鼻子,嘴巴,心,脾,肝,腸,腎,腳,尾巴,耳朵,肺,胃{{部分}}

        肢體{{部分},腳,絨毛,骨架 }

        前肢,后肢{肢體}

        四肢{{部分},前肢,后肢}

        內臟{{部分},心,脾,肝,肺,胃,腸,腎}

        五官{{部分},耳朵,眼睛,鼻子,嘴巴}

        尾部{{部分},尾巴,絨毛,骨架}

        軀體{{部分},胸,腹,背,內臟,絨毛,骨架}

        腦袋{{部分},五官,胡子,絨毛,骨架}

        山羊{{部分},腦袋,軀體,四肢,尾部}



        那么,現在是開始運用頭腦思考的時候了。



        羊的部分可以是一根顫巍巍的胡子,也可以是一個晃來晃去的尾巴,他們有共同的屬性:輪廓和顏色,但是由腳,絨毛,骨架組成的肢體也是一個部分,他們有什么共同之處呢,用部分做基類是不是有點牽強呢。其實一個部分輪廓和顏色是什么樣的對于我們并不重要,而且封裝的原則是不應該讓使用者知道內部結構,所以我們只要提供一個方法來描繪這個部分在視覺上的效果就可以了。如何讓一個方法可以表現不同的效果呢,switch ? if else ? No!



        我們有更好方法----多態,繼承的結構已經有了,缺的就是虛函數了。



        部分{顯示=無顯示}如何表現一個未知的物體?無意義,一個純虛函數正好勝任。

        輪廓{顯示}并非只有羊的部分才是可以體現視覺效果的,而且視覺效果是人與羊的關系,并非羊的一部分。

        絨毛{{部分,顯示=顯示絨毛},輪廓,顏色}

        骨架{{部分,顯示=顯示骨架},輪廓,顏色}

        胸{{部分,顯示=顯示胸},輪廓,顏色}

        腹{{部分,顯示=顯示腹},輪廓,顏色}

        背{{部分,顯示=顯示背},輪廓,顏色}

        眼睛{{部分,顯示=顯示眼睛},輪廓,顏色}

        鼻子{{部分,顯示=顯示鼻子},輪廓,顏色}

        嘴巴{{部分,顯示=顯示嘴巴},輪廓,顏色}

        胡子{{部分,顯示=顯示胡子},輪廓,顏色}

        心{{部分,顯示=顯示心},輪廓,顏色}

        脾{{部分,顯示=顯示脾},輪廓,顏色}

        肝{{部分,顯示=顯示肝},輪廓,顏色}

        腸{{部分,顯示=顯示腸},輪廓,顏色}

        腎{{部分,顯示=顯示腎},輪廓,顏色}

        腳{{部分,顯示=顯示腳},輪廓,顏色}

        尾巴{{部分,顯示=顯示尾巴},輪廓,顏色}

        耳朵{{部分,顯示=顯示耳朵},輪廓,顏色}

        肺{{部分,顯示=顯示肺},輪廓,顏色}

        胃{{部分,顯示=顯示胃},輪廓,顏色}

        由于各個部分不確定,所以需要用一個輪廓來描述,既然輪廓可以描述出形狀,加上顏色想必就能重現視覺效果,由此可見輪廓與顏色也是有關系的,他們結合在一起體現視覺效果。他們是間接的體現了這個部分的,比如

        絨毛{{部分,顯示=顯示絨毛},輪廓,顏色}

        事實上是

        絨毛{{部分,顯示=輪廓+顏色},輪廓,顏色}

        這樣一來這些基本單位又從新使用同一接口。

        絨毛,骨架,胸,腹,背,眼睛,鼻子,胡子,嘴巴,心,脾,肝,腸,腎,腳,尾巴,耳朵,肺,胃{{部分,顯示=輪廓+顏色},輪廓,顏色}

        肢體{{部分, 顯示=顯示肢體},腳,絨毛,骨架}

        前肢,后肢{{肢體}}

        四肢{{部分,顯示=顯示四肢},前肢,后肢}

        內臟{{部分,顯示=顯示內臟},心,脾,肝,肺,胃,腸,腎}

        五官{{部分,顯示=顯示五官},耳朵,眼睛,鼻子,嘴巴}

        尾部{{部分,顯示=顯示尾部},尾巴,絨毛,骨架}

        軀體{{部分,顯示=顯示軀體},胸,腹,背,內臟,絨毛,骨架}

        腦袋{{部分,顯示=顯示腦袋},五官,胡子,絨毛,骨架}

        山羊{{部分,顯示=顯示山羊},腦袋,軀體,四肢,尾部}

        這些組合的部分是由一些基本的部分組成的,那么它們的視覺效果是這些基本的部分的整體效果。



        部分{顯示=無顯示}

        輪廓{顯示}

        絨毛,骨架,胸,腹,背,眼睛,胡子,鼻子,嘴巴,心,脾,肝,腸,腎,腳,尾巴,耳朵,肺,胃{{部分,顯示=輪廓+顏色},輪廓,顏色}

        肢體{{部分, 顯示=顯示肢體},腳,絨毛,骨架}

        前肢,后肢{{肢體}}

        四肢{{部分,顯示=顯示四肢},前肢,后肢}

        內臟{{部分,顯示=顯示內臟},心,脾,肝,肺,胃,腸,腎}

        五官{{部分,顯示=顯示五官},耳朵,眼睛,鼻子,嘴巴}

        尾部{{部分,顯示=顯示尾部},尾巴,絨毛,骨架}

        軀體{{部分,顯示=顯示軀體},胸,腹,背,內臟,絨毛,骨架}

        腦袋{{部分,顯示=顯示腦袋},五官,胡子,絨毛,骨架}

        山羊{{部分,顯示=顯示山羊},腦袋,軀體,四肢,尾部}



        再三分析以后,我們發現比起一開始的結構圖來說,最后的模型竟然如此的精簡,我想這樣已經可以接受了。



        現在整體—部分的關系已經弄清楚了,現在要做的是如何將它與現實中的事物對應起來,也就是具體如何組合。



        那么讓我們開始念叨一下,我們怎樣用上面已知的內容來描述一只山羊呢。



        山羊:一個腦袋,一個軀體,一個四肢,一個尾部

        腦袋:一個五官,一把胡子,一些絨毛,一個骨架

        軀體:一個胸部,一個腹部,一個背部,一些內臟,一些絨毛,一個骨架

        尾部:一條尾巴,一些絨毛,一個骨架

        五官:兩只耳朵,兩只眼睛,一只鼻子,一張嘴巴

        內臟:一個心臟,一個脾臟,一個肝臟,兩個肺臟,一個胃,一些腸,兩只腎臟}

        四肢:兩只前肢,兩只后肢

        肢體:一只腳,一些絨毛,一個骨架



        不然看出數量在組成上有著重要的地位,所以我們的模型上還要加上基數這個概念



        部分{顯示=無顯示}

        輪廓{顯示}

        絨毛,骨架,胸,腹,背,胡子,眼睛,鼻子,嘴巴,心,脾,肝,腸,腎,腳,尾巴,耳朵,肺,胃{{部分,顯示=輪廓+顏色},輪廓[1],顏色[1]}

        肢體{{部分, 顯示=顯示肢體},腳[1],絨毛[n],骨架[1]}

        前肢,后肢{{肢體}}

        四肢{{部分,顯示=顯示四肢},前肢[2],后肢[2]}

        內臟{{部分,顯示=顯示內臟},心[1],脾[1],肝[1],肺[2],胃[1],腸[n],腎[2]}

        五官{{部分,顯示=顯示五官},耳朵[2],眼睛[2],鼻子[1],嘴巴[1]}

        尾部{{部分,顯示=顯示尾部},尾巴[1],絨毛[n],骨架[1]}

        軀體{{部分,顯示=顯示軀體},胸[1],腹[1],背[1],內臟[1],絨毛[n],骨架[1]}

        腦袋{{部分,顯示=顯示腦袋},五官[1],胡子[n],絨毛[n],骨架[1]}

        山羊{{部分,顯示=顯示山羊},腦袋[1],軀體[1],四肢[1],尾部[1]}



        這樣的話,更接近現實的事物,而且降低了問題的復雜度。



        經過一大堆的分析,這個模型也相對比較清晰了,可以接受了,不過不代表這是最好的模型,一定會有更好的模型的。但是我們并不需要最完美的模型,只要有一個合適的模型就可以了,在這里,作為我的需要,就已經很合適了。



        不用說,現在開始進入編碼階段了。經過上面的分析,相信我們心里有很多很多事要去做,不要急,慢慢來,亂了陣腳可不行。



        限于篇幅,我不能將圖形顯示方面的內容加進來,一來內容太多會混淆實現,不能突出重點;二來容易將思路引到細節的實現上去,反而忽略了全局;再來有關圖形顯示與編譯器和操作系統的關系緊密,并不適合我講的內容;最后,本人的藝術細胞極度匱乏,如果畫出來的形象讓大家失望,豈不是自討沒趣,哈哈,玩笑歸玩笑,讓我們繼續吧。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 久久久久久精品免费免费自慰| 亚洲一区二区三区国产精华液| 一区二区三区在线观看免费| 永久黄网站色视频免费观看| 亚洲中文字幕无码久久| 亚洲人成免费电影| 亚洲va精品中文字幕| 成年女人毛片免费播放人| 亚洲爆乳大丰满无码专区| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 免费成人福利视频| 亚洲男女一区二区三区| 67194成手机免费观看| 久久亚洲精品成人综合| 6080午夜一级毛片免费看| 亚洲六月丁香婷婷综合| 全免费a级毛片免费看无码| 豆国产96在线|亚洲| 国产中文在线亚洲精品官网| 91视频免费网站| 91情国产l精品国产亚洲区| 免费看美女裸露无档网站| 国产成人亚洲精品91专区高清 | 国产专区一va亚洲v天堂| 91麻豆国产免费观看| 亚洲中文无码卡通动漫野外| 亚洲成A人片在线观看无码3D| 中文字幕免费在线看电影大全| 久久水蜜桃亚洲av无码精品麻豆| 67194成是人免费无码| 欧亚一级毛片免费看| 久久精品7亚洲午夜a| 成人免费视频一区二区三区| 一级毛片免费在线播放| 久久狠狠高潮亚洲精品| 国产精品视频免费一区二区三区 | 亚洲五月激情综合图片区| 在线免费观看色片| a级毛片毛片免费观看久潮喷| 亚洲中文字幕一二三四区苍井空 | WWW国产亚洲精品久久麻豆|