以下のプログラムを作成せよ。
Review01
Review01a
二次元座標上の位置を表すクラス Point をパッケージ j2.lesson14 に作成しなさい。
下記のコンストラクタ、メソッドを用意すること。
- public Point(double x, double y)
- 2次元座標上の位置を表すインスタンスを作成する。
- 引数:
- x - X座標
- y - Y座標
- public double distance(Point p)
- このインスタンスが表す点と、引数に取ったインスタンスが表す点の距離を計算し、返す。
- 引数:
- p - 距離を計算する対象の点
- 戻り値 - このインスタンスから p までの距離
また、フィールドを作成する場合は クラス外からアクセスできないようなアクセス修飾子を設定すること。
Review01b
Review01a で作成した Point クラスを使用してなにかプログラムを作成しなさい。
Review02
Review02a
図形を表すインターフェース Polygon をパッケージ j2.lesson14 に作成しなさい。
このインターフェースでは、次のメソッドを定義すること。
- double area()
- この図形の面積を計算して返す。
- 戻り値 - この図形の面積
- double perimeter()
- この図形が持つ全ての辺の長さの合計を返す。
- 戻り値 - 全ての辺の長さの合計
Review02b
長方形を表すクラス Rectangle をパッケージ j2.lesson14 に作成しなさい。
このクラスは Review02a で用意した j2.lesson14.Polygon インターフェースを実装すること。
また、j2.lesson14.Polygon で定義したメソッドに加え、次のコンストラクタを用意すること。
- public Rectangle(double width, double height)
- 幅と高さを指定して、長方形を表すインスタンスを作成する。
- 引数
- width - この長方形の幅
- height - この長方形の高さ
j2.lesson14.Polygon で定義しているメソッドについては、j2.lesson14.Polygon の仕様に合わせて設計すること。
また、フィールドを作成する場合は クラス外からアクセスできないようなアクセス修飾子を設定すること。
Review02c
三角形を表すクラス Triangle をパッケージ j2.lesson14 に作成しなさい。
このクラスは Review02a で用意した j2.lesson14.Polygon インターフェースを実装すること。
また、j2.lesson14.Polygon で定義したメソッドに加え、次のコンストラクタを用意すること。
- public Triangle(double a, double b, double c)
- 三角形の各辺の長さを指定して、三角形を表すインスタンスを作成する。
- 引数
- a - 三角形の辺 a の長さ
- b - 三角形の辺 b の長さ
- c - 三角形の辺 c の長さ
j2.lesson14.Polygon で定義しているメソッドについては、j2.lesson14.Polygon の仕様に合わせて設計すること。
また、フィールドを作成する場合は クラス外からアクセスできないようなアクセス修飾子を設定すること。
Review02d
直角柱を表すクラス Prism をパッケージ j2.lesson14 に作成しなさい。
このクラスは、次のコンストラクタ、メソッドを用意すること。
- public Prism(Polygon base, double height)
- 底面と高さを指定して、指定した底面と高さを持つ角柱を作成する。
- 引数:
- base - 底面
- height - 高さ
- public double surfaceArea() {
- このインスタンスが表す立体の表面積を計算して返す。
- 戻り値 - この立体の表面積
- public double volume() {
- このインスタンスが表す立体の体積を計算して返す。
- 戻り値 - この立体の体積
Review02e
下記を参考に、Review01a,b,c,d で作成したプログラムを実際に使用したプログラムを作成せよ。また、その動作について考察せよ。
// 三角柱を作成する Polygon triangle = new Triangle(3.0, 4.0, 5.0); Prism triPole = new Prism(triangle, 3.0);
// 直方体を作成する Polygon rectangle = new Rectangle(6.0, 7.0); Prism cuboid = new Prism(rectangle, 4.0);
Review03
Review03a
下記のクラス AbstractReceipt をパッケージ j2.lesson14 に作成し、このクラスの各メソッドについて考察せよ。
package j2.lesson14; public abstract class AbstractReceipt { private final String[] names; private final int[] costs; private int itemCount; // コンストラクタ public AbstractReceipt() { super(); this.names = new String[5]; this.costs = new int[5]; this.itemCount = 0; } // レシートに商品を追加する public void addItem(String name, int cost) { this.names[this.itemCount] = name; this.costs[this.itemCount] = cost; this.itemCount++; } // レシートを表示する public void show() { // show レシート上部 showHeader(); // show レシートの中身 showBody(); // show レシート下部 showFooter(); } // 合計金額を取得 public int getTotalAmount() { // return total of costs[0..itemCount] int total = 0; for (int i = 0; i < this.itemCount; i++) { total += this.costs[i]; } return total; } // レシートの中身を表示する (共通なのでここで定義する) protected void showBody() { // for i = 0 .. itemCount - 1 for (int i = 0; i < this.itemCount; i++) { // print names[i], 改行 System.out.println(this.names[i]); // print " " + costs[i] + "円", 改行 System.out.println(" " + this.costs[i] + "円"); } // print 改行 System.out.println(); // print "合計:" + 合計金額 + "円" System.out.println("合計:" + getTotalAmount() + "円"); } // レシート上部を表示する (ここでは定義しない) protected abstract void showHeader(); // レシート下部を表示する (ここでは定義しない) protected abstract void showFooter(); }
Review03b
Review03a で用意した AbstractReceipt クラスを継承し、show() メソッドを呼び出すと次のような表示
ほげ書店 TEL:03-xxxx-yyyy ---------------- (showBody()と同じ出力) ---------------- ありがとうございました。
をするクラス HogeBooksReceipt をパッケージ j2.lesson14 に作成しなさい。
Review03c
Review03b で作成した HogeBooksReceipt を使用し、次のような表示をさせよ。また、動作について考察せよ。
ほげ書店 TEL:03-xxxx-yyyy ---------------- JLS, 2nd 5755円 JVMS, 2nd 4200円 合計:9955円 ---------------- ありがとうございました。
Review04
コンソールから入力された行を逆順に表示するプログラム LineReversePrint クラスをパッケージ j2.lesson14 に作成しなさい。
このプログラムでは、コンソールからドット「.」一文字のみの入力行が来るまで次々と文字列を入力させ、最後に入力された行から逆順にコンソールに表示する。表示する際は、ドット「.」一文字のみの行はコンソールに表示しない。
つまり、"a", "b", "c", "." と入力すると、
c b a
と出力されるようなプログラムである。
Review05
テキストファイルの内容をコンソールに表示するプログラム FileToConsole クラスをパッケージ j2.lesson14 に作成しなさい。
このプログラムでは、まずテキストファイル名をコンソールに入力させ、入力されたファイルの内容をコンソールに表示する。
ただし、ファイルが開けなかった場合には「(ファイル名)が開けませんでした」と表示しプログラムを終了させること。
Review06
Review06a
次のような表示を持つプログラム Counter クラスをパッケージ j2.lesson14 に作成しなさい。
Review06b
Review06a で作成したプログラムを下記のように改造しなさい
- up ボタンが押された場合に、表示されている数字を 1 増やす
- down ボタンが押された場合に、表示されている数字を 1 減らす
AbstractAction を継承する方法ではなく、ActionListener を実装する方法で実現せよ。