doc/BPM/TERM/relationship.md
2026-01-11 13:20:52 +03:00

5.6 KiB
Raw Blame History

composition vs aggregation

1

Если речь зашла про SADT Именно в SADT и определено, что процесс это упорядоченный набор функций. Функция отвечает за единицу работы, например "записать данные клиента". А процесс отвечает за получение результата, то есть прямо определяет, как надо выполнять работу, какие условия нужны для функций и какие данные каким функциям нужно передать, чтобы получать результат.

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

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

https://t.me/c/2571743804/1019

2

Второй абзац непонятен, в архитектуре математический термин "деление" не применяется, никогда не встречал. Используются 2 базовые структурные связи композиция и агрегация. Они разные по смыслу но в целом и то и то это отношение часть/целое, поэтому декомпозиция это разделение целого на части(возможно неравные в отличие от деления где части равные) другого смысла в этой связи нет. То что вы написали про уровни описания(детализация) насколько я понял логику это еще один тип связи (специализация/отношение класс/подкласс элемента). Связи декомпозиции и специализации могут существовать одновременно, одна не исключает другую.

Третий абзац ошибочен в части отношения связей. Антоним декомпозиции - это композиция, а не агрегация, у этих связей разный смысл.

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

Особенности композиции:
Жёсткая связь между объектами. Часть не может существовать без целого. Объект-компонент создаётся и управляется объектом-контейнером. Уничтожение контейнера ведёт к уничтожению всех его компонентов.

Пример: класс Car содержит объект класса Engine в качестве своего поля. Когда объект Car удаляется, объект Engine также удаляется.

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

Особенности агрегации:
Реализуется слабая связь: объекты равноправны. В конструктор одного объекта передаётся ссылка на уже имеющийся объект другого. Как правило, определяется ссылка не на конкретный класс, а на абстрактный класс или интерфейс, что увеличивает гибкость программы.

2.1