2010-05-24 45 views

回答

2

練習,廣泛閱讀,多練習。

特別與他人審查和評論方法。

閱讀不僅應該涵蓋OOD,還應該包含模式來了解其他人如何解決常見問題。

4

沒有步驟,它不是一個過程。

0

有一些初步措施:

  • 瞭解OOD(一般)
  • 理解問題/應用領域(功能規範)
  • 有一個高層次的/建築設計:知道你可以用什麼O/S,庫,框架等

然後我用的混合自上而下和自下而上的發展:

  • 自上而下:決定我想什麼組件,什麼的API(對象接口),有以實現應用程序(然後,下發展這些API)

  • 自下而上:決定如何通過添加新方法和新類型的對象(有時將大對象拆分爲幾個較小的對象)來爲現有API(對象接口)添加新功能。

2

這是一個很多的練習。首先要讓你的思維圍繞着對象的工作方式 - 尤其是如果你是程序員。

練習製作很多小物件 - 我從來沒有看到有太多物件的系統;這是可能的,但我從來沒有見過它。當你需要將多個對象合併成一個對象時,這應該是非常明顯的,但是當一個對象被分解時,它不那麼明顯。

要求對象做某件事,不要要求它的數據。儘量避免吸氣和安裝者,並專注於你要求它對數據做些什麼的方法。如果你看到類似oa = o.b + oc或o.setA(o.getB()+ o.getC()的代碼,你就會犯這樣的錯誤:

不斷嘗試重構重複。直到沒有(或者儘可能少的)這對於你的面向對象設計技能來說可能比其他任何實踐都要多,當你知道更多的知識時,嘗試重構你認爲你以前可能不會重構的東西。像一個模式可能可以重構。比如這裏有一個非常簡單的例子 - 如果你有行代碼,看起來像這樣:

a = b + c * d; 
g = h + i * d; 

機會是存在着巨大的重構你的代碼,即使它看起來並不像它蝙蝠失蹤。你可能會丟失一個可以容納a,b,c的對象,而第二個實例可能容納g,h,i,創建這些對象之後,一堆東西會影響你的新對象。學習認識這樣的新機會至關重要。

我已經進行了20多年的編程,超過一半的時間都是面向對象,似乎每隔幾年我就會知道這一切 - 一年後,我回頭看看並認識到多麼無知我曾是。

1

第一步是面向對象分析 - 其目標是確定構成系統的對象以及它們如何相互作用;根據這些知識,您可以指定對象的行爲(接口方法),然後指定內部結構(對象所需的數據成員是什麼)

設計過程產生許多圖 - 這些工具是應該幫助制定系統的細節:

首先出現一組'用例' - 用例是系統實現的場景的口頭描述(一個應該選擇最多實質性的);這些被用來識別應該映射到系統類的主要參與者和概念。然後通過制定「對象交互圖」,「類圖」和「序列圖」來細化這種理解,有時狀態圖用於視覺狀態機 - 這些圖是用於更好地理解系統的工具,因此,您對系統編寫類頭文件/類定義有足夠的瞭解。沒有固定的規則,這些圖中的一個首先出現,這些被適當地使用。

我發現下面的書非常有用:由格雷迪Booch的

面向對象分析和設計應用程序(第二版)

書經過一步設計的幾個例子系統步的處理(我認爲閱讀這些示例系統的設計過程就足夠了);一個小問題是,本書中使用的符號有點過時:現代的做法是使用UML符號表示圖表,但本書仍使用舊的Booch符號。本書的重點在於它總是通過具體的例子來解釋每個概念。