《深入淺出面向對象分析與設計》讀後感|王鵬

2021-02-15 廣州海頤軟體有限公司

從年初開始,斷斷續續的讀了幾個月,終於按照計劃把《深入淺出面向對象分析與設計》這本書讀完了,本書的寫作方式比較新穎,可以說是圖文並茂,詼諧的文字配上幽默的圖片,通過視覺化的方式,加深讀者的記憶力,條理清晰、主旨明確,使我能夠循序漸進一點點的深入的讀下去。當然本書也有一些缺點,比如陳述內容過於細緻冗餘,有些翻譯的文字也比較晦澀,理論性的東西比較多,實例代碼相對來說比較少,但瑕不掩瑜,這並不妨礙它成為一本面向對象分析與設計的經典入門書籍。

書中結合幾個具體的例子(吉他庫存管理系統、狗門、遊戲系統開發框架)循序漸進地講解了OOA&D即面向對象設計與分析涉及的關鍵概念、設計原則以及分析流程。其核心思想我認為就是書中所說的偉大軟體開發的三個步驟:

客戶要他做的事情即需求,需要我們通過需求分析確認,通過與客戶反覆溝通、交流收集用戶需求,利用UML建模工具繪製出系統的用例圖,考驗的是我們的業務分析以及領域建模的能力,這一點往往是我們在開發系統過程容易忽視的方面或者薄弱的地方,通常我們會從開發人員的角度而非用戶的角度去分析問題,想問題,這樣設計出來的系統往往用戶體驗較差,使用起來很不方便。另一方面,作為開發人員,通常對其所使用的開發語言比較精通,而對像UML這種建模語言或者工具並不是很熟悉。最後,需求不是一成不變的都,需求是經常變更的,如何使你的軟體從容應對需求變更就顯得及其重要,書中提到了測試驅動開發,設計優良的系統必定少不了測試,測試驅動開發的基本思想就是在開發功能代碼之前,先編寫測試代碼。測試對系統來說特別重要,作為開發人員可以利用一些成熟的測試框架來提升自己編寫測試代碼的效率。

2、運用基本的OO即面向對象設計原則來增加軟體的靈活性

告訴我們要用面向對象而非面向過程的思想去實現我們的系統,在軟體設計的過程中儘量的使用像封裝、繼承、多態等面向對象的技術,使我們的程序更加靈活,良好的設計等於靈活的軟體。為了使軟體靈活可擴展,要學會利用面向對象的設計原則降低應用程式的耦合度。一些基本的面向對象的設計原則比如單一職責原則、開閉原則(即對擴展開放,對修改關閉),裡式替換原則等是需要我們始終牢記的,這些面向對象的基本原則都很簡單,但真正能在程序設計中靈活使用卻不簡單,就拿最簡單的單一職責原則來說,我們可以回頭想想我們曾經設計和實現的類,有哪些類真正的做到了單一職責,我們是不是為了圖省事將一個類變成了一個萬能類。

這是真正考驗我們開發人員內功的時候,你需要對你要設計的系統進行整體的架構設計,並不斷的進行架構優化,甚至有些時候還需要重構你的系統,在架構設計的過程中需要運用一些高級的面向對象分析技術,例如運用一些設計模式去使我們的系統更加容易擴展。架構設計的目的就是讓你的軟體容易改變,反之,你的軟體越難改變,就越難響應用戶需求的變更。在架構設計以及開發的過程中需要經過反覆的迭代,最終實現一個真正可維護的系統。良好的軟體是通過迭代造就的,分析、設計再次迭代,一次次完成程序更小的部分。書中提到了兩種編程模式:契約編程和防禦編程。二者各有優劣,我個人比較傾向於使用防禦編程去實現你的系統。關於防禦式編程我想多說幾點,防禦編程其核心思想是要承認程序都會有問題,都需要被修改,應該根據這一點來編程序,這種思想是將可能出現的錯誤造成的影響控制在有限的範圍內;在編寫代碼的時候要養成檢查變量合法性的習慣;在多線程、異步環境下,你不能保證你的變量不會被其他線程,或者被其他異步操作改變狀態;不要盲目自信,代碼最終還是人寫的,是人寫的就會出錯,你能夠做的就是在出錯之前儘可能的思考出所有出錯的可能,把異常情況規避掉;別認為添加錯誤處理或者異常檢測會降低你的代碼運行效率,實際情況是為此犧牲的效率微乎其微,而換來的卻是程序的高度健壯性,你不再擔心你的程序會無緣無故的崩潰,應保持懷疑一切的態度去編寫和維護你的代碼。通常,通過防禦編程編寫出來的程序更加穩定且容易維護,養成良好的防禦編程習慣將使你的程序無懈可擊。

當然,書中所講述的遠遠不止這些,UML建模、用例設計,功能分析、軟體設計原則、設計模式、軟體開發方式、領域分析、架構設計、OOA&D的生命周期等等任何一項拿出來都值得我們去學習研究並細細品味。在之後的工作中還需要結合實際開發深化學習,轉變軟體開發的思想,培養良好的面向對象設計的習慣,運用面向對象的設計原則、設計模式以及領域分析的方法使開發的軟體更加健壯、靈活以及可維護。

相關焦點

  • Java面向對象程序設計教與學
    學完該課程,學生能使用面向對象程式語言和採用面向對象思維方法開發大中型應用程式。課程學分:4學分二、課程性質面向對象程序設計是計算機科學與技術專業、軟體工程專業以及物聯網工程專業的專業基礎課。該課程主要講授面向對象的程序設計方法和思想。該課程藉助Java作為教學語言,講授面向對象編程的基礎理論和基本思想,培養學生的面向對象思維。
  • 專家解析UML面向對象分析過程及包含圖形
    專家解析UML面向對象分析過程及包含圖形 本文向大家介紹一下UML面向對象分析及其包括的圖、建模步驟,在學習UML建模語言的過程中,你可能會遇到UML面向對象問題,這裡和大家分享一下。
  • 再談面向對象的設計原則
    談到面向對象,們毫不猶豫的說出面向對象的三大特徵:封裝、繼承、多態,面向對象這在軟體的構架設計中是非常重要的,最能直接體現出來的優點就是軟體的擴展性和重用性。要理解面向對象編程,只停留在開發層面上,是無法深入理解的。只有在設計層面上展開才能逐步的領會面向對象。但在實際的開發中,並不是每一個人都能夠接觸到核心的設計工作。
  • Java面向對象程序設計的基本概念
    圖:計算機語言的發展過程何謂面向對象是什麼意思呢?面向對象程序設計是將人們認識世界過程中普遍採用的思維方法應用到程序設計中。對象是現實世界中存在的事物,它們是有形的,如某個人、某種物品;也可以是無形的,如某項計劃、某次商業交易。
  • 面向全市中小學生徵集優秀讀後感
    面向全市中小學生徵集優秀讀後感 2019/04/23 07:28 來源:溫州日報甌網 編輯:王一川 瀏覽:14385
  • 圖書推薦:深入淺出數據分析
    藉助各種成熟的技術和免費的工具,數據分析將改變你思考問題和解決問題的方式。概念對理論有用,對實踐更有用。」——Anthony Rose, Support Analytics公司總裁「《深入淺出數據分析》寫得漂亮,讀者可以學到分析現實問題的系統性方法。從賣咖啡到開橡皮玩具廠,再到要求老闆漲工資,此書告訴我們如何發現和解密數據在日常生活中的強大作用。
  • 詳解Java面向對象開發方法,看清華大牛帶你深入淺出剖析
    隨著軟體開發技術的逐步發展,為了進一步提高軟體的可重用性、可擴展性和可維護性,面向對象的程式語言及面向對象設計理論應運而生,Java語言就是一種純面向對象的程式語言。一般說來,軟體開發都會經歷以下生命周期:軟體分析:分析問題領域,了解用戶的需求。
  • C++面向對象程序設計 | 教與學(教學大綱)
    本課程屬專業基礎選修課程,授課對象為計算機類、信息管理類、電子信息類專業及其它相關專業的本科生,在整個教學體系中佔據重要的地位。本課程主要介紹面向對象程序設計的基本概念、核心思想和設計方法及其在C++語言中的實現機制與靈活運用。
  • Java面向對象程序設計教學大綱
    )【課程代碼】:理論:262194,實驗:262195【 適用專業】:計算機科學與技術專業、網絡工程專業、物聯網專業【開課學期】:第 3 學期(註:2020 以前為第 4 學期)【課程性質】:專業主幹【學分學時】:本課程為 5 學分,基本學時 96,其中講授課時 64 學時,課內實驗32 學時。
  • 關於面向對象認知
    "面向對象" 本質是什麼面向對象是什麼,那這種設計思想的起源是什麼,當時是為了解決那一類問題。什麼是面向對象編程設計(OOP),是將面向對象思想用於編程形成一個編程的設計思想,架構風格麼什麼是面向對象語言(OOL),為什麼說具有封裝,多態, 繼承特性的語言就是OOL語言呢?封裝 多態 繼承是面向語言獨有的麼,還是他們也是一種設計模式或者說是一種設計思想。
  • Java程式設計師應該了解的10個面向對象設計原則
    面向對象設計原則是OOPS(Object-Oriented Programming System,面向對象的程序設計系統)編程的核心,但大多數Java程式設計師追逐像Singleton、Decorator、Observer這樣的設計模式,而不重視面向對象的分析和設計。
  • 如何以面向對象的思想設計有限狀態機
    那要怎樣設計代碼量少,又不需要以遍歷狀態轉移表的形式從而花費大量時間的狀態機呢?這個時候就需要以面向對象的思想來設計有限狀態機。面向對象法設計狀態機面向對象基本概念以面向對象的思想實現的狀態機,大量涉及了對於函數指針的用法,必須對這個概念比較熟悉上述所提到了兩個設計方法都是基於面向過程的一種設計思想,面向過程編程(POP
  • 聊聊面向對象編程的幾個基本原則
    進行面向對象編程,有下面幾個原則:一. 面向抽象原則二. 開閉原則三. 多用組合少用繼承原則四. 高內聚-低耦合原則下面首先先介紹抽象類和接口,然後介紹面向抽象編程。我們的課程內容有:Java工程化、高性能及分布式、高性能、深入淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點。
  • 深入淺出數據分析書單
    當然正如標題「深入淺出」,在考慮書單的時候儘量都是些淺顯易懂又不缺乏深度的書籍。統計學深入淺出統計學深入淺出系列書籍,使用大量圖片和對話,使得統計理論的學習既有趣又自然。對於入門統計學來說很重要一點就是淺顯易懂,學起來非常輕鬆,當然這本書還挺厚的,不過翻起來很快,打包票不會被勸退。
  • 深入淺出數據分析
    好久沒有更新讀書系列的文章了,今天推薦的這本《深入淺出數據分析》是一本非常適合數據分析行業入門的讀物
  • 一步步分析:C語言如何面向對象編程
    二、什麼是面向對象編程有這麼一個公式:程序=數據結構+算法。C語言中一般使用面向過程編程,就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步調用,在函數中對數據結構進行處理(執行算法),也就是說數據結構和算法是分開的。
  • 軟體項目實訓及課程設計指導——如何實現面向對象的系統架構設計
    2、在軟體應用系統的架構設計中要綜合應用OOP、AOP和SOA相關的設計思想(1)面向對象(OOP)和面向方面(AOP)的設計思想由於與面向對象(OOP)和面向方面(AOP)開發有關的各種設計思想和具體的實現技術都是解決軟體應用系統的內部結構設計方面的問題
  • 你真的知道面向過程和面向對象的區別嗎?
    面向過程面向過程是一種以事件為中心的編程思想,編程的時候把解決問題的步驟分析出來,然後用函數把這些步驟實現,在一步一步的具體步驟中再按順序調用函數。舉個例子,下五子棋,面向過程的設計思路是首先分析解決這個問題的步驟:(1)開始遊戲(2)黑子先走(3)繪製畫面(4)判斷輸贏(5)輪到白子(6)繪製畫面(7)判斷輸贏(8)返回步驟 (9)輸出最後結果。
  • PHP面向對象
    1  介紹面向對象是一個編程思想。
  • 每周一書《深入淺出數據分析》分享!
    《深入淺出數據分析》以類似「章回小說」的活潑形式,生動地向讀者展現優秀的數據分析人員應知應會的技術:數據分析基本步驟、實驗方法、最優化方法、假設檢驗方法、貝葉斯統計方法、主觀概率法、啟發法、直方圖法、回歸法、誤差處理、相關資料庫、數據整理技巧;正文以後,意猶未盡地以三篇附錄介紹數據分析十大要務、R工具及ToolPak工具,在充分展現《深入淺出數據分析》目標知識以外,為讀者搭建了走向下一步深入研究的橋梁