教材一覧へ

Point2DとPoint3Dを実装する

課題2(コーディング レベル2)

課題のゴール

クラスの継承

2次元の点を表す Point2D と、それを継承した3次元の点を表す Point3D を実装しよう。

  1. Point2D.java に、x座標とy座標を扱うクラスを実装する。
  2. Point3D.java に、Point2Dを継承してz座標を追加したクラスを実装する。
  3. LMSで配布された PointMain.java を使って動作を確認する。
PointMain.java は修正・変更しないこと。

クラスの関係

extends
Point2Dx座標・y座標
↓ 継承する
extends Point2D
Point3Dx座標・y座標 + z座標

Point3Dは、Point2Dが持つx座標とy座標の機能を受け継ぎ、z座標に関するフィールドとメソッドを追加します。

Point2Dの仕様

2次元
種類宣言役割
フィールドprivate double xx座標を格納
フィールドprivate double yy座標を格納
コンストラクタPoint2D(double x, double y)xとyを初期化
メソッドdouble getX()xの値を返す
メソッドvoid setX(double x)xへ値を設定
メソッドdouble getY()yの値を返す
メソッドvoid setY(double y)yへ値を設定
メソッドdouble getDistance()原点からの距離を返す
メソッドString toString()(x, y) を返す

Point3Dの仕様

3次元
種類宣言役割
継承extends Point2DPoint2Dを継承
フィールドprivate double zz座標を格納
コンストラクタPoint3D(double x, double y, double z)親のx・yと自身のzを初期化
メソッドdouble getZ()zの値を返す
メソッドvoid setZ(double z)zへ値を設定
メソッドdouble getDistance()原点からの距離を返す
メソッドString toString()(x, y, z) を返す

提出前チェック

確認
  • フィールドx、y、zをすべて private にしている
  • Point3Dが Point2D を継承している
  • Point3Dのコンストラクタから親クラスのコンストラクタを呼んでいる
  • 各getter、setter、距離、文字列表現のメソッドを実装している
  • PointMain.javaを変更していない

実行して確認

実行イメージ
● ● ● Terminal
> javac -encoding utf8 Point*.java
> java PointMain
p2 = (2.0, 3.0)
|p2| = 3.605551275463989
p3 = (2.0, 3.0, 4.0)
|p3| = 5.385164807134504

Point2D.java

public class Point2D {
  private double x;
  private double y;

  public Point2D(double x, double y) {
    // フィールドx、yを引数で初期化する

  }

  public double getX() {
    // フィールドxの値を返す

  }

  public void setX(double x) {
    // フィールドxへ引数xの値を設定する

  }

  public double getY() {
    // フィールドyの値を返す

  }

  public void setY(double y) {
    // フィールドyへ引数yの値を設定する

  }

  public double getDistance() {
    // thisと原点との距離を返す

  }

  public String toString() {
    // 座標の文字列表現「(x, y)」を返す

  }
}

Point3D.java

public class Point3D extends Point2D {
  private double z;

  public Point3D(double x, double y, double z) {
    // スーパークラスのコンストラクタでx、yを初期化する

    // フィールドzを引数で初期化する

  }

  public double getZ() {
    // フィールドzの値を返す

  }

  public void setZ(double z) {
    // フィールドzへ引数zの値を設定する

  }

  public double getDistance() {
    // thisと原点との距離を返す

  }

  public String toString() {
    // 座標の文字列表現「(x, y, z)」を返す

  }
}

コンパイルと実行

Terminal
// 3つのJavaファイルを同じフォルダに置いて実行
javac -encoding utf8 Point*.java
java PointMain