解答は
- ホスト名: earth.mlab.im.dendai.ac.jp
- ディレクトリ: /home/submit/1I-Computer2/[今日の日付]/[学籍番号]
に提出しなさい。クラスファイル (〜.class) は提出しなくてよい。 提出には gFTP 等の ftp ソフトを用いること。
以下に挙げる各組み合わせについて、
a) 「クラスA - クラスAを継承したクラスB」の関係か
b) そう判断した理由
を述べなさい。解答は文章でファイル Q1.txt に記述すること。
次のクラス定義は、 前回の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 とする。
あなたは、この冬休み、家で暖かくして映画を観るのは幸せかなと思い、 DVD Player を購入することにした。
でも置き場所の問題が...。 ここで、DVD Player は CD を聴くこともできることに気づき、 すでにある CD Player と置き換えることで場所の問題が解決した。
そもそも DVD Player でなぜ CD まで再生できるのだろうと考えていて、 DVD と CD ではメディアとしての類似点があることに気づいた。 ということで、DVD (DVD Video) と CD との共通点、相違点を列挙しなさい。 物理的形状に触れてもよいが、主にフォーマットやコンテンツの形式に着目すること。 なお、DVD には映画、CD には音楽が記録されているものとする。 ファイル名は DVD.txt とする。
前回の問題3-1では、クラス CD に以下の属性を用意した。
これらは、アーティストを映画監督と思えば DVD にも備わっている属性であるといえる。 ただし、DVD では主演俳優名(main actor)や制作国名(country)などの情報もあるとよい。 以上を踏まえ、クラス CD を継承したクラス DVD を定義しなさい。 次の問題3-3のファイル内に記述することになる。
class DVD extends CD { ... (クラス DVD 独自の属性、メソッド、コンストラクタ) ... (クラス CD の属性、メソッドはここに書かなくても使用できる) ... }
クラス DVD のインスタンスを前回の問題2で作成した CD Player で load し再生してみなさい。 ファイル名は CDListener.java のままでよい。 DVD の再生は、各トラック(チャプター)のタイトルを表示すればよいこととする。
注: 現実には DVD のフォーマットは CD の上位互換ではないため再生できない。
DVD Player は CD も再生できることから、 CD Player の機能をほぼ包含していると考えることができる。 DVD Player と CD Player の共通点、相違点を列挙しなさい。 性質(属性、操作など)に着目すること。 ファイル名は DVDPlayer.txt とする。
クラス 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 の変数に代入してよい。
DVD Player は市販ソフトを観ることはできるが、 テレビ放送を録画することはできない。 そこで、テレビチューナーとハードディスクを内蔵した DVD Player (HDD Recorder) にすることにした。 クラス HDDRecorder をクラス DVDPlayer から派生させて設計しなさい。