mirror of
https://github.com/bpmbpm/doc.git
synced 2026-04-30 12:30:52 +00:00
51 lines
7.6 KiB
Markdown
51 lines
7.6 KiB
Markdown
### 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/)
|
||
|