Что такое композиция в Java с примерами
Опубликовано: 2021-04-09Java — это универсальный язык, который поддерживает объектно-ориентированное программирование и повторное использование кода с построением отношений между двумя классами. В 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 дает следующие преимущества:
- Всегда можно «предпочесть композицию объектов наследованию классов». Классы достигают полиморфизма и повторного использования кода за счет композиции.
- Композиция гибкая, вы можете изменить реализацию класса во время выполнения, изменив включенный объект и изменив его поведение.
- Композиционный дизайн имеет меньшее количество классов.
- Отношение «HAS-A» между классами семантически корректно, чем отношение «IS-A».
- Композиция в Java обеспечивает лучшую тестируемость классов, что особенно полезно при разработке через тестирование.
- В языках можно добиться «множественного наследования», объединив несколько объектов в один.
- В композиции нет конфликта между методами или именами свойств.
Заключение
Композиция в Java предлагает множество преимуществ при программировании и является одним из излюбленных методов проектирования. В этой статье мы попытались помочь вам понять эту важную концепцию с помощью реальных примеров и практического кода. Композиция предлагает гибкость и надежный код. Его функция повторного использования кода помогает избежать дублирования кода и добиться экономической эффективности. Это делает его одним из широко используемых методов в различных программах.
Изучите композицию на Java с помощью курса upGrad Master of Science in the Computer Science , цель которого — помочь вам изучить и повысить свои навыки в области разработки программного обеспечения.
право
Степень бакалавра AB с 50% или эквивалентными оценками. Начальный опыт кодирования не требуется.
Цены
Стоимость программы начинается с 13 095 рупий в месяц для жителей Индии и 5999 долларов США для жителей других стран.