0Pricing
Java Academy · Урок

Проектирование

Спланируйте иерархию: выберите абстрактный базовый класс, перечислите конкретные фигуры, определите поля и методы и задайте простые полиморфные операции.

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

Цель и область применения

Цель: создать небольшую иерархию фигур с базовым классом abstract (Shape) и несколькими конкретными фигурами (Circle, Rectangle). Сначала спроектируем общие операции, а затем подтвердим план с помощью небольших прототипов кода.

Фигуры и поля

Фигуры: Circle (радиус), Rectangle (ширина, высота). Храните поля только там, где они нужны: радиус в Circle, ширину и высоту в Rectangle. Базовый класс содержит контракты поведения, а не все поля подряд.

Операции и полиморфизм

Общие операции: area() и perimeter(). Мы объявим их в Shape, чтобы любая Shape могла отвечать на эти вызовы. Затем список Shape сможет содержать объекты Circle и Rectangle вперемешку и обрабатывать их единообразно.

Код: эскиз программного интерфейса

Прототип 1: определите Shape с методами area и perimeter и простой Circle. Это проверяет, что общий программный интерфейс работает для одного конкретного типа.

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());
  }
}

Коллекции и отчётность

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

Код: список фигур

Прототип 2: смешайте Circle и Rectangle в одном массиве Shape и выведите каждый элемент. Методы базового класса обеспечивают единообразную обработку, то есть полиморфизм.

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]);
    }
  }
}

Проверка базового проектирования

Быстрая проверка: какие элементы должны находиться в базовом классе abstract Shape в этом проекте?

Итоги

Итоги: мы создали Shape, Circle и Rectangle, добавили простые проверки и вывели небольшой отчёт из списка смешанных фигур. На следующем уроке — полиморфное поведение, например сортировка по area.

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

Урок «Проектирование» бесплатный?

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

Чему я научусь в уроке «Проектирование»?

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

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

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

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

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

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

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

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

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