日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

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

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

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

更新時間: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]}



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



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



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



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

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

本類教程下載

系統下載排行

主站蜘蛛池模板: 国产欧美一区二区三区在线 | 高清毛片在线看高清 | 久热久操| 性盈盈影院免费视频观看在线一区 | 九九看片 | 成人网中文字幕色 | 精品国产福利在线观看网址2022 | 中文字幕在线视频网站 | 免费国产成人高清视频网站 | 狠狠的干狠狠的操 | 香蕉久久ac一区二区三区 | 久久免费毛片 | 亚洲欧美日韩高清一区二区三区 | 欧美一级毛片不卡免费观看 | 九九涩| 欧美日韩在线亚洲国产精品 | 欧美操片在线观看 | 欧美国产日韩综合 | 99热久久久这里只有精品免费 | 国产高清一区二区 | 狠狠狠狠操 | 中文字幕一二三区乱码老 | 亚洲天天做日日做天天看 | 窝窝午夜精品一区二区 | 国产亚洲欧美日韩综合另类 | 国产成人亚洲精品影院 | 夜夜久久 | 就要精品综合久久久久五月天 | 理论毛片| 日美女网站 | 午夜免费片 | 久久精品综合国产二区 | 欧美黄色成人 | 欧美日韩大片 | 日韩在线一区二区三区 | 最新在线鲁丝片eeuss第1页 | 中文字幕在线观看2023 | 69交性视频| 91情国产l精品国产亚洲区 | 91射射射 | 亚洲热热 |