Композиция объекта
-
Определение и примеры композиции
- Композиция — это объединение объектов в составные объекты с инкапсуляцией.
- Композиция отличается от структур данных, которые не обеспечивают инкапсуляцию.
- Композиция может включать группу связанных объектов, таких как набор или последовательность.
-
Отличия от других концепций
- Делегирование обогащает композицию, переадресуя запросы к внутренним компонентам.
- В объектно-ориентированных языках типы делятся на составные и несоставные, а композиция рассматривается как отношение между типами.
- Изучение отношений «часть-целое» называется мереологией.
- Композиция отличается от подтипирования, которое добавляет детали к общему типу данных.
- В языках программирования, основанных на прототипах, объекты могут динамически наследовать поведение прототипа.
-
Моделирование в UML
- В UML объекты могут быть концептуально составлены независимо от реализации.
- Существуют четыре способа компоновки объектов в UML: свойство, ассоциация, агрегация и композиция.
- Агрегация отличается от обычной структуры тем, что не подразумевает права собственности.
- Композиция обычно реализуется путем содержания одного объекта другим.
-
Специальные формы композиции
- Сдерживание — это композиция, которая используется для хранения нескольких экземпляров составного типа данных.
- Рекурсивная композиция — это объекты, которые могут быть составлены рекурсивно.
- Составной узор — это объектно-ориентированный дизайн, сочетающий рекурсивную композицию и сдерживание.
-
Хронология композиции на разных языках
- C называет запись struct или структурой, в то время как объектно-ориентированные языки часто хранят свои записи внутри объектов.
- COBOL был первым широко распространенным языком, который поддерживал записи.
- Common Lisp предоставляет структуры и классы, а Fortran 77 имеет массивы, но не формальные определения записей.
- Ada 95 и Ada 2012 добавили поддержку проверки замены с помощью общеклассовых контрактов.