Преобразование ассоциации, агрегации и композиции в код в Java? - PullRequest
7 голосов
/ 25 августа 2011

Я знаю, что есть разные способы репрезентации для преобразования ассоциации, агрегации и композиции в java. Но когда мы конвертируем их в код (классы Java), все они представляются одинаково. Как ученик, которого учит учитель, который является ассоциацией, будет представлен с учеником класса, имеющим переменную экземпляра класса Учитель.

В отделе есть профессора, агрегация которых также будет представлена ​​классом Отдела, имеющим переменную экземпляра (массив) профессоров классов.

В университете есть факультеты, состав которых будет также представлен классом университета, имеющим переменную экземпляра (массив) класса Class.

Таким образом, все представлены одинаково с точки зрения кода. Итак, какие преимущества дают разработчикам ассоциации, агрегация и состав?

1 Ответ

5 голосов
/ 26 августа 2011

Вам не хватает части истории с Композицией. Это требует нескольких дополнительных свойств:

  • неизменность родителя (то есть ребенок не может сменить родителей)
  • ответственность за жизненный цикл детей лежит на родителе. Т.е. родитель отвечает за создание и удаление дочерних экземпляров. Ребенок не может жить после смерти родителя.

Вы правы, что ассоциация будет проявляться как ссылка / коллекция ссылок в child и parent соответственно. Но код должен также обеспечивать выполнение приведенных выше правил, если он должен обеспечивать применение семантики Composition.

Что касается агрегации: я ею не пользуюсь. Семантика слишком свободна и не дает никаких преимуществ по сравнению с прямыми ассоциациями.

НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...