レポートの書き方

課題1は全般的にプログラムが短く、解説がしづらいと思います。 しかし、こちらで提示したプログラムを全て解説する必要はありません。 そこで、 次のようにして説明するのはいかがでしょうか?

  1. 課題1-1 はプログラムの変更を許せば、非常に間単になります。 そこで、まず、プログラムの変更を許した場合を考え、どのような解答になるかを提示します。 但し、漫然と「Apple と同じようにした」ではだめです。 Apple と同様にしろ、自分で書いたプログラムは全て説明する必要があります。

    そして、Orange そのものの説明をした後、とりあえず、話のきっかけとして、 もし、改造できるとしたらどのようなプログラムになるかを説明します。

    例えば、itemList に関するプログラムを書いた場合、その itemList がどの ようなもので、どのような意図で使用したかを詳しく説明してください。

    次に、改造を避けるためのテクニックを説明します。

  2. 課題 1-2 はコマンドを追加する前半部分と、実際に畑を拡張する後半部分に分ることができます。 コマンドを追加する部分は、課題 1-1 と同様のテクニックに関しては課題1-1 と同様と書いて構いません。 但し、addMenu をすると、なぜコマンドが追加されるのかは説明する必要があ ります。

    実際に畑を拡張する後半部分は、アルゴリズムを図示すると説明が楽です。

  3. 課題 1-3 は本質的には課題 1-1 と同様なので、共通部分は 1-1 と同様で良 いです。 一方、異なる部分はきちんと説明しなければなりません。 特に garden.Condition を実装したクラスを作成しなければなりませんが、実 装する関数が、どのような働きで、どのように使われるかを説明して下さい。

    なお、これはこちらの反省ですが、配列を変数に入れてましたが、配列を getter で取得するようにすれば、 getter をオーバライドするだけで動くよ うにできました(テンプレートメソッド)。 次の問題の ParametricCondition を含め、この Condition クラスに対するあ るべき実装(例えば garden.AbstractCondition を作るなど)の議論をするので あれば、考察に書いてください。

  4. 課題1-4も、課題 1-1 と 課題1-3 と同様です。 ParametricCondition に対してはテストクラスを添付してますので、これが動 くように動作させ、各 Himawari,Asagao, Tomato でそれを使用するようにす れば完成します。 したがって、ここで重要なのは ParametricCondition の動作アルゴリズムで す。 (get と isOverage の機能の説明は既に 1-3 で済ませてあるので) このアルゴリズムも図示して説明して下さい。


坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科