Ключевая разница - агрегация и композиция в Java
Агрегация - это ассоциация между двумя объектами, описывающая отношение «имеет-а». Композиция - это более конкретный тип агрегации, который подразумевает право собственности. Ключевое различие между агрегацией и композицией в Java заключается в том, что если содержащийся объект может существовать без существования объекта-владельца, то это агрегация, а если содержащийся объект не может существовать без существования объекта-владельца, то это композиция..
Объектно-ориентированное программирование (ООП) - основная парадигма в разработке программного обеспечения. Он используется для моделирования программного обеспечения с использованием объектов. Объекты создаются с помощью классов. Класс состоит из свойств и методов. В программном обеспечении есть несколько объектов. Каждый объект взаимодействует друг с другом посредством передачи сообщений. Связь между двумя объектами называется ассоциацией. И агрегация, и композиция представляют собой два типа ассоциации. Отношение «имеет» описывает, что один объект может использовать другой объект. Агрегация и композиция могут быть реализованы на поддерживающих ООП языках. Если содержащийся объект может существовать без существования объекта-владельца, то связь между этими двумя объектами является агрегацией. Если содержащийся объект не может существовать без существования объекта-владельца, то ассоциация между этими двумя объектами представляет собой композицию.
Что такое агрегация в Java?
Агрегация - это тип ассоциации. Если класс имеет ссылку на сущность, это называется агрегацией. Агрегация представляет отношение «имеет-а». Объект Student может иметь такие свойства, как student_id, имя, адрес. Этот объект также может иметь другой объект, называемый адресом, со своей собственной информацией, такой как город, штат, страна. В этой ситуации у Студента есть ссылочный адрес сущности. Это отношения типа «имеет».
Рисунок 01: Класс оценок
Рисунок 02: Основная программа для описания агрегации
Согласно приведенной выше программе, класс Marks состоит из трех свойств: отметки по математике, английскому языку и естественным наукам. Студент имеет объект Оценки. Он имеет свои собственные свойства, которые являются признаками математики, английского языка и естественных наук. В основном методе создается объект Marks и присваиваются значения оценок. Объект студента с номером s1 может использовать объект отметок с номером m1. Таким образом, между Студентом и Метками существует отношение «имеет». Объект Marks может существовать без объекта Student. Следовательно, это агрегация.
Что такое композиция в Java?
Композиция – это тип ассоциации. Это особая форма агрегации, которая подразумевает право собственности. Предположим, что есть два класса, называемые классом A и B. Если объект класса B не может существовать, если объект класса A уничтожен, то это композиция. Книга состоит из множества страниц. Если книга будет уничтожена, страницы также будут уничтожены. Объекты страницы не могут существовать без объекта книги. См. приведенную ниже программу.
Рисунок 03: Учебный класс
Рисунок 04: Школьный класс
Рисунок 05: Основная программа для описания композиции
Согласно приведенной выше программе, класс имеет два свойства: name и numOfStudents. Школа представляет собой набор объектов Classroom. В основном методе создаются два объекта Classroom. Они добавляются в «классы». Эти «классы» передаются школьному объекту. Наконец, название класса и количество учеников выводятся путем перебора коллекции. Если объект «Школа» будет уничтожен, объекты «Класс» также будут уничтожены. Это пример композиции. Он также содержит отношение «имеет-а» и подразумевает владение.
Какова связь между агрегацией и композицией в Java?
Агрегация и композиция - это два типа ассоциации, а композиция - это специализированный тип агрегации. Композиция является подмножеством агрегации
В чем разница между агрегацией и композицией в Java?
Агрегация и композиция в Java |
|
Агрегация - это ассоциация между двумя объектами, описывающая отношение «имеет». | Композиция - это более конкретный тип агрегации, который подразумевает владение. |
Использование | |
Агрегация используется, когда один объект использует другой объект. | Композиция используется, когда один объект владеет другим объектом. |
Влияние на объекты | |
В агрегации уничтожение объекта-владельца не повлияет на содержащий объект. | В композиции уничтожение объекта-владельца повлияет на содержащий объект. |
Резюме – Агрегация и композиция в Java
Агрегация и композиция - это две концепции в ООП. Отношение «имеет» описывает, что один объект может использовать другой объект. Агрегация - это ассоциация между двумя объектами, описывающая отношение «имеет-а». Композиция - это более конкретный тип агрегации, который подразумевает владение. Разница между агрегацией и композицией в Java заключается в том, что если содержащийся объект может существовать без существования объекта-владельца, то это агрегация, а если содержащийся объект не может существовать без существования объекта-владельца, то это композиция.