深入淺出物件導向分析與設計 (Head First Object-Oriented Analysis and Design)

Brett D. McLaughlin, Gary Pollice, Dave West 著、楊仁和 譯

立即出貨 (約庫存 > 10)

買這商品的人也買了...

產品描述

本書特色

對坊間那些只有在成為專家以後,讀起來才有感覺的 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 與類別圖
繼承
多型
封裝
要點