[概念] 物件導向學習

看板OOAD作者 (hsnugo)時間15年前 (2010/01/18 17:10), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
學習程式4年了, 一直很想學會一個好的OODesign 之前買了很多人推的"深入淺出 物件導向分析與設計" 但是總因為看到一半有很多疑問而打住 想問一下 1.訂定Use case和requirement非常重要嗎? 我知道寫程式前應該要先規劃好, 但是這本書花了很多的篇幅 在思考, 修改它的Use case和requirement 在很多地方, 都會讓我覺得很抽象 2.要怎麼知道該設計哪些class 一個很多人建議的方法 => "名詞" 在Usecase裡的名詞就是一個class, 他擁有的東西就是variable, 他的動作就是method 但是有的時候, class A該不該有class B的物件, 也是令人難決定 ex: 在書中有個範例 要設計一個狗門, 可以用遙控器控制開關, 或因狗的聲音辨識器辨識到的聲音而開關 這聽起來是三個分開的class, 甚至我會覺得Recognizer應該是DogDoor所擁有的 但是實際上, remote需要控制DogDoor, 所以必須擁有一份DogDoor的reference Recognizer需要控制DogDoor, 也必須擁有一份DogDoor的reference 所以可以說, 一個class擁有哪些variable, 應該是那些東西它需要access嗎 3.物件化程度 在同個例子中, 狗叫聲Bark, 有兩種作法 一是String bark; 二是Bark bark; (後面還有barkList, 不過先簡化一點問題) 如果用二, 就可以將吠聲比較交給Bark, 後面即使修改Bark的比較方法 也只要不需動到聲音辨識器或其他用到Bark的class 但是這是一個我困擾很久的問題 我怎麼知道以後會不會修改? 如果我99%確定不會再修改, 那我直接用String bark, 程式的效率不是比較好 也直接可以看出他比較時做了的事情 如果連這樣都要物件化, 那不是有很多variable都要設計成物件 那像本書的第一個例子: guitar擁有的builder, model, type等屬性, 不如也都改成物件 以後就可以擁有很高的彈性, 看是要怎麼比較builder, model等屬性 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.192.18 ※ 編輯: hsnucsc 來自: 140.113.192.18 (01/18 17:11)
文章代碼(AID): #1BL2LlYE (OOAD)
討論串 (同標題文章)
文章代碼(AID): #1BL2LlYE (OOAD)