OOAD 板


LINE

※ 引述《hsnucsc (hsnugo)》之銘言: : 學習程式4年了, 一直很想學會一個好的OODesign : 之前買了很多人推的"深入淺出 物件導向分析與設計" : 但是總因為看到一半有很多疑問而打住 : 想問一下 : 1.訂定Use case和requirement非常重要嗎? : 我知道寫程式前應該要先規劃好, 但是這本書花了很多的篇幅 : 在思考, 修改它的Use case和requirement : 在很多地方, 都會讓我覺得很抽象 很重要啊。 以前常有人聽了客戶講的東西就照自己想像的跑去寫程式, 寫了幾個月寫得要死結果客戶說那不是他要的功能。 弄清楚到底該做什麼, 然後去做對的事情, 避免做了多餘的事情, 大都由這裡把關。 : 2.要怎麼知道該設計哪些class : 一個很多人建議的方法 => "名詞" : 在Usecase裡的名詞就是一個class, 他擁有的東西就是variable, 他的動作就是method 除了這個叫做 textual analysis 的方法之外, 還有 CRC analysis (你那本書附錄應該有講), 或是把類別分成 bounary/control/entity 三大類, 再用類似 textual analysis 的原理去識別出來。 : 但是有的時候, class A該不該有class B的物件, 也是令人難決定 可以嘗試填看看 CRC card 來區分, 或者改走比較傳統的 use-case driven 路線先熟悉整個精神, 這樣你可以先學習如何找出分析期類別再把它們轉換(合併或分割)成設計期類別。 一開始就走 feature-driven 有時候對一些人來說跳太快了, 大概 run 一下傳統的做法可能比較抓得到感覺。 學習傳統做法的書我建議這本:http://tinyurl.com/4lu3zk 一方面你也可以順便學會 UML 的各種圖大概怎麼應用, 而不是空學每張圖的「語法」。 : 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 : 但是這是一個我困擾很久的問題 : 我怎麼知道以後會不會修改? 參考 requirement 那個步驟得到的一些文字資訊來做判斷, 上面沒有描述到的話就當作不會。 跟物件導向搭配的開發模式大都是 iterative 而不是 waterfall, 你走完 design 還是會往回繞到 requirement 一直反覆, 你手邊的那本書可能沒有告訴你這件事, 我講的那本有。 : 如果我99%確定不會再修改, 那我直接用String bark, 程式的效率不是比較好 : 也直接可以看出他比較時做了的事情 : 如果連這樣都要物件化, 那不是有很多variable都要設計成物件 : 那像本書的第一個例子: : guitar擁有的builder, model, type等屬性, 不如也都改成物件 : 以後就可以擁有很高的彈性, 看是要怎麼比較builder, model等屬性 : 謝謝 -- Ling-hua Tseng ([email protected]) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: http://www.tinlans.org --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.116.1
1F:推 hsnucsc :謝謝 01/20 13:12
2F:→ H45 :http://tinyurl.com/4lu3zk: 02/26 00:30
3F:→ H45 :UML 物件導向系統分析與設計 (UML 2 and the Unified 02/26 00:30
4F:→ H45 :Process : Practical Object-Oriented Analysis and 02/26 00:30
5F:→ H45 :Design, 2/e) 02/26 00:30







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP