Отличие между Ассоциацией, Композицией и Агрегацией.

Ассоциация.

В ООП объекты находятся в различных отношениях друг с другом. Один объект может использовать функциональность, которую ему предоставляет другой объект. Данный вид отношений между объектами называется ассоциацией. Существует две разновидности ассоциации — композиция и агрегация.

На UML диаграммах ассоциация обозначается направленной стрелкой.

Композиция.

Композиция — это вид ассоциации, при котором один объект владеет (owns) другим объектом. При этом жизненный цикл зависимого объекта полностью контролируется объектом-владельцем. Зависимый объект не может существовать отдельно от своего владельца. Например, класс Car описывает автомобиль, который внутри себя содержит колеса — Wheels и двигатель — Engine.

Существование классов Wheels и Engine имеет смысл только в составе класса Car. Объекты этих классов создаются вместе с созданием основного объекта, в конструкторе. Если объект-владелец будет уничтожен, то также перестанут существовать и все его зависимые объекты.

Недостатком композиции можно считать то, что связь между объектами оказывается слишком жесткой.

На UML диаграммах композиция обозначается стрелкой с закрашенным ромбом, обозначающим строгую зависимость.

Агрегация.

Агрегация — другой вид ассоциации, при котором зависимый объект не принадлежит и не контролируется другим объектом и может существовать отдельно от него. В этом случае один объект просто использует (uses) другой объект.

Например, футбольная команда, представленная классом Team, имеет в своем составе набор игроков — список объектов класса Player. При этом каждый игрок может существовать и отдельно от команды (например, он может захотеть перейти в другую команду).

Жизненный цикл объекта Player в случае агрегации не контролируется объектом Team.

Данное отношение между объектами является более слабым. На UML диаграммах агрегация обозначается стрелкой с пустым ромбом.

Выводы.

Ассоциация обозначает некоторое отношение между объектами. Существует две формы ассоциации — композиция и агрегация. В случае композиции основной объект владеет (owns) зависимым объектом и контролирует весь его жизненный цикл (создание, уничтожение). Агрегация предполагает более слабую связь, при которой зависимый объект способен существовать за пределами того объекта, которые его использует (uses).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *