Агрегирование (программирование)

Агрегирование (программирование)

В объектно-ориентированном программировании под агрегированием (также называемом композицией или включением) подразумевают методику создания нового класса из уже существующих классов путём включения, называемого также делегированием. Об агрегировании также часто говорят как об «отношении принадлежности» по принципу «у машины есть корпус, колёса и двигатель».

Вложенные объекты нового класса обычно объявляются закрытыми, что делает их недоступными для прикладных программистов, работающих с классом. С другой стороны, создатель класса может изменять эти объекты, не нарушая при этом работы существующего клиентского кода. Кроме того, замена вложенных объектов на стадии выполнения программы позволяет динамически изменять её поведение. Механизм наследования такой гибкостью не обладает, поскольку для производных классов устанавливаются ограничения, проверяемые на стадии компиляции.

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

Пример

Aggregation-Composition3.png

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

Агрегация

Агрегация (агрегация по ссылке) — отношение «часть-целое» между двумя равноправными объектами, когда один объект (контейнер) имеет ссылку на другой объект. Оба объекта могут существовать независимо: если контейнер будет уничтожен, то его содержимое — нет.

class Professor;
 
class Department
{
  private:
    Professor* members[5];
};

Композиция

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

class Department;
 
class University
{
  private:
    Department faculty[20];
};
// Composition
class Automobile
{
  private:
    Carburetor* itsCarb;
  public:   
    Automobile() {itsCarb=new Carburetor();}
    virtual ~Automobile() {delete itsCarb;}
};



Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Агрегирование (программирование)" в других словарях:

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

  • Делегирование (программирование) — В объектно ориентированном программировании существуют два смежных понятия делегирования. В современном понимании это означает свойство языка программирования использовать правила поиска метода для диспетчеризации так называемых self calls… …   Википедия

  • Метод (программирование) — У этого термина существуют и другие значения, см. Метод. Метод в объектно ориентированном программировании  это функция или процедура, принадлежащая какому то классу или объекту. Как и процедура в процедурном программировании, метод состоит… …   Википедия

  • Агрегация — В Викисловаре есть статья «агрегация» Агрегация или агрегирование (лат. aggregatio  присоединение)  процесс объединения элементов в одну систему. Агрегация: Агрегация каналов  технология объединен …   Википедия

  • UML — (англ. Unified Modeling Language  унифицированный язык моделирования)  язык графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это  открытый… …   Википедия

  • Диаграмма классов — Для улучшения этой статьи желательно?: Викифицировать статью. В UML диаграмма классов является типом диаграммы статичес …   Википедия

  • Диаграмма прецедентов — Диаграмма вариантов использования для упрощенной модели работы ресторана. Диаграмма прецедентов (англ.  …   Википедия

  • Рамбо, Джеймс — Джеймс Рамбо англ. James Rumbaugh Дата рождения: 1947 год(1947) Страна …   Википедия

  • Диаграмма деятельности — UML диаграмма деятельности, отображающая процесс мозгового штурма. Диаграмма деятельности англ.  …   Википедия

  • Диаграмма коммуникации — Пример диаграммы коммуникации Диаграмма коммуникации (англ. communication diagram, в UML 1.x диаграмма кооперации, collaboration diagram) диаграмма, на которой изображаются взаимодействия между частями композитной структуры или ролями… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»