コンピュータ基礎および演習II

演習問題

解答は

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

問題1

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

  1. 大学 - 私立大学
  2. 私立大学 - 東京電機大学
  3. 電大生 - 情報メディア学科の学生
  4. 情報メディア学科の学生 - 電大太郎

問題2

次のクラス定義は、 前回の4番目の例題で示したクラス Car である。

class Car{
    int position;
    int speed;

    Car() {
    this(0,0);
    }

    Car(int pos, int s){
    position = pos;
    speed = s;
    }

    /** t 秒後の位置を求める */
    int getPosition(int t){
    return position + speed * t;
    }
}

このクラスを継承し 目的地までの距離 (int distanceToDestination) という属性を追加し、 t 秒後に目的地までどの位の地点にいるかを求めるメソッド (int getRemainToDestination(int t)) を追加した サブクラス CarToDestination を定義しなさい。

メソッド main では、 CarToDestination を用いて車の動きのシミュレーションを行い、 1 秒ごとに車の位置と目的地までの残りの距離を表示するようにしなさい。

ファイル名は ForwardingCar.java とする。

問題3

あなたは、この冬休み、家で暖かくして映画を観るのは幸せかなと思い、 DVD Player を購入することにした。

でも置き場所の問題が...。 ここで、DVD Player は CD を聴くこともできることに気づき、 すでにある CD Player と置き換えることで場所の問題が解決した。

問題3-1

そもそも DVD Player でなぜ CD まで再生できるのだろうと考えていて、 DVD と CD ではメディアとしての類似点があることに気づいた。 ということで、DVD (DVD Video) と CD との共通点、相違点を列挙しなさい。 物理的形状に触れてもよいが、主にフォーマットやコンテンツの形式に着目すること。 なお、DVD には映画、CD には音楽が記録されているものとする。 ファイル名は DVD.txt とする。

問題3-2

前回の問題3-1では、クラス CD に以下の属性を用意した。

これらは、アーティストを映画監督と思えば DVD にも備わっている属性であるといえる。 ただし、DVD では主演俳優名(main actor)や制作国名(country)などの情報もあるとよい。 以上を踏まえ、クラス CD を継承したクラス DVD を定義しなさい。 次の問題3-3のファイル内に記述することになる。

class DVD extends CD {
    ...
    (クラス DVD 独自の属性、メソッド、コンストラクタ)
    ...
    (クラス CD の属性、メソッドはここに書かなくても使用できる)
    ...
}

問題3-3

クラス DVD のインスタンスを前回の問題2で作成した CD Player で load し再生してみなさい。 ファイル名は CDListener.java のままでよい。 DVD の再生は、各トラック(チャプター)のタイトルを表示すればよいこととする。

注: 現実には DVD のフォーマットは CD の上位互換ではないため再生できない。

問題3-4

DVD Player は CD も再生できることから、 CD Player の機能をほぼ包含していると考えることができる。 DVD Player と CD Player の共通点、相違点を列挙しなさい。 性質(属性、操作など)に着目すること。 ファイル名は DVDPlayer.txt とする。

問題3-5

クラス DVDPlayer を定義しなさい。クラス CDPlayer を継承させること。 DVD を入れたときには主演俳優名や制作国名が表示されるようにすること。 ファイル名は MovieLover.java とする。 クラス MovieLover の定義例を以下に示す。

class MovieLover {
    public static void main(String[] args) {
	DVDPlayer dvdPlayer = new DVDPlayer();

	// CD の生成
	String[] tracks = {"Whole Lotta Shakin' Goin' On", "It'll Be Me"};
	CD wholeLottaShakinCD = new CD(
		       "Jerry Lee Lewis",
		       "Whole Lotta Shakin' Goin' On", tracks);

	// DVD の生成
	String[] magicalChapters = {
	    "\"Magical Mystery Tour\" / Open",
	    "Richard B.Starkey & His Aunt Jessica",
	    "Good Morning Ladies & Gentelmen,Boys & Girls!",
	    "\"Fool On The Hill\"",
	    "Miss Winters / The Magic Begins",
	    "The Sarge",
	    "Magical Mystery Tour Marathon",
	    "\"Flying\"",
	    "The Magicians",
	    "Mr.Bloodvessel & Aunt Jessica",
	    "\"I Am The Walrus\"",
	    "Five Little Dickie Birds / Sitting On Your Head",
	    "Aunt Jessie's Dream",
	    "The Theatre",
	    "\"Blue Jay Way\"",
	    "Back On The Bus",
	    "I Wonder What The Magicians Are Cooking Up Now?",
	    "Accordion Medley",
	    "The Strip Show / \"Death Cab For Cutie\"",
	    "\"Your Mother Should Know\"",
	    "\"Magical Mystery Tour\" / End Credits "
	};
	DVD magicalDVD = new DVD("The Beatles",          // Director
				 "Magical Mystery Tour", // Title
				 "The Beatles",          // Main Actor
				 "United Kingdom",       // Country
				 magicalChapters);

	dvdPlayer.load(wholeLottaShakinCD);
	dvdPlayer.play();
	dvdPlayer.eject();
	
	dvdPlayer.load(magicalDVD);
	dvdPlayer.play();
	dvdPlayer.eject();
    }
}

この実行例は以下の通り。

$ java MovieLover
Artist: Jerry Lee Lewis
Title: Whole Lotta Shakin' Goin' On
 now playing: Whole Lotta Shakin' Goin' On
 now playing: It'll Be Me
 ejected.
Title: Magical Mystery Tour
Director: The Beatles
Country: United Kingdom
Main Actor: The Beatles
 now playing: "Magical Mystery Tour" / Open
 now playing: Richard B.Starkey & His Aunt Jessica
 now playing: Good Morning Ladies & Gentelmen,Boys & Girls!
 now playing: "Fool On The Hill"
 now playing: Miss Winters / The Magic Begins
 now playing: The Sarge
 now playing: Magical Mystery Tour Marathon
 now playing: "Flying"
 now playing: The Magicians
 now playing: Mr.Bloodvessel & Aunt Jessica
 now playing: "I Am The Walrus"
 now playing: Five Little Dickie Birds / Sitting On Your Head
 now playing: Aunt Jessie's Dream
 now playing: The Theatre
 now playing: "Blue Jay Way"
 now playing: Back On The Bus
 now playing: I Wonder What The Magicians Are Cooking Up Now?
 now playing: Accordion Medley
 now playing: The Strip Show / "Death Cab For Cutie"
 now playing: "Your Mother Should Know"
 now playing: "Magical Mystery Tour" / End Credits
 ejected.
$ 

DVD を入れる場合と CD を入れる場合とでは、 同じ load でも異なるメソッドが使われている。

なお、CD や DVD の内容は上記サンプルや友達とは異なるものにすること。

ヒント: クラス DVD はクラス CD を継承しているので、 DVD は CD の一種という扱いになっている。 DVD 固有の性質が不要な場合にはクラス CD の変数に代入してよい。

問題3-6 (余力のある人のみ)

DVD Player は市販ソフトを観ることはできるが、 テレビ放送を録画することはできない。 そこで、テレビチューナーとハードディスクを内蔵した DVD Player (HDD Recorder) にすることにした。 クラス HDDRecorder をクラス DVDPlayer から派生させて設計しなさい。