首頁
中文書目錄
原文書目錄
 站內快速搜尋
資源中心
Book Series
Special Interest













■好消息,歐萊禮書籍已重新鋪貨至各大書局及網路書店,歡迎讀者選購       ■歡迎各院校採用歐萊禮書籍,學校團購請洽校園服務團隊

[書籍導讀]

Head First Object-Oriented Analysis & Design
— OOA&D 腦力開發:學習 OOA&D 的思維,動手處理實際的問題

《Head First Object-Oriented Analysis and Design》剛剛贏得 2007 年 Jolt Award 技術類書籍的首獎(Jolt Winner),這項崇高的榮譽對本書豐厚的內涵,作了最確切的肯定與保證,相信讀者在閱讀本書之時,絕不會入寶山而空手還。

物件的概念最早出現在 MIT 的 PDP-1 系統,物件導向編程的雛形則在 60 年代中期被引進 Simula 67,Simula 可說是物件導向程式語言的先驅,它包含了抽象化、類別、封裝等物件導向的特質。接著在 70 年代,Xerox 公司(全錄)將 LISP 和 Simula 的觀念融合成 Smalltalk,並做了一些重大的突破(動態建立、修改、銷毀物件以及繼承等),成就了第一個真正的物件導向程式語言,此後,更大大影響 80 年代的物件導向程式語言(像是 C++ 與 Eiffl 等),甚至延伸到 90 年代以後的 Java、Python、與 Ruby。歷經數十載的發展、眾多先驅的篳路藍縷,正所謂「路長人困蹇驢嘶」,想當然爾,學習 OO 自然不是一件容易的事。如果再往下扯出一堆 OO 方法論(像是 OOAD、OOSE、OMT 等,這些方法論之爭在今日被戲稱為「method wars」),恐怕沒完沒了,即使弄懂了當中的定義與理論,恐怕早也忘了程式怎麼寫。事實上,我們的問題很單純 — 如何寫出偉大的軟體(見第一章)?

簡單來說,物件導向程式可被視為「一群相互合作的物件」,每一個物件都能夠接受訊息、處理資料以及傳送訊息給其他物件,每一個物件可被視為一個獨立的「小機器」,具有獨特的角色或責任。物件包含狀態(屬性〔attribute〕或特性〔property〕)與行為(操作〔operation〕或方法〔method〕),以訊息傳送機制作為相互溝通的方式。訊息的傳送相當於方法的呼叫,訊息的接受者與傳送者則由相同或不同的物件擔任。類別則是定義同一類物件的特性與方法的藍圖,根據類別定義所產生的實例(instance)就是物件。

物件導向分析與設計
(OOA&D),是使用「物件」來設計應用程式的編程方式,它利用幾種技術,包括繼承(inheritance)、多型(polymorphism)、封裝(encapsulation)、抽象化(abstraction)、模組化(modularity)等,以及像是 OCP(開閉原則)、DRY(勿自我重複原則)、SRP(單一責任原則)、和 LSP(Liskov 替代原則)等 OO 原則,產生可擴展、可重利用、且好維護的軟體。

知道眾多的物件導向的理論與嚴謹的定義,對解決我們的問題實在幫助不大。就算你冰雪聰明,毅力過人,把那些理論全都釐清楚,並牢記在心,就能夠有效地分析與設計系統嗎?恐怕,就連「找出系統所需的物件」或者「決定物件之間的關係」,都還是困難重重。這是為什麼?因為,學習 OOA&D 的要領在於「學習 OOA&D 的思維」,而不在於理論與定義,你必須從「做中學」,從「實際案例」學(不是那種一、二十頁的繡花枕頭範例)。這就好像學習外語一樣,你不會拿一本字典或語言學理論的書猛 K,你必須多看文章,多練聽力,多開口交談,最好住到該語言國一段時間,OOA&D 的學習也應該如此。

《深入淺出物件導向分析與設計》不同於坊間一些只有在成為專家以後,讀起來才有感覺的 OOA&D 書籍,全書對 OOA&D 這個主題的探討,完全將焦點擺在「學習 OOA&D 的思維」上,透過一連串的腦力開發、有趣的問題與活動,讓我們參與一段趣味橫生的程式開發,將 OO 的觀念烙印在大腦裡。

除了以「學習 OOA&D 的思維」為焦點之外,本書的另一個焦點在於「動手處理實際的問題」,全書共分十章,由四個主要的實際案例穿叉而成,分別是 — 「亂亂彈樂器行」的庫存搜尋程式、「介好鑽狗門」、「電玩大亂鬥公司」的遊戲系統框架、以及「物件村地鐵系統」的路徑搜尋器,這些實例貫穿各章、「連續」發展,並且讓我們實際參與,這是其他 OO 書籍所沒有的,也是學習 OOA&D 的最佳方式 — 住進物件村一段時間,用 OO 的語言思考。

另外,本書提出「OOA&D 生命週期」的反覆式開發程序,內含功能清單、使用案例圖、問題分解、需求、領域分析、初步設計、實作(及測試)、與交付等八個階段,配合 UML、反覆式開發等觀念,在每個階段裡運用各種 OO 技術與原則,帶領你一步步將軟體開發完成,這是真實的開發程序,也是務實的 OO 思維。舉例來說,當你在閱讀 OO 書籍時,可能會讀到「物件導向程式設計將系統的架構,建立在系統所需要的物件上,而不是在系統所要完成的功能上」,這當然沒錯,然而,實務上,在我們幫客戶敲定功能清單、需求、及使用案例之前,如何能夠找出「系統所需要的物件」?本書的作法便是遵循 UML 的精神,對使用案例進行領域分析(domain analysis),分析當中的名詞與動詞,找出類別與方法的候選人,再利用其他技巧,過濾出系統所需要的物件。

本書的四個實例都是遵循前述的「OOA&D 生命週期」,從聆聽客戶的想法開始,逐步導入 OO 的技術與原則,直到交付軟體,真的是很實在。因此,提醒讀者,這本書的閱讀,除了附錄之外(有需要的話,可先看看附錄二),必須從第一章開始,循序漸進地讀下去,放心,蠻有趣的。讓我們住進物件村,開始一段 OO 的腦力開發之旅吧!



楊仁和
09/03/2007

| 首頁 | 聯絡我們 |
© 2009, O'Reilly Media, Inc. Taiwan Branch