2008-09-12 83 views
68

提高面向對象編程技能面臨的挑戰是什麼?面向學習或改進面向對象編程(OOP)技巧的良好挑戰/任務/練習

這次調查背後的想法是提供一個想法,哪些練習對學習OOP有用。

挑戰應該儘可能的與語言無關,要麼很少使用或不使用特定的庫,要麼只使用最常見的庫。儘量在每個答案中僅包括一個挑戰,以便表決將與單獨挑戰的優點相對應。如果所需的技能水平被指明,那也是很好的,也是爲什麼它是有用的練習背後的基本原理。

挑戰的解決方案可以發佈爲「如何...」問題的答案,並從這裏鏈接到該問題。

例如:

  • 挑戰 - 實現一個後進先出棧
  • 技能等級 - 初級
  • 理由 - 給出瞭如何引用對象

回答

39

Building Skills in Object-Oriented Design是可能有用的免費書。描述如下

「本書的目的是通過給OO設計一系列有趣和適度複雜的練習來幫助初學者設計本書還可以幫助管理人員提高程序的舒適度OO軟件開發的應用程序我們將要建立的應用程序是一個微不足道的步驟,需要一些仔細的思考和設計,另外,因爲應用程序在很大程度上是娛樂性的,所以它們很有趣且引人入勝。在項目截止日期之前進行面向對象設計的過程和工件使得好的設計看起來是不可能的。「

1

經驗當然,一個很好的挑戰雖然比「從頭開始」任務更難獲得,但是要重構一些現有的代碼,它們不使用繼承或者不使用太多的代碼來創建更大的代碼使用繼承。重構的過程將暴露oop的很多好處和陷阱,因爲它對我最近的項目肯定有好處。這也促使我比以往的項目更瞭解這些概念,並創建了自己的面向對象設計。

8

挑戰:用您選擇的語言爲您的網站/服務API編寫一個包裝,它不存在(例如用C#編寫的ZenDesk API包裝器)。將包裝器釋放爲其他人使用的開源代碼。

技能級別:初級到中級

理由:要了解如何推斷第三方Web服務API爲一個有意義的對象集/班,使該API的重用在你選擇的語言更容易。

4

學完基礎知識後,學習「四人幫」設計模式書。

http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1221488916&sr=8-1

這是一個經典,一個必須閱讀誰想要了解如何使用面向對象的優雅設計解決方案常見的編碼問題的任何編碼器。

+5

對於GOF的所有應有的尊重,「以設計模式爲首」是一個更愉快的閱讀。 – CaptainHastings 2009-07-24 20:58:00

+2

GOF是最終的,我們不應該爲此擔心。每天在睡覺前閱讀。 – kta 2014-03-24 04:45:17

0

一個給定的任務與「OOP」很少有關,更多的是如何對它進行評分。

我會看看重構書第3章,並確保解決方案中不存在任何不良的代碼氣味。或者,更重要的是,重複那些適用的。

最重要的是,請注意setter和getters的存在(表明您正在使用一個類的值並且不要求該類對其自己的值進行操作) - 或者使用「extends」而不應用Liskov替換原理,這樣的東西。

3

採取程序式的書面代碼,並嘗試將其轉換爲基於OOP的解決方案。在此過程中,請參閱有關重構和設計模式的書籍。我的一位朋友能夠以這種方式正確理解面向對象的概念。與任何事情一樣,這可能不適用於所有人。

2

我發現CRC cards在學習,教學和建設良好的面向對象設計方面非常有效。

13

編寫一個具有挑戰性的程序從零開始。試着讓一些人(大約五個,這應該是可行的)來使用它。迴應他們的變更請求。

適應您的程序設計。從小開始,然後看它成長。管理這種增長。 這很難。你也將不得不修復錯誤並保持一段時間,這對我來說是一個非常寶貴的教訓。

+5

+1 **迴應他們的變更請求** – 2014-10-22 06:40:23