オブジェクト指向プログラミング(OOP)スキルを学習または向上させるための優れた課題/タスク/演習[終了]


81

オブジェクト指向プログラミングのスキルを向上させるための良い課題は何ですか?

この投票の背後にある考え方は、どの演習がOOPの学習に役立つかについての考え方を提供することです。

課題は可能な限り言語にとらわれず、特定のライブラリをほとんどまたはまったく使用しないか、最も一般的なライブラリのみを使用する必要があります。投票がそのチャレンジのメリットだけに対応するように、回答ごとに1つのチャレンジのみを含めるようにしてください。必要なスキルのレベルが示されていれば、また、それが有用な演習である理由の背後にある理論的根拠も示されていれば素晴らしいでしょう。

課題の解決策は、「ハウツー...」の質問への回答として投稿し、ここからリンクすることができます。

例えば:

  • 課題-後入れ先出しスタックを実装する
  • スキルレベル-初心者
  • 理論的根拠-オブジェクトを参照する方法の経験を提供します

私の大学には必須の演習がありました。mp3ファイルを再生するJavaメディアプレーヤーを作成します。それは数週間にわたる課題であり、初心者にとっては素晴らしいことでした。それぞれのサンプルソリューションとユニットテストを含む8つの章がありました。コードの約70%が常に与えられており、章ごとに非常に具体的なタスクが1ダースほどありました。シンプルなUI、ファイルアクセス、設定の保存、継承とポリモーフィズムの使用、独自のクラスの追加、明らかにループと条件。それはあなたが始めたいと思ったすべてを持っていました。悲しいことに、それは著作権で保護されています-__-私は終わった後に私自身の機能を追加しました。
Heinzlmaen

回答:


43

オブジェクト指向設計でスキルを構築することは、役に立つかもしれない無料の本です。

[編集:元の本はビットロットされているようです(すべての形式で404)が、インターネットアーカイブにはHTMLPDFMOBIのバージョンがあります]

説明は次のとおりです。

「この本の目的は、オブジェクト指向設計の面白くて適度に複雑な一連の演習を提供することで、初心者の設計者を支援することです。この本は、管理者がオブジェクト指向ソフトウェア開発のプロセスにある程度の快適さを身に付けるのにも役立ちます。ビルドは些細なことよりも一歩進んでおり、慎重な検討と設計が必要になります。さらに、アプリケーションは本質的にレクリエーションであるため、興味深く魅力的です。この本を使用すると、読者はプロジェクトの期限前にオブジェクト指向設計のプロセスと成果物を調べることができます。良いデザインは不可能に思えます。」


1
私はこれを2番目に-本当に良い本。
ニコラアヌセフ2013年

14

やりがいのあるプログラムを一から書くます。何人かの人々(およそ5人、それは実行可能であるはずです)にそれを使用させるようにしてください。変更要求に応答します。

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


7
+1変更リクエストに応答する
bhathiya-perera 2014年

9

課題:選択したWebサイト/サービスAPIのラッパーを、選択した言語で記述します。これは、まだ存在していません(ZenDesk APIなど)記述し、C#で記述されラッパー)。他の人が使用できるように、ラッパーをオープンソースとしてリリースします。

スキルレベル:初級から中級

理論的根拠:サードパーティのWebサービスAPIを意味のあるオブジェクト/クラスのセットに外挿して、選択した言語でそのAPIを簡単に再利用できるようにする方法を学ぶ。


4

基本を学んだ後、「Gangoffour」デザインパターンブックを学びましょう。

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を使用して一般的なコーディングの問題に対する洗練されたソリューションを設計する方法を理解したいコーダーにとっては必読です。


7
GOFに敬意を表して、「デザインパターンの最初の頭」ははるかに楽しい読み物です。
CaptainHastings 2009

2
GOFは究極であり、私たちはそれを恐れるべきではありません。寝る前に毎日読んでください。
kta 2014年

3

手続き型で書かれたコードを取り、それをOOPベースのソリューションに変換してみてください。プロセス中に、リファクタリングとデザインパターンに関する本を参照してください。私の友人は、この方法でオブジェクト指向の概念を正確に理解する上で大きな一歩を踏み出すことができました。他の場合と同様に、これはすべての人に役立つとは限りません。



1

確かに良い課題は、「最初から始める」割り当てよりもアクセスしにくいですが、継承を使用しないか、継承をより多く使用するためにあまり使用しない既存のコードをリファクタリングすることです。リファクタリングのプロセスは、私の最新のプロジェクトで確かに持っているように、おっとの多くの利点と落とし穴を明らかにします。また、独自のオブジェクト指向設計を作成した過去のプロジェクトよりも概念をよく理解するようになりました。


0

与えられたタスクは「OOP」であることとはほとんど関係がなく、それはあなたがそれをどのように評価するかにかかっています。

リファクタリングの本の第3章を見て、ソリューションに悪いコードの臭いがないことを確認します。または、さらに重要なのは、該当するものを確認することです。

最も重要なのは、セッターとゲッターの存在に注意することです(クラスの値を操作していて、クラスに独自の値を操作するように依頼していないことを示します)。または、リスコフの置換原則を適用せずに「拡張」を使用します。それ。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.