4.5 演習課題

鶏舎に(一羽だけ)飼っている にわとり に、エサであるトウモロコシを与えるモデルを作成する。

以下、全てのクラスファイルはパッケージ cage 階層下に構成される。 cage/*.class

パッケージ cage のクラス階層図と各インターフェース・サブクラスのドキュメントはここから参照(cageパッケージについて、javadocで生成した

※各自のJavaの作業用のディレクトリに移動し、その下にサブディレクトリ(フォルダ) cageを作成しなさい。 javaファイルは全てcage内に作成しなさい。(パッケージcageとして管理するため)


【手順1】「基本のインターフェイス(動物、生存条件、餌、鶏舎)の設計」

  1. 動物インターフェースを作成しなさい。クラスファイル Animal.class
  2. 飼料インターフェースを作成しなさい。クラスファイル Fodder.class
  3. 鶏舎インターフェースを作成しなさい(Fodderクラスを利用する)。クラスファイル House.class
  4. 成長インターフェースを作成しなさい(Houseクラスを利用する)。クラスファイル Growth.class
  5. 基本インターフェース間の継承関係が正しく定義されていることを、コンパイルしてクラス生成し確かめなさい。

【手順2】「トウモロコシ・クラスの設計(飼料インターフェースから継承)」

  1. トウモロコシ・クラスを作成しなさい。クラスファイル Corn.class
  2. これは、飼料インターフェース(Fodder)から継承して実装する。
  3. "単位量あたりエネルギー値" 既定=200 とする。
  4. トウモロコシ・クラスが正しく生成されることを、コンパイルして確かめなさい。 

【手順3】「飼育動物・抽象クラスの設計(動物+成長インターフェースから多重継承)」

  1. 飼育動物・抽象クラスを作成しなさい。クラスファイル Breeding.class
  2. これは、動物+成長インターフェースを多重継承して実装する。
  3. "生存しているか否かの判定の実装" weight > 0 の時、生きている(TRUE)、そうでなければ生存していない(FALSE)
  4. 飼育動物・抽象クラスが正しく生成されることを、コンパイルして確かめなさい。

【手順4】「にわとり・クラスの設計(飼育動物・抽象クラスから継承)」

  1. にわとり・クラスを作成しなさい。クラスファイル Chicken.class
  2. これは、飼育動物・抽象クラスを継承して実装する。
  3. "コンストラクタ"の実装時、 「孵化した時点では20グラム」を日数=0の時の体重とみなす。
  4. "鶏舎環境における成長の1ステップ"の実装 与えられた飼料を食べて → 生存ステップを+1する の繰り返し。
  5. "与えられた飼料によってどの程度成長するか" つまりステップ毎の体重増減は以下のカロリー摂取・消費の関係にある。
    weight += (飼料エネルギーの総和 − (現在の体重[グラム]+10)) / 10
  6. にわとり・クラスが正しく生成されることを、コンパイルして確かめなさい。

【課題1】一羽のにわとりを飼育するクラス CageTestの作成 クラスファイル CageTest.class

  1. 毎日、飼料(トウモロコシ)を単位量=4与えて、一羽のにわとりを飼育する。
  2. このクラスは、鶏舎インターフェース(House)から継承して実装する。
  3. 飼育対象となるにわとりは一羽、インスタンス名 chicken
  4. シリアルナンバーは "SNC00001" とする。
  5. 日々与えるトウモロコシ飼料の単位量=4
  6. 鶏舎環境下における1ステップあたりの日数=1日
  7. 日々のにわとりの状態の、標準出力への表示形式 "S/N=" + name + ":day=" + age + ":weight=" + weight + "g"
  8. 1ステップ(1日)で、状態出力は1行。
  9. main()メソッドで、 実際の飼育処理を開始する。飼育期間は30日間。その間に生存できなくなったら処理を中断する。
  10. 上記(1)〜(9)の仕様に基いた、クラス CageTest を作成し、クラス生成せよ。
  11. 他の生成したクラスとともに、30日間の飼育状況がシミュレートされるか、動作を確認せよ(30日経過後、約750g程度まで成長する)

【実行例】

・飼育条件: トウモロコシ飼料単位量あたりのエネルギー値=200、にわとりの日数0における体重=20グラム、毎日飼料を4単位与える、シリアルナンバー="SNC00001"、1日/ステップ、30日間飼育、体重増減のカロリー摂取・消費関係は以下の通り。

   weight += (飼料エネルギーの総和 − (現在の体重[グラム]+10)) / 10

・上記の飼育条件の下での30日間の状態は、以下のようになる。(30日経過後、753グラムまで成長した。)

・実行コマンド $java -classpath . cage/CageTest

S/N=SNC00001:day=1:weight=97g
S/N=SNC00001:day=2:weight=166g
S/N=SNC00001:day=3:weight=228g
S/N=SNC00001:day=4:weight=284g
S/N=SNC00001:day=5:weight=334g
S/N=SNC00001:day=6:weight=379g
S/N=SNC00001:day=7:weight=420g
S/N=SNC00001:day=8:weight=457g
S/N=SNC00001:day=9:weight=490g
S/N=SNC00001:day=10:weight=520g
S/N=SNC00001:day=11:weight=547g
S/N=SNC00001:day=12:weight=571g
S/N=SNC00001:day=13:weight=592g
S/N=SNC00001:day=14:weight=611g
S/N=SNC00001:day=15:weight=628g
S/N=SNC00001:day=16:weight=644g
S/N=SNC00001:day=17:weight=658g
S/N=SNC00001:day=18:weight=671g
S/N=SNC00001:day=19:weight=682g
S/N=SNC00001:day=20:weight=692g
S/N=SNC00001:day=21:weight=701g
S/N=SNC00001:day=22:weight=709g
S/N=SNC00001:day=23:weight=717g
S/N=SNC00001:day=24:weight=724g
S/N=SNC00001:day=25:weight=730g
S/N=SNC00001:day=26:weight=736g
S/N=SNC00001:day=27:weight=741g
S/N=SNC00001:day=28:weight=745g
S/N=SNC00001:day=29:weight=749g
S/N=SNC00001:day=30:weight=753g

 


【課題2】 60日間飼育するクラス CageTest の作成

  1. 上記のクラスを修正し、60日間まで飼育するようにせよ。
  2. 最終的に、このにわとりは 何グラムまで成長して カロリー摂取・消費が均衡するようになるか。
  3. 2キログラム以上のにわとりに成長させるためには、毎日 何単位量 の飼料を与えなければならないか。

 


2003年10月21日 13:02 更新