×
深入淺出物件導向分析與設計
作者: Brett D. McLaughlin, Gary Pollice, David West
譯者:楊仁和
書號: A210
出版日: 2010/12/07
ISBN:9789867794994
附件: 無
定價: 880
電子書: 未出版
購買紙本書
內容特色
對坊間那些只有在成為專家以後,讀起來才有感覺的 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 與類別圖
繼承
多型
封裝
要點
深入淺出物件導向分析與設計 分享
  • 作者: Brett D. McLaughlin, Gary Pollice, David West
  • 書號:A210
  • ISBN:9789867794994
  • 出版日:2010/12/07
  • 定價:$ 880
  • 電子書:已出版
  • 購買紙本書

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