Я знаю о концептуальных различиях между агрегированием и композицией. Может ли кто-нибудь сказать мне разницу в реализации на Java между ними на примерах?
103
Я знаю о концептуальных различиях между агрегированием и композицией. Может ли кто-нибудь сказать мне разницу в реализации на Java между ними на примерах?
Ответы:
Сочинение
Агрегация
В случае композиции Двигатель полностью заключен в машину. Внешний мир не может получить ссылку на Engine. Двигатель живет и умирает вместе с автомобилем. При агрегации автомобиль также выполняет свои функции через двигатель, но двигатель не всегда является внутренней частью автомобиля. Двигатели можно поменять местами или даже полностью снять. Более того, внешний мир все еще может иметь ссылку на Двигатель и работать с ним, независимо от того, находится ли он в Автомобиле.
источник
new Engine(EngineSpecs)
вызова, даже если машины не было. Чтобы добиться композиции, нужно создать Engine как внутренний класс, чтобы объект Engine всегда создавался со ссылкой на объект CarЯ бы использовал хороший пример UML.
Возьмем университет, в котором есть от 1 до 20 различных факультетов, и на каждом факультете от 1 до 5 профессоров. Между университетом и его кафедрами существует композиционная связь. Между кафедрой и ее профессорами существует агрегирующая связь.
Состав - это просто СИЛЬНАЯ совокупность, если университет разрушен, то и кафедры должны быть уничтожены. Но мы не должны убивать профессоров, даже если их кафедры исчезнут.
В java:
Что-то вокруг этого.
РЕДАКТИРОВАТЬ: пример по запросу
Университетский класс
Класс кафедры
Класс профессора
Реализация спорна, поскольку она зависит от того, как вам нужно обрабатывать создание, удаление найма и т. Д. Не имеет отношения к OP
источник
В приведенном ниже URL-адресе есть отличное объяснение.
http://www.codeproject.com/Articles/330447/Understanding-Association-Aggregation-and-Composit
Пожалуйста, проверьте!!!
источник
Простая программа композиции
источник
Разница в том, что любая композиция - это агрегирование, а не наоборот.
Установим сроки. Агрегация - это метатерм в стандарте UML, означающий ОБА композицию и общую агрегацию, просто называемую общим. . Слишком часто это неправильно называют «агрегацией». Это ПЛОХО, потому что композиция - это тоже агрегирование. Насколько я понял, вы имеете в виду «общий».
Дополнительно от стандарта UML:
Итак, ассоциация университета и кафедры - это композиция, потому что кафедра не существует вне университета (ИМХО).
Т.е. все остальные ассоциации можно нарисовать как общие агрегаты, если вы следуете только каким-то своим или чьим-то другим принципам. Также смотрите здесь .
источник
Проще говоря:
И состав, и агрегирование являются ассоциациями. Состав -> Агрегация сильных отношений -> Отношения слабых отношений.
источник
Сначала мы должны поговорить о том, в чем на самом деле разница между
Aggregation
иComposition
, чтобы быть на одной странице.в то время как
Теперь агрегации можно просто достичь, удерживая свойство одной сущности в другой, как показано ниже:
Для композиции необходимо, чтобы зависимый объект всегда создавался с идентификатором связанного с ним объекта. Для этого можно использовать внутренний класс.
источник
Агрегация против композиции
Агрегация подразумевает отношения, в которых может существовать ребенок независимо от родителя. Например, Банк и Сотрудник, удалите Банк, и Сотрудник все еще существует.
тогда как композиция подразумевает отношения, при которых ребенок не может существовать независимо от родителя. Пример: Человек и сердце, сердце не существуют отдельно от Человека.
Отношение агрегации - это отношение «имеет», а композиция - отношение «часть из».
Состав - это сильная ассоциация, тогда как агрегирование - это слабая ассоциация.
источник
Оба типа, конечно, являются ассоциациями и на самом деле не связаны строго с такими языковыми элементами. Разница заключается в цели, контексте и том, как моделируется система.
В качестве практического примера сравним два разных типа систем с похожими объектами:
Система регистрации автомобилей, которая в первую очередь отслеживает автомобили, их владельцев и т.д. Здесь Двигатель может быть составной частью автомобиля.
Система управления автосервисом, которая управляет автомобильными запчастями, обслуживает автомобили и заменяет детали, возможно, целые двигатели. Здесь у нас даже может быть запас двигателей, и нам нужно будет отслеживать их и другие части отдельно и независимо от автомобилей. Здесь Двигатель может быть агрегированной частью автомобиля.
То, как вы реализуете это на своем языке, не имеет большого значения, поскольку на этом уровне гораздо важнее такие вещи, как удобочитаемость.
источник