close
好觸發
EX: 即時戰略中      士兵
EX: 即時產線中      生產設備泡麵 到 貨車
                               
那觸發點在哪?
最好

這樣的邏輯要怎麼對應到物件的關係上? 好,士兵是一個類別,那隻箭也是,那匹馬也是,應該不難,現在問題來了,攻擊的邏輯 (就是要減多少血那個部份) 是要放在士兵,箭,還是馬?乍看之下好像沒什麼差別,但其實這個決定會影響程式的維護性。如果放在箭上的話,那箭的攻擊邏輯就必須要知道他要攻擊的對象, 比方說如果攻擊對象的話換成是坦克車的話,弓箭造成的損傷就要改變。所以無形中弓箭的類別就會跟其他所有單位的類別形成了相依性,這是不好的因為類別間的 相依性越高,一般來講程式碼就越難維護或擴充。曹老師後來是說應該是要放在馬上面,讓馬的類別處理,我想這樣的話馬自己負責自己被攻擊的邏輯,感覺上類別 之間的關係比較鬆散 (通常是件好事)。不過我後來想想其實這樣還是沒有解決相依性的問題啊,這樣的話馬本身還不是需要知道它是被什麼攻擊....雖然說我沒有寫過即時戰略遊 戲的經驗,但我想我會這麼作吧,會有一個固定的公式 (會將 "可被攻擊的物件" 幾個屬性,比如說防禦力之類的算在裡面) 來算出損傷,這樣的話所有 "會攻擊的物件" 的攻擊方法其實都是一致的,只會因 "可被攻擊的物件" 不同而改變。

還有老師最後還有出一題給大家回家思考,請問以下這兩組東西,如果要你畫出類別關係圖,要怎麼畫?


樹、紙、海報

烏龜,石頭,筆

感覺上有點像腦經急轉彎...海報繼承至紙,紙繼承至樹? 那烏龜,石頭,筆勒?我是還沒深入去想,不過我的認知中物件導向程式設計中,物件其實代表的是行為 (Behaviour) ,所以真正的問題可能是『樹、紙跟海報之間有相同的行為嗎?』
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Su SeenJay 的頭像
    Su SeenJay

    Su SeenJay的部落格

    Su SeenJay 發表在 痞客邦 留言(0) 人氣()