2008-09-12 18 views
68

オブジェクト指向プログラミングのスキルを向上させるためには、どのような課題がありますか?オブジェクト指向プログラミング(OOP)スキルの学習または改善のための優れた課題/タスク/練習

このアンケートの背景にあるアイデアは、どの演習がOOPの学習に役立つかというアイデアを提供することです。

チャレンジはできるだけ言語に依存せず、特定のライブラリをほとんどまたはまったく使用しないか、最も一般的なライブラリのみを使用する必要があります。答えごとに1つの挑戦だけを含めるようにしてください。投票は、その挑戦だけのメリットに対応します。必要なスキルのレベルが示されていれば、またそれがなぜ有用な運動であるかの背後にある理論的根拠があれば、いいでしょう。

この問題への解決策は、「方法」の質問への回答として掲載し、ここからリンクすることができます。例えば

  • チャレンジ -
  • 理論的根拠を初心者 - -
  • スキルレベルは後入れ先出しスタックを実装するには、オブジェクト

答えて

39

Building Skills in Object-Oriented Designは無料の本です。説明は次のとおりです

"この本の目的は、初心者のデザイナーがOO設計で面白くてやや複雑な練習をすることによって助けてくれることです。 OOソフトウェアの開発については、私たちが構築するアプリケーションは些細なことではなく、慎重な考えと設計が必要となるでしょう。プロジェクトの締め切り前にOO設計のプロセスと成果物が優れた設計を不可能に見せている」

+1

私はこれをもう一度 - 本当に良い本です。 –

1

を参照する方法の経験を与えます確かに、「最初から始めよう」という割り当てよりもアクセスしにくいのは良いことですが、継承を使用していないか、または継承を使用していない既存のコードをリファクタリングすることです継承の使用。リファクタリングのプロセスは、私の最近のプロジェクトで私にとって確かに持つように、多くのメリットと不具合を露呈させるでしょう。また、私自身のオブジェクト指向設計を作成した過去のプロジェクトよりも優れたコンセプトを理解することができました。

8

課題:選択したWebサイト/サービスAPIのラッパーを、選択した言語で、既に存在しないもの(例:C#で書かれたZenDesk APIのラッパー)を作成します。他の人が使用できるように、オープンソースとしてラッパーを解放してください。

スキルレベル:中級

初心者

理由:簡単にあなたの選択した言語で、そのAPIの再利用を行う、オブジェクト/クラスの意味のセットにサードパーティのWebサービスAPIを推定する方法を学びます。

4

基本を学んだら、「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

これは古典的であり、一般的なコーディングの問題に対するエレガントなソリューションを設計するためにOOを使用する方法を理解したい任意のコーダーのために読まなければなりません。

+5

すべての点でGOFに敬意を表し、「デザインパターンの先頭」はもっと楽しいものです。 – CaptainHastings

+2

GOFは究極のものであり、私たちはそれを恐れるべきではありません。寝る前に毎日読む。 – kta

0

「OOP」であることとはほとんど関係がありません。それはあなたがそれをどのように評価するかです。

リファクタリングの第3章を見て、ソリューションに悪いコードの匂いがないことを確認します。または、もっと重要なことは、適用するものを参照してください。

最も重要なのは、クラスからの値を操作しており、クラスにそれ自身の値を操作するように要求していないことを示すセッタとゲッターの存在を監視するか、Liskov置換を適用せずに "extends"原則、そのようなもの。

3

手続き型のコードを作成し、それをOOPベースのソリューションに変換しようとします。その過程で、リファクタリングとデザインパターンに関する本を参照してください。私の友人は、オブジェクト指向の概念をこのように正確に理解するために大きな前進を成し遂げることができました。何かと同様に、これは誰にとってもうまくいかないかもしれません。

2

私はCRC cardsが良いOOデザインの学習、教授、および構築に非常に効果的であることを発見しました。

13

から挑戦的なプログラムを書くそれを使用するためにいくつかの人々(約5、それは行うことができる)を取得してみてください。変更要求に対応します。

プログラムのデザインを修正してください。小さいものから始め、それが成長するのを見てください。この成長を管理します。 これは難しいです。また、バグを修正して、時間の経過とともにそのことを維持する必要があります。これは私にとって非常に貴重な教訓でした。

+5

+1 **変更要求に応じて** –

関連する問題