Разбираясь с отношениями классов обнаружил одну непонятку! Агрегация и Ассоцияция — как выглядит в коде?! Начнем с Композиции (или агрегацию по значению) имеет жёсткую зависимость времени существования экземпляров класса контейнера и экземпляров содержащихся классов. Если контейнер будет уничтожен, то всё его содержимое будет также уничтожено. В силу долготы жизни вложенного класса вариант реализации может быть один! В конструкторе агрегатора, инициализируется содержащийся/иеся (вложенный/вложенные) в него класс/классы . Таким образом, удаляя контейнер, удаляются и содержащийся/иеся в нем класс/ы. Все про Композицию Забыли! Переходим к Агрегации По определению- Агрегация (или агрегацию по ссылке)- встречается, когда один класс является коллекцией или контейнером других. Причём по умолчанию, агрегацией называют агрегацию по ссылке, то есть когда время существования содержащихся классов не зависит от времени существования содержащего их класса. Если контейнер будет уничтожен, то его содержимое— нет. Таким образом в коде мы можем реализовать агрегацию как через Конструктор с параметрами, так и через Сеттеры! Обе эти реализации подходят под определение. Но тогда возникает вопрос! А как тогда выглядит в коде — реализация Ассоциации? Смотрим определение Ассоциации. Ассоциация показывает, что объекты одной сущности (класса) связаны с объектами другой сущности таким образом, что можно перемещаться от объектов одного класса к другому. Является общим случаем композиции и агрегации. Тоже мы можем реализовать как через конструктор с параметрами, так и через Сеттеры! Но может быть немного удобнее через сеттеры! Внимательный читатель скажет, что не правильно сделан акцент, его надо делать на множественность. Ведь по определению Агрегации — цитата : «коллекцией или контейнером других». Вынужден отклонить это предположение! Так как это не вписывается в N-мерную ассоциацию. Итог рассуждений не утешительный. Нет однозначности и четкости! Хотелось бы услышать ваши мысли и рассуждения!