< >
對坊間那些只有在成為專家以後,讀起來才有感覺的 OOA&D 書籍,你是否早已感到厭倦?你可能早就聽說過 OOA&D 書籍能幫你寫出偉大的軟體—讓老闆高興、客戶滿意的軟體。但如何辦到呢?《深入淺出物件導向分析與設計》將告訴你如何分析、設計、以及撰寫真正物件導向的軟體:容易重利用、好維護、可擴展的軟體;不再使你心碎的軟體;讓你增添新功能而不會破壞舊機制的軟體。在本書裡,你將學到如何: 使用像是封裝與委派的 OO 原則,建立有彈性的應用程式。 使用開閉原則(Open-Closed Principle)與單一責任原則(Single-Responsibility Principle),提升程式的重利用性。 學習如何將 OO 原則、設計模式、及各種開發方法,通通整合到 OOA&D 專案的生命週期裡。 運用 UML、使用案例、及使用案例圖,確保所有利害關係人都能清楚地進行溝通,協助你交付正確的軟體,符合每個人的需求。 透過一連串的腦力開發,《深入淺出物件導向分析與設計》壓縮了學習與獲取複雜資訊所需的時間。可預期地,這將是一段充滿樂趣的學習之旅。相信,在讀完本書之時,你將能夠一貫地寫出偉大的軟體。「《深入淺出物件導向分析與設計》對 OOA&D 這個主題的探討,令人耳目一新。讓這本書與眾不同之處,在於它將焦點擺在學習上,本書的諸位作者讓從業人員,對 OOA&D 的內涵不再感到遙不可及,而且在實務上確實有用。」— Ivar Jacobson Ivar Jacobson 顧問、UML 之父「隱匿在詼諧圖片與逗趣文字背後的,是對 OOA&D 這個主題認真、睿智、且極度精心鋪陳的闡述。閱讀本書時,感覺就像站在專家設計者的肩膀上,環顧四方,聆聽他對我一步步,細心傾訴著那些重要的議題,並且告訴我為什麼」— Edward Sciore 波士頓學院電腦科學系副教授「剛讀完這本書,我深深愛上它!我最喜歡的一件事,就是本書把焦點放在為什麼要實踐 OOA&D 的原因 — 寫出偉大的軟體!」— Kyle Brown IBM 傑出工程師
1 偉大軟體由此開始:良好應用程式之基石 永遠的搖滾樂Rick 金光閃閃的新應用程式什麼是你要改變的第一件事偉大軟體是⋯偉大軟體三步驟先聚焦在功能性測試驅動尋找問題分析應用基礎的 OO 原則設計一次,設計二次改變你的應用程式有多簡單?封裝變化之物委派最後的偉大軟體(就現在而言)OOA&D 關乎撰寫偉大軟體要點2 給客戶所需之物:收集需求 大顯身手的機會來了測試驅動 不正確的使用(有一點)什麼是需求建立需求清單為錯誤預作規劃替代路徑處理系統的疑難問題介紹使用案例一個使用案例,三個部分按照使用案例檢查需求你的系統必須運作在現實世界裡認識快樂路徑 OOA&D 工具箱 3 山可移,此情永不渝⋯現在,情況有變:需求變更 英雄!犧牲品?軟體分析與設計的不變真理是選擇性路徑?是替代路徑?誰能分得清?使用案例對你必須合理從開始到完成:單一使用情節替代路徑的真心話完成需求清單重複程式碼,遜!最後的測試驅動撰寫你自己的設計原則OOA&D 工具箱4 將你的軟體帶進現實的世界:分析一隻狗,二隻狗,三隻狗,四隻⋯你的軟體有其情境識別問題規劃解法兩個程式人員的故事委派繞道鬆弛耦合應用程式的威力注意使用案例裡的名詞從好分析到好類別類別圖剖析類別圖不是一切 要點5 第一部:諸行無常:良好的設計Rick 的吉他事業蒸蒸日上抽象類別類別圖剖析(再一次)UML 小抄設計原則秘辛通往偉大軟體的三步驟(重訪) 插曲:OO 大災難 第二部:給你的軟體 30 分鐘的伸展操:彈性的軟體回到 Rick 的搜尋工具仔細瞧瞧 search() 方法分析的好處類別與行為有關設計之死(決策)將壞的設計決策轉變成好的Rick 軟體裡的「雙封裝」千萬不要怕犯錯瞧!Rick 具有彈性的應用程式測試驅動「設計良好的軟體」改變 Rick 的軟體有多容易?「變更容易性」的大挑戰具有內聚力的類別善於處理單一事情設計/內聚力生命週期偉大軟體是「夠好」 OOA&D 工具箱 6 「假如我是真的」:解決真正的大問題 解決大問題 關鍵在於你如何看待大問題 需求與使用案例是個好起點共通性與變化性整理功能功能與需求的差別使用案例不總是幫你看出整體概廓使用案例圖小小行為者 行為者也是人(好吧,不全然)做點領域分析吧化整為零,個個擊破別忘了真正的客戶是誰何謂設計模式?OOA&D 的威力(以及一點基本常識)OOA&D 工具箱 7 為混沌帶來次序:架構 感覺有點頭昏嗎?我們需要架構從功能性開始什麼是架構上重要?架構三問減少風險使用情節有助於減少風險一次把焦點放在一個功能上架構是你的設計結構再訪共通性共通性分析:通往彈性軟體之路什麼意思?問客戶吧減少風險有助於偉大軟體的撰寫要點8 原創性被高估:設計原則設計原則大集合開閉原則(OCP)OCP,一步一步來不自我重複原則(DRY)DRY 全然關乎一個地方一個需求單一責任原則(SRP)找出多重責任從多重責任到單一責任Liskov 替代原則(LSP)子類別化之誤用:誤用繼承的案例研究LSP 揭露繼承結構所隱藏的問題子型別必須能替代其基礎型別違反 LSP 造成令人困惑的程式碼將功能委派給其他類別使用合成組合來自其他類別的行為聚合:合成,但沒有突然的結束聚合 vs. 組合繼承只是選項之一要項OOA&D 工具箱9 軟體終究為客戶服務:反覆與測試你的工具箱滿了偉大軟體的撰寫是反覆進行的更深入地反覆:兩種基本選擇功能驅動開發使用案例驅動開發兩種開發方式功能分析撰寫使用情節測試驅動開發共通性分析(再探)強調共通性強調封裝比對你的測試與設計測試案例剖析 ...向客戶證明我們一直在按契約編程按契約編程關乎信任防禦式編程將應用程式分解成較小的功能性團塊要點10 機械獸⋯組合:OOA&D 生命週期開發軟體,OOA&D 風格物件村的地鐵問題物件村地鐵圖功能清單使用案例反映使用性;功能反映功能性現在開始反覆仔細看看地鐵的表示使用或不使用 Line 類別物件村地鐵的關注要點(類別)保護你的類別中場休息回歸需求階段聚焦在程式,然後聚焦在客戶反覆讓問題變得比較容易路徑看起來像什麼?讓自己看看物件村第 3 次反覆,有人要試試嗎?路未央⋯附錄一:本書遺珠#1. IS-A 與 HAS-A 558#2. 使用案例格式 #3. 反設計模式#4. CRC 卡#5. 統計數據#6. 循序圖#7. 狀態圖 #8. 單元測試#9. 撰碼標準與可讀的程式碼 #10. 重構附錄二:歡迎光臨物件村 UML 與類別圖繼承多型封裝 要點
深入淺出 Java 程式設計 第二版 深入淺出設計模式 深入淺出 SQL
購買紙本書