Проблема с пониманием связи ассоциации в диаграмме классов
Не понятно чем отличается от композиции и агрегации. Правильно ли то, что если в полях класса содержится объект другого класса и он не инициализируется в конструкторе, а в каком-либо другом методе создается и используется, то это ассоциация, а если в конструктор класса передается ссылка на уже имеющийся объект другого класса и он используется в методах - это агрегация, а если в конструкторе создается объект другого класса и не передается ссылка на уже имеющийся в параметрах то это композиция? Если это так, то является ли это правило универсальным, чтобы отличить связи друг от друга?
Уже отвечали чем отличается агрегация от ассоциации, но я хочу понять на практике
Ответы (1 шт):
- Композиция означает, что объект одного класса создаётся любым образом в другом классе.
- Агрегация предполагает создание объектов класса(части) заранее и передачу в конструктор или метод класса(целого) для создания объектов класса(части) в классе(целом).
- Ассоциация похожа на агрегацию, но отличается лишь тем какой смысл мы вкладываем в семантику связи. Агрегация это тип "целое-часть" и это единственный смысл этой связи, а ассоциация это тип "использование". То есть ассоциацию мы можем поименовать в отличие от агрегации и описать тем самым способ использования одним объектом класса другого, а агрегацию именовать не надо поскольку и так понятно, что один объект является частью другого.