Re: 不懂如何抽離物件(初學物件導向的問題)

作者: tinlans ( )   2008-09-05 23:51:14
※ 引述《andrew43 (Myrmarachne)》之銘言:
: 各位先進早安。
: 小弟從小到大學習接觸的全都是面向導向語言。最
: 常用的是 PHP 與 Matlab/GNU Octave。換言之,
: 我從來沒有撰寫「物件」這東西的經驗。
: 最近買了二三本 JAVA 的書來學習,發現書中很多
: 例子使我跟不上作者的腳步。有的例子是「幹嘛抽
: 象化得這麼仔細?」,有的是「為什麼要做這件抽
: 象化?」。追根究底,我對於「物件導向」的思考
: 方式應該是零分吧。
打從一開始就只想著要抽象化是失敗的第一步。
當年 UP 之父搞出來的 OOAD 那套,
就有明確的把 OOA 跟 OOD 分離出來,
OOA 主要是在處理 problem domain 的問題,
OOD 才是處理 solution domain 的問題,
所以在 OOA 的階段是沒有必要急著進行抽象化的,
你只要找出一些解決問題用的 class 和它們之間的關係即可,
而找 class 最常見的有 textual analysis (從 use case 來),
也有利用 CRC card 去找,
或 UP 區分的 bondary、control、entity 三類 class 的方式來找;
當你的 analysis model 確實的建立出來以後,
你也比較能專注在抽象化等 OOD 的工作上。
上面講的東西如果你想輕鬆學一點皮毛可以看這本 (並非純 OOAD):
http://tinyurl.com/2l8h2p
想對理論本身瞭解得更深入一點可以讀這本:
http://tinyurl.com/4lu3zk
有資管背景的話也能選這本代替上一本:
http://tinyurl.com/5klkbh
如果你覺得 OOAD 那套古板枯燥乏味,
你也可以選擇走 Extreme Programming 的路線來體會,
反正最終還是會跟 OOAD 殊途同歸;
不過你還是得讀一些跟 refactoring 相關的書籍,
這樣你就可以一開始照直覺把程式一口氣寫出來,
然後利用你學到的 refactoring 知識一步一步漸進的做改善,
改善到一個程度自然就會引進抽象化,
到時候你就會明白為什麼要做那些抽象化。
refactoring 可以讀的翻譯書毫無疑問是這兩本:
http://tinyurl.com/62b85u
http://tinyurl.com/5u2aoy
第二本你不熟 pattern 的話可以先不要讀,
等你有一天真的對 OOD 十分有感覺看得進 pattern 的書以後再去讀它,
台灣的環境其實讀過第一本就夠你用很久了。
學物件導向當然是要讀物件導向本身的書,
只是拿特定語言的書來讀,
其實對於精進物件導向概念的幫助不大,
畢竟這類書籍大多著重於展示語言如何支援物件導向,
而不會告訴你實現物件導向的過程和步驟,
方法論的文獻和工具的說明書是不能互相取代的。

Links booklink

Contact Us: admin [ a t ] ucptt.com