Javaプログラミング基礎

演習問題 (中級〜上級)

解答は

に提出しなさい。ソースファイル (〜.java) のみを提出。 提出は gFTP 等の ftp ソフトを用いて行う。

問題1

前回の問題 で、オブジェクト指向の考え方を用いた ボールのアニメーションのプログラムを作成した。

問題1-1

このプログラムを改造し、 2つのボールが移動するようなプログラムとしなさい。 この問題では、ボール同士がぶつかった際に跳ね返るなどの ボール間の相互作用は考える必要はない。 ファイル名は BallSimulation2.java とする。

このプログラムの大枠は次のようになる。 適切なコンストラクタについても考えること。

class BallSimulation2 {
    public static void main(String[] args) {

        Ball ball1 = new Ball( ...... );
        Ball ball2 = new Ball( ...... );

        while(true) {

            // ball1 と ball2 が移動するようなプログラムを書く

        }
    }
}

class Ball {

    // クラス Ball の内容をここに書く

}

問題1-2

前の問題1-1のプログラムを改造し、 2つのボールが相互作用するようなプログラムとしなさい。 メソッド main のあるクラス名は BallSimulation3 とし、 ファイル名は BallSimulation3.java とする。 2つのボール同士の相互作用とは、 ボール同士がぶつかった際に方向に応じて跳ね返ることなどが考えられる。

クラス Ball に相互作用を実現するようなメソッドを追加し、 メソッド main 側も適切に変更すること。

このような複雑な問題では、 「座標」や「2次元方向の移動速度」を表わすようなクラスを新たに作成し、 クラス Ball 内で使うと良いかもしれない。

問題1-3

前の問題1-2の考え方に基づき、 10個や100個のボールが相互作用するように拡張することを考える。 問題1-2で作成したプログラムを元に、 数多くのボールを扱えるように改良しなさい。 メソッド main のあるクラス名は BallSimulation4 とし、 ファイル名は BallSimulation4.java とする。

これを実現するには、 クラス Ball のオブジェクトを配列にする方法が考えられる。

問題2

問題2-1

前回出題の問題2 の達成状況が大変良くないので、 引き続きこの問題 (問題2-1〜2-3) に取り組みなさい。

先週の締め切りまでに提出した人とは評価は異なるが、 今回達成できれば一定の評価を与えることとする。

問題2-2

前回出題の問題2-3 で示した3つの機能をすべて実現するようにしなさい。 機能拡張したクラスの名前は、新たに PrimitiveArrayListPlusPlus とする。

実現すべき機能は以下のものである。

クラス PrimitiveArrayListPlusPlusUser に、メソッド main を作成し、追加機能の動作を示すようにメソッドを実行しなさい。プログラム全体のファイル名は PrimitiveArrayListPlusPlusUser.java とする。