Javaプログラミング基礎

演習問題

解答は

に提出しなさい。クラスファイル (〜.class) は提出しなくてよい。 提出には gFTP 等の ftp ソフトを用いること。

問題1

以下に挙げる A → B の各組み合わせについて、その関係とそう判断した理由を述べなさい。 解答は文章でファイル Q1.txt に記述すること。

  1. A:「雑誌」→ B:「広告ページ」
  2. A:「タワー」→ B:「東京タワー」
  3. A:「動物」→ B:「哺乳類」
  4. A:「パソコン」→ B:「内蔵ハードディスク」
  5. A:「自動車メーカ」→ B:「BMW社」

関係の選択肢:

問題2

例題で取り上げたジュークボックスの クラス JukeBox と、クラス Music を使って、 適当なメソッド main の内容を定義し、 様々な曲を次々と演奏する様子を表わすプログラムを書きなさい。 曲の情報は各自の普段良く聞いている曲の情報にすること。

メソッドmainのあるクラスをJukeBoxListenerとし、 ファイル名をJukeBoxListener.javaとすること。

問題3

円柱(cylinder)を表すクラスを定義しなさい。 クラス名は Cylinder とする。

円柱は、底面と側面からできている。 つまり、円柱と底面、円柱と側面の関係は、包含 (has-a) の関係である。 底面は円(circle)であり、側面は長方形(rectangle)である。 クラス Circle とクラス Rectangle を定義し、 これらを属性として持つようなクラス Cylinder を作成し、 円柱の体積を求めるメソッドと表面積を求めるメソッドを作成しなさい。

クラス Circle に面積と円周、 クラス Rectangle に面積を求めるメソッドを実装し、 クラス Cylinder で体積や表面積を求めるときにそれらを用いること。

なお、数値はすべて整数でよい。 円周率は3でよいが、Math.PI とするとπにもっとも近い double 値が得られる(参考)。

メソッドmainのあるクラスをCylinderPropertiesとし、 ファイル名をCylinderProperties.javaとする。 プログラムの大枠は次のとおり。

class CylinderProperties {
    public static void main(String[] args) {
	int radius = 5;
	int height = 10;
	Cylinder cylinder = new Cylinder(radius, height);
	System.out.println("円柱(半径=" + radius + ", 高さ=" + height + ")の");
	System.out.println(" 体積は" + cylinder.volume());
	System.out.println(" 表面積は" + cylinder.surfaceArea());
    }
}

class Cylinder {
    クラス Circle のオブジェクトとクラス Rectange のオブジェクトを属性に持ち、
    これらを用いて表面積と体積を求めるような
    円柱を表わすクラスの定義を書く
}

class Circle {
    円を表わすクラスの定義を書く
}

class Rectangle {
    長方形を表わすクラスの定義を書く
}

問題4

例題で定義したクラス Music の曲を再生することができる、 携帯音楽プレーヤのクラス MobileMusicPlayer を考える。 なお、今回作成する携帯音楽プレーヤには一曲だけ曲をダウンロードできるとする。

携帯音楽プレーヤ (class MobileMusicPlayer) は、 次のようなクラスであるとする。

必要に応じて適当なコンストラクタを宣言しても良い。

クラス MobileMusicPlayer を定義し、 次のプログラムが正しく実行できるようにして提出しなさい。 (ファイル名: MobileMusicListener.java)

class MobileMusicListener {
    public static void main(String[] args) {
        MobileMusicPlayer myIPod = new MobileMusicPlayer();
        Music song = new Music("Take On Me", "a-Ha");

        myIPod.download(song);
        myIPod.play();
    }
}

class MobileMusicPlayer {
    Music song;

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

class Music {
    // 上で定義したクラス Music の内容と同様
}

このプログラムを実行したときの結果の例は次のようなものである。

$ java MobileMusicListener
Take On Me (a-Ha) がダウンロードされました
Take On Me (a-Ha) を演奏中です

問題5 (中級者向け: 余力のある人のみ行う課題)

前の問題と同様に Music クラスを利用し、 CDを表すクラス (class CD) を定義しなさい。 CD には複数の曲が含まれるので、 CD に含まれる曲は Music クラスの配列で表す。 曲番号 (トラック番号) は 0 から数えるものとする。

クラス CD には、少なくとも以下の属性、コンストラクタ、メソッドがあるものとする。

ここで定義したクラス CD の使用例は、以下のようになる。

        CD cd = new CD("Pet Sounds", "The Beach Boys", 2);
        Music track0 = new Music("Wouldn't it be nice", "The Beach Boys");
        cd.setTrack(0, track0);
        Music track1 = new Music("God only knows", "The Beach Boys");
        cd.setTrack(1, track1);

メソッドmainのあるクラスを CDManager とし、 ファイル名をCDManager.javaとすること。

余力のある人は、トラック番号を指定せずに曲を登録できるメソッドも作成しなさい。 最初に登録した曲が 0 曲目、次に登録した曲が 1 曲目、と自動的に割り当てられることになる。