0Pricing
Java Academy · レッスン

設計

階層を計画します。抽象基底クラスを選び、具象図形を列挙し、フィールドとメソッドを決め、シンプルなポリモーフィック操作を定義します。

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

目標と範囲

目標: 抽象的な基底クラス(Shape)と、いくつかの具象図形(Circle、Rectangle)を使った小さな図形階層を構築します。まず共通の操作を設計し、その後、小さなコードプロトタイプで計画を確認します。

図形とフィールド

図形: Circle(radius)、Rectangle(width、height)。フィールドは必要な場所にだけ持たせます。radiusはCircleに、widthとheightはRectangleに定義します。基底クラスが持つのはすべてのフィールドではなく、動作の契約です。

操作とポリモーフィズム

共通の操作はarea()とperimeter()です。これらをShapeで宣言すれば、どのShapeでも呼び出しに応答できます。その後、ShapeのリストにCircleとRectangleを混在させ、同じ方法で処理できます。

コード: APIのスケッチ

プロトタイプ1: areaとperimeterを持つShapeと、単純なCircleを定義します。これにより、共有APIが1つの具象型で機能することを確認します。

public class Main {
  // Minimal API sketch to validate the design
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
  }

  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = r; }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
  }

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

コレクションとレポート

後ほど図形をリストに格納し、型、面積、周長などの概要を出力します。小さなフォーマッターでモバイル上でも読みやすく表示します。1行に1つの図形を表示し、小数点以下2桁に丸めます。

コード: 図形のリスト

プロトタイプ2: Shapeの1つの配列にCircleとRectangleを混在させ、それぞれを出力します。基底クラスのメソッドにより、統一して処理できます(ポリモーフィズム)。

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() {
      // default helper for neat printing
      return String.format("area=%.2f, per=%.2f", area(), perimeter());
    }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = 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; this.h = 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[] arr = { new Circle(2.0), new Rectangle(3.0, 4.0) };
    for (int i = 0; i < arr.length; i = i + 1) {
      System.out.println(arr[i]);
    }
  }
}

基底クラスの確認

簡単な確認: このプロジェクトで抽象Shape基底クラスに含めるべきものはどれですか?

復習

復習: 基底クラスはareaとperimeterを宣言します。サブクラスは図形固有のデータを保持し、計算を実装します。Shapeのリストを使えば、1つのループで混在した図形を出力できます。

よくある質問

「設計」レッスンは無料ですか?

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

「設計」で何を学びますか?

階層を計画します。抽象基底クラスを選び、具象図形を列挙し、フィールドとメソッドを決め、シンプルなポリモーフィック操作を定義します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

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

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

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

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

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

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