0Pricing
Java Academy · Урок

Реализация

Превратите проектирование в работающий код: определите базовый класс, реализуйте конкретные фигуры и выведите результаты для смешанного списка.

«Реализация» — бесплатный урок Java Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 3 уроков всего.

Итоги плана

Мы создадим базовый Shape с area() и perimeter(), а затем добавим Circle и Rectangle. Используйте короткие имена, сохраняйте математические выражения понятными и предпочитайте небольшие вспомогательные методы для вывода.

Код: базовый класс и Circle

Базовый класс определяет программный интерфейс и небольшой вспомогательный метод 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
  }
}

Конструкторы и проверки

Конструкторы задают значения полей. Для начинающих добавьте проверку отрицательных (negative) входных значений и заменяйте их нулём. В реальных приложениях используют проверку данных или исключения, но здесь мы сохраним простоту.

Код: добавление Rectangle

Rectangle присоединяется к иерархии и использует тот же программный интерфейс. Обратите внимание: обе фигуры можно выводить одним и тем же кодом, потому что базовый класс определяет контракт.

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. Простой цикл может вывести каждый элемент. Для вывода на мобильном устройстве размещайте по одной фигуре в строке и форматируйте числа до двух знаков после запятой.

Код: небольшой отчёт

Отчёт: небольшой цикл выводит тип и сводные данные для каждой фигуры. Полиморфизм сохраняет цикл простым, а каждая фигура выполняет собственные математические вычисления.

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, добавили простые проверки и вывели небольшой отчёт из списка смешанных фигур. На следующем уроке — полиморфное поведение, например сортировка по area.

Часто задаваемые вопросы

Урок «Реализация» бесплатный?

Да — полный текст урока «Реализация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 3 уроков всего.

Чему я научусь в уроке «Реализация»?

Превратите проектирование в работающий код: определите базовый класс, реализуйте конкретные фигуры и выведите результаты для смешанного списка. Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Java Academy?

Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.

Сколько времени занимает урок «Реализация»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Java Academy?

Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Проектирование
  2. Реализация
  3. Полиморфное поведение
← Назад к Java Academy