Что такое Композиция? Пример Композиции в Java

Композиция является одним из методов проектирования, который реализовывает отношение типа has-a в классах. Мы можем использовать наследование в Java или композицию для повторного использования кода.

Композиция в Java достигается за счет использования переменных экземпляра, который ссылается на другие объекты.

Небольшой пример в теории: Person has a (имеет) Job.

А теперь практика на java:

Job.java

Person.java

А теперь протестируем: используем объект Person и получаем зарплату (salary)

TestPerson.java

Обратите внимание, что тестовая программа TestPerson не зависит от каких-либо изменений в объекте Job. Если вам нужно реализовать взаимодействие двух классов и вы хотите повторно использовать код, то лучшим выходом будет использование композиции вместо наследования.

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

Кроме того, если есть какие-либо изменения в другой реализации класса, например, если  метод getSalary() начнет возвращать строку, то мы должны изменить класс Person, а не классы клиента.

Композиция в Java позволяет создавать back-end класс, когда это необходимо. Например, мы можем изменить getSalary() метод класса Person для инициализации объекта Job.

Комментарий “Что такое Композиция? Пример Композиции в Java

  1. Здравствуйте. Объясните пожалуйста следующий момент.
    Вот определение Композиции которое представлено в Википедии:

    Композиция — более строгий вариант агрегации. Известна также как агрегация по значению.
    Композиция имеет жёсткую зависимость времени существования экземпляров класса контейнера и экземпляров содержащихся классов. Если контейнер будет уничтожен, то всё его содержимое будет также уничтожено.

    В принципе это созвучно с тем, как излагают данный вопрос Джим Арлоу и Айла Нейштадт в книге UML2 :
    Композиция — это строгая форма агрегации:
    1) Одновременно части могут принадлежать только одному композиту — совместное владение частями невозможно.
    2) композит обладает исключительной ответственностью за все свои части; это значит что он отвечает за их создание и уничтожение
    3) композит может высвобождать части, передавая ответственность за них другому объекту
    4) в случае уничтожения композита он должен уничтожить все свои части или передать ответственность за них другому объекту.

    Вопрос в следующем: данный пример показывает свойства композиции или все таки агрегации, Ведь фактически пример не отвечает ни одному вышеперечисленному пункту. Или я что — то не так понимаю. Заранее благодарен.

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

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