doc/BPM/TERM/relationship.md
2026-01-11 14:14:29 +03:00

51 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### composition vs aggregation
#### 1
Если речь зашла про SADT
Именно в SADT и определено, что процесс это упорядоченный набор функций. Функция отвечает за единицу работы, например "записать данные клиента". А процесс отвечает за получение результата, то есть прямо определяет, как надо выполнять работу, какие условия нужны для функций и какие данные каким функциям нужно передать, чтобы получать результат.
Неделимость не синоним отсутствие декомпозиции. Декомпозиция — это понижение уровня описания действия. На каждом уровне функция неделима. Делится процесс. Мы можем описывать сложные процессы на одном уровне, делить их и переносить часть процессов выше или ниже по иерархии, если это приводит к более наглядному отображению или если это необходимо для оптимизации.
Действие обратное декомпозиции — агрегация. И это не объединение частей, а создание новой сущности выше по иерархии, представляющее в агрегированном виде описание нижестоящих действий. Деление же может быть только на одном уровне описания.
https://t.me/c/2571743804/1019
#### 2
Второй абзац непонятен, в архитектуре математический термин "деление" не применяется, никогда не встречал. Используются 2 базовые структурные связи композиция и агрегация. Они разные по смыслу но в целом и то и то это отношение часть/целое, поэтому декомпозиция это разделение целого на части(возможно неравные в отличие от деления где части равные) другого смысла в этой связи нет. То что вы написали про уровни описания(детализация) насколько я понял логику это еще один тип связи (специализация/отношение класс/подкласс элемента). Связи декомпозиции и специализации могут существовать одновременно, одна не исключает другую.
Третий абзац ошибочен в части отношения связей.
Антоним декомпозиции - это композиция, а не агрегация, у этих связей разный смысл.
Композиция
Композиция — жёсткая форма отношения «целое-часть», при которой часть (компонент) не может существовать без своего контейнера (основного объекта). Если основной объект уничтожается, уничтожаются и его компоненты.
Особенности композиции:
Жёсткая связь между объектами.
Часть не может существовать без целого.
Объект-компонент создаётся и управляется объектом-контейнером.
Уничтожение контейнера ведёт к уничтожению всех его компонентов.
Пример: класс Car содержит объект класса Engine в качестве своего поля. Когда объект Car удаляется, объект Engine также удаляется.
Агрегация
Агрегация — отношение «часть-целое» между двумя равноправными объектами, когда один объект (контейнер) имеет ссылку на другой объект. Оба объекта могут существовать независимо: если контейнер будет уничтожен, то его содержимое — нет.
Особенности агрегации:
Реализуется слабая связь: объекты равноправны.
В конструктор одного объекта передаётся ссылка на уже имеющийся объект другого.
Как правило, определяется ссылка не на конкретный класс, а на абстрактный класс или интерфейс, что увеличивает гибкость программы.
##### 2.1
- см. [2 Номенклатура схем ArchiMate по типам связей](https://github.com/bpmbpm/doc/blob/main/BPM/notation/ArchiMate/notation1.md#2-%D0%BD%D0%BE%D0%BC%D0%B5%D0%BD%D0%BA%D0%BB%D0%B0%D1%82%D1%83%D1%80%D0%B0-%D1%81%D1%85%D0%B5%D0%BC-archimate-%D0%BF%D0%BE-%D1%82%D0%B8%D0%BF%D0%B0%D0%BC-%D1%81%D0%B2%D1%8F%D0%B7%D0%B5%D0%B9)
- nesting https://github.com/bpmbpm/doc/blob/main/BPM/enEA/readme.md#nesting
#### 3 hierarchy
иерархия это композиция или агрегация?
Иерархия в программировании и моделировании чаще всего реализуется через композицию (сильная связь "часть-целое", где часть не живет без целого, например, Комната в Доме) или агрегацию (слабая связь "часть-целое", где часть может существовать отдельно, например, Машина и ее Колеса), а также наследование; иерархичность — это скорее отношение, которое может быть выражено разными способами, но композиция и агрегация — это конкретные типы отношений «часть-целое» в ООП, в то время как композиция более жестко связывает жизненные циклы.
Иерархия
Что это: Организация объектов или классов в виде уровней или ступеней, где одни элементы подчинены другим. Это может быть иерархия «родитель-потомок» (наследование) или «часть-целое» (агрегация/композиция).
В контексте вопроса: Иерархия часто моделируется композицией или агрегацией, когда мы говорим о структуре данных или объектов, а не только о наследовании (где иерархия наследования - это "является" (is-a), а агрегация/композиция - "содержит" (has-a)).
- ООП [Наследование, композиция, агрегация](https://habr.com/ru/articles/354046/)