0Pricing
Java Academy · Урок

Композиция объектов

Создавайте более крупные объекты, объединяя небольшие. Композиция моделирует отношения «содержит», например автомобиль, у которого есть двигатель.

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

Определение

Композиция означает создание более крупного объекта из принадлежащих ему небольших объектов. Это отношение «имеет»: Car имеет Engine. Такой подход сохраняет классы небольшими и целенаправленными, а крупный объект делегирует работу своим частям.

Преимущества

Композиция упрощает повторное использование: часть можно заменить, не изменяя целое. Она также облегчает тестирование, поскольку каждую часть можно проверять отдельно. Начните с простого: пусть один класс зависит от другого через поля.

Композиция и наследование

Наследование выражает отношение «является» (квадрат является фигурой). Композиция выражает отношение «имеет» (Car имеет Engine). Сначала отдавайте предпочтение композиции, а наследование используйте только при естественном отношении «является».

Владение и жизненный цикл

Когда объект владеет своими частями, он отвечает за их создание и использование. Части обычно не существуют отдельно: они существуют потому, что существует целое. Эта идея помогает чётко распределить ответственность.

Этапы проектирования

Выберите целое (Car) и его части (Engine). Перечислите, что знает и что делает каждая часть. Затем разместите объекты частей в качестве полей внутри целого и напишите небольшие методы, которые используют эти части для выполнения работы.

Код: пример отношения «имеет»

Код: Car владеет Engine и вызывает его метод. Если сначала создать часть и передать её в объект, код останется простым и гибким.

public class Main {
  // Very small classes to show composition (has-a)
  static class Engine {
    int horsepower;
    Engine(int hp) { horsepower = hp; }
    String info() { return horsepower + " HP engine"; }
  }

  static class Car {
    String model;
    Engine engine; // Car has an Engine (composition)
    Car(String m, Engine e) {
      model = m;
      engine = e; // store the part
    }
    void printSpecs() {
      // Use the part to build a message
      System.out.println(model + " with " + engine.info());
    }
  }

  public static void main(String[] args) {
    // Create part first
    Engine e = new Engine(90);
    // Assemble whole with the part
    Car c = new Car("CityCar", e);
    // Use the whole, which delegates to its part
    c.printSpecs();
  }
}

Проверка композиции

Быстрая проверка: Какое утверждение лучше всего описывает композицию?

Повторение

Повторение: композиция моделирует отношение «имеет». Начните с небольшой части, поручите ей чёткую задачу и позвольте целому объекту использовать её через простые вызовы методов.

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

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

Да — полный текст урока «Композиция объектов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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. this и toString/equals/hashCode
  2. Композиция объектов
  3. Моделирование предметной области (UML→код)
← Назад к Java Academy