В чем разница между ассоциацией, агрегацией и композицией на уровне кода? Всем привет.
Баян редкостный но внятного ответа на него до сих пор похоже нет.class Aggregation
{
protected $obj;
public function __construct(Model $Model)
{
// Не является ли это ассоциацией?
$this->obj = $Model;
}
}
class Composition
{
protected $obj;
public function __construct()
{
// Не является ли это ассоциацией?
$this->obj = new Model();
}
}
И так. В чем же разница?UPD: в моем понимании ассоциация это абстрактный вариант агрегации и композиции.

21 Авг 2019 в 07:03
172 +1
0
Ответы
1

Давайте разберемся в разнице между ассоциацией, агрегацией и композицией на уровне кода.

Ассоциация:
Ассоциация представляет собой отношение между двумя классами, где один класс использует другой класс в определенном контексте. В вашем примере класс Aggregation ассоциируется с классом Model через свойство $obj. В данном случае Aggregation использует Model, но Model может быть использован и другими классами.

Агрегация:
Агрегация является частным случаем ассоциации, где один объект состоит из других объектов, но эти объекты все равно могут существовать независимо. В вашем примере класс Aggregation имеет агрегационное отношение с классом Model, так как Aggregation содержит ссылку на Model, но Model может быть также использован и другими классами.

Композиция:
Композиция также является частным случаем ассоциации, но в данном случае объекты существуют только в рамках составного объекта и не могут существовать независимо. Например, если бы в классе Composition объект Model был создан внутри конструктора и не мог бы быть передан извне, это было бы композицией.

Таким образом, разница между ассоциацией, агрегацией и композицией на уровне кода заключается в том, как объекты связаны между собой и как они зависят друг от друга. В вашем случае оба класса Aggregation и Composition демонстрируют ассоциацию и агрегацию, но не композицию.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир