Виды отношений между классами?

8 июля, 13:44 Учеба 4564 3
Читаю книгу Мэтта Зандстра - "PHP объекты, шаблоны и методики программирования", дошёл до раздела UML, а именно до объяснения видов отношений классов и у меня повяилось несколько вопросов, если с наследованием всё понятно, то вот разница между ассоциацией и агрегацией/композицией не совсем ясна. Всегда думал, что агрегация отличается от композиции лишь тем, что при агрегации мы инстанцируем зависимость во вне, и передаём её в конструктор зависимого класса, а при композиции мы создаём зависимость непосредственно внутри конструктора (new). Я подразумевал, что агрегация и композиция это лишь частные случаи ассоциации, но оказывается у них даже разные обозначения на UML диаграммах. При агрегации у нас идёт линия с незакрашеным ромбом, при композиции - с закрашенным, а вот при ассоциации либо просто линия, либо незамкнутая стрелка. При этом в книге написано, что "ассоциация происходит, когда объявляется, что в свойстве класса содержится ссылка на экземпляр другого класса", но ведь это достигается с помощью агрегации и композиции (мы передаём ссылку в конструктор, либо создаём объект в конструкторе и присваеваем ссылку полю класса). ЯННП. Получается ассоциация действительно это общий случай агрегации/композиции? Тогда зачем о ней написано отдельно и почему она имеет свои обозначения на UML диаграммах?
3 комментария
Сортировка:
Добавить комментарий
Andrey Panchuk
Andrey Panchuk 2019, 8 июля, 17:56
0
Да, скорее всего так и есть. Агрегация это более сильное условие, предполагающее владение или нераздельность. Поэтому для него ввели дополнительное обозначение, чтобы подчеркнуть эти особые свойства.
Leonid Levchenko
Leonid Levchenko 2019, 8 июля, 16:32
0
Агрегация/композиция это когда класс самолет содержит в себе компоненты, например крылья или шасси. ассоциация, это когда самолет хранит ссылку на взлетную полосу или ангар куда его отправили.
Seroga Proga
Seroga Proga 2019, 8 июля, 14:55
0
Ассоциация переводится как "отношение". Отношение - это агрегация или композиция.

IT Новости

Смотреть все