Агрегация и Композиция(Прочитано 12190 раз)
Агрегация и Композиция : 18 Января 2012, 23:07:36
Брюс Экель в своей книжке философия java пишет
"Если мы составляем новый класс из уже существующих, этот способ называется композицией (если композиция выполняется динамически,  она обычно именуется агрегированием)"

Может кто-нибудь пояснить этот отрывок? тут наверное надо сознание раскрыть чтобы пришло понимание. Что такое композиция которая выполняется динамически? И что такое если она статическая ?



А вот что пишет про композицию Джим Арлоу и Айла Нейштадт в книге UML2 и унифицированный процесс

Агрегация - это отношение целое часть
1)агрегат может существовать как независимо от частей, так и вместе с ними;
2)части могут существовать независимо от агрегата
3)агрегат является в некотором смысле неполным в случае отсутствия частей
4)части могут принадлежать одновременно нескольким агрегатам

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

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



Re: Агрегация и Композиция Ответ #1 : 19 Января 2012, 09:34:22
Мне кажется, Брюс Экель больший упор делает на реализации (или на вопросах реализации понятий композиция и агрегация).

Джим Арлоу и Айла Нейштадт делают упор на категориальный аппарат, семантику и абстракцию этих понятий.

Трудно понять данный отрывок Экеля. Возможно читая больше можно точнее понять, что же имеет автор в виду.



Re: Агрегация и Композиция Ответ #2 : 21 Января 2012, 19:56:30
Брюс Эккель упоминает композицию говоря о повторном использовании классов. Фактически, он пишет, что от существующего класса можно породить подкласс (один способ повторного использования) или сделать объект класса обязательной частью объекта нового класса. Т. е. композиция рассматривается им не как связь между классами (Арлоу), а как способ повторного использования с помощью композиции.
"Выполняется динамически" -- можно считать так, что объект-часть не весь свой период существования может быть привязан к объекту целому (это и есть агрегация). В общем, с точки зрения UML Брюс Эккель не точен в терминах, а с точки зрения повторного использования всё верно.




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19