0Pricing
Java Academy · レッスン

実装

設計を動作するコードに変換します。基底クラスを定義し、具象図形を実装し、混在したリストから結果を出力します。

「実装」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。

計画の復習

まずarea()とperimeter()を持つ基底のShapeを実装し、その後CircleとRectangleを追加します。名前は短く、計算は読みやすく保ち、出力には小さなヘルパーメソッドを優先して使います。

コード: 基底クラスとCircle

基底クラスはAPIと小さなinfo()ヘルパーを定義します。Circleは計算と、明確な出力のためのtoString()を実装します。

public class Main {
  // Base class with a tiny print helper
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() {
      return String.format("area=%.2f, per=%.2f", area(), perimeter());
    }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) {
      // simple guard to avoid negative sizes for beginners
      radius = (r < 0) ? 0 : r;
    }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
    public String toString() { return "Circle " + info(); }
  }

  public static void main(String[] args) {
    Shape s = new Circle(2.5);
    System.out.println(s); // prints Circle area/perimeter
  }
}

コンストラクターとガード

コンストラクターでフィールドを設定します。初心者向けに、負の入力は0に丸めて防ぎます。実際のアプリではバリデーションや例外を使いますが、ここではシンプルに保ちます。

コード: Rectangleを追加

Rectangleを階層に追加し、同じAPIを使います。基底クラスが契約を定義しているため、どちらの図形も同じコードで出力できる点に注目してください。

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = (r < 0) ? 0 : r; }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
    public String toString() { return "Circle " + info(); }
  }
  static class Rectangle extends Shape {
    double w, h;
    Rectangle(double w, double h) {
      this.w = (w < 0) ? 0 : w;
      this.h = (h < 0) ? 0 : h;
    }
    double area() { return w * h; }
    double perimeter() { return 2 * (w + h); }
    public String toString() { return "Rectangle " + info(); }
  }

  public static void main(String[] args) {
    Shape a = new Circle(3.0);
    Shape b = new Rectangle(4.0, 2.0);
    System.out.println(a);
    System.out.println(b);
  }
}

リストと出力

ShapeのリストにはCircleとRectangleを混在させられます。単純なループで各要素を出力できます。モバイル向けの出力では、1行に1つの図形を表示し、数値を小数点以下2桁で整形します。

コード: 小さなレポート

レポート: 小さなループで各図形の型と概要を出力します。ポリモーフィズムによってループは簡潔になり、各図形が独自の計算を提供します。

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String label() { return getClass().getSimpleName(); }
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = (r < 0) ? 0 : r; }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
  }
  static class Rectangle extends Shape {
    double w, h;
    Rectangle(double w, double h) { this.w = (w < 0) ? 0 : w; this.h = (h < 0) ? 0 : h; }
    double area() { return w * h; }
    double perimeter() { return 2 * (w + h); }
  }

  public static void main(String[] args) {
    Shape[] shapes = { new Circle(1.2), new Rectangle(2.0, 3.0), new Circle(0.5) };
    for (int i = 0; i < shapes.length; i = i + 1) {
      Shape s = shapes[i];
      System.out.println(s.label() + " -> " + s.info());
    }
  }
}

実装の確認

簡単な確認: この階層の各具象図形に必要なものはどれですか?

復習

復習: Shape、Circle、Rectangleを実装し、簡単なガードを追加して、混在したリストから小さなレポートを出力しました。次のレッスンでは、面積順の並べ替えのようなポリモーフィックな動作を扱います。

よくある質問

「実装」レッスンは無料ですか?

はい。「実装」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。

「実装」で何を学びますか?

設計を動作するコードに変換します。基底クラスを定義し、具象図形を実装し、混在したリストから結果を出力します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。

「実装」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 設計
  2. 実装
  3. ポリモーフィックな振る舞い
← Java Academyに戻る