Что такое композиция в Java с примерами

Опубликовано: 2021-04-09

Java — это универсальный язык, который поддерживает объектно-ориентированное программирование и повторное использование кода с построением отношений между двумя классами. В Java существует два типа отношений или ассоциаций, используемых для повторного использования кода и уменьшения дублирования от одного класса к другому.

Этими отношениями являются IS-A (Наследование) и HAS-A (Ассоциация). В то время как между классами IS-A существует тесная связь, классы HAS-A слабо связаны и более предпочтительны для программистов.

Отношение HAS-A делится на два типа, а именно, агрегацию и композицию в Java . Эта статья основана на концепции композиции ООП. Мы увидим множество реальных примеров того, как кодируется композиция, и какие преимущества получаются при ее реализации.

Оглавление

Краткое описание ассоциаций или отношений в Java

В объектно-ориентированном программировании объекты связаны друг с другом и используют общую для них функциональность. Вот тут-то и появляются темы наследования, ассоциации, агрегации и композиции в программах Java.

Наследование (IS-A) и ассоциация (HAS-A) в Java

1. Наследование (ИС-А)

Отношение IS-A означает, что один объект является типом другого. Он реализуется с помощью ключевых слов «расширяет» и «реализует».

Пример: ноутбук HP IS-A

2. Ассоциация (HAS-A)

Связь HAS-A означает, что класс имеет связь с другим классом. Например, класс A содержит ссылку на класс B и может получить доступ ко всем свойствам класса B.

Пример: Человеческое тело ЕСТЬ-Сердце

Источник

Источник

3. Агрегация против композиции

Связь Has-A или ассоциация можно разделить на агрегацию и композицию. Класс контейнера агрегации и класс, на который ссылаются, могут существовать независимо друг от друга. Ссылочный класс композиции не может существовать, если класс-контейнер уничтожен.

Давайте возьмем пример, чтобы понять агрегацию и композицию. Автомобиль состоит из частей, например, двигателей, колес, музыкального проигрывателя и т. д. Автомобиль не может функционировать без двигателя и колес, но может функционировать без музыкального проигрывателя. Здесь у двигателя и автомобиля отношение композиции, а у автомобиля и музыкального проигрывателя отношение агрегации. В случае агрегации объект может существовать, не будучи частью основного объекта.

Источник

Композиция на Java

Композиция в Java между двумя объектами, связанными друг с другом, существует, когда существует сильная связь между одним классом и другим. Другие классы не могут существовать без владельца или родительского класса. Например, класс «Человек» представляет собой композицию «Сердце и легкие » . Когда человеческий объект умирает, никто не разделяется.

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

Реализация композиции в Java

Отношения двигателя и автомобиля реализованы с использованием классов Java, как показано ниже. В Java ключевое слово final используется для представления композиции. Это связано с тем, что объект «Владелец» ожидает, что объект-часть будет доступен и функционирует, делая его «окончательным» .

Автомобиль общественного класса {

частный финальный двигатель двигателя;

общественный автомобиль () {

двигатель = новый двигатель();

}

}

двигатель класса {

частный строковый тип;

}

Возьмем другой пример, который изображает как наследование, так и композицию.

Источник

В этой программе класс Honda является автомобилем и является продолжением класса автомобиль. Двигатель автомобиля Объект используется в классе Honda.

класс CarEngine {

публичная пустота StartEngine () {

System.out.println(" Двигатель автомобиля запустился ");

}

общественный недействительным stopEngine () {

System.out.println(" Двигатель автомобиля остановился ");

}

}

класс автомобиля {

частный цвет строки;

частный интервал maxi_Speed;

public void carDetails () {

System.out.println («Цвет автомобиля = «+ цвет + «; Максимальная скорость = » + maxi_Speed);

}

//Установка цвета автомобиля

public void setColour (цвет строки) {

this.color = цвет;

}

//Установка максимальной скорости автомобиля

общественный недействительным setMaxiSpeed ​​(int maxi_Speed) {

this.maxi_Speed ​​= макси_скорость;

}

}

класс Honda расширяет автомобиль{

общественная пустота HondaStart () {

CarEngine Honda_Engine = новый CarEngine(); //сочинение

Honda_Engine.startEngine();

}

}

общественный класс Основной {

public static void main(String[] args) {

Хонда ХондаДжаз = новая Хонда();

HondaJazz.setColour("Черный");

HondaJazz.setMaxSpeed(160);

HondaJazz.carDetails();

HondaJazz.HondaStart();

}

}

Выход:

Цвет автомобиля = черный; Максимальная скорость = 160

Двигатель автомобиля запустился.

Результат получен с использованием композиции и показывает детали автомобиля Honda Jazz.

UML-обозначения ассоциации

Отношения ассоциации, агрегации и композиции в Java между классами A и B представлены на диаграммах UML следующим образом:

Ассоциация: А--->Б

Состав: A—<заполненный>B

Агрегация: А——<>Б

Получите диплом инженера-программиста онлайн в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Преимущества композиции в Java

Использование техники композиционного проектирования в Java дает следующие преимущества:

  1. Всегда можно «предпочесть композицию объектов наследованию классов». Классы достигают полиморфизма и повторного использования кода за счет композиции.
  2. Композиция гибкая, вы можете изменить реализацию класса во время выполнения, изменив включенный объект и изменив его поведение.
  3. Композиционный дизайн имеет меньшее количество классов.
  4. Отношение «HAS-A» между классами семантически корректно, чем отношение «IS-A».
  5. Композиция в Java обеспечивает лучшую тестируемость классов, что особенно полезно при разработке через тестирование.
  6. В языках можно добиться «множественного наследования», объединив несколько объектов в один.
  7. В композиции нет конфликта между методами или именами свойств.

Заключение

Композиция в Java предлагает множество преимуществ при программировании и является одним из излюбленных методов проектирования. В этой статье мы попытались помочь вам понять эту важную концепцию с помощью реальных примеров и практического кода. Композиция предлагает гибкость и надежный код. Его функция повторного использования кода помогает избежать дублирования кода и добиться экономической эффективности. Это делает его одним из широко используемых методов в различных программах.

Изучите композицию на Java с помощью курса upGrad Master of Science in the Computer Science , цель которого — помочь вам изучить и повысить свои навыки в области разработки программного обеспечения.

право

Степень бакалавра AB с 50% или эквивалентными оценками. Начальный опыт кодирования не требуется.

Цены

Стоимость программы начинается с 13 095 рупий в месяц для жителей Индии и 5999 долларов США для жителей других стран.

Получите работу своей мечты

Подать заявку на получение степени магистра наук в области машинного обучения и искусственного интеллекта