Компонентно-ориентированное программирование

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Парадигмы программирования
 • Императивная (контрастирует с Декларативной)
Процедурная
Структурная
Модульная
Аспектно-ориентированная
Объектно-ориентированная
Агентно-ориентированная
Компонентно-ориентированная
Прототипно-ориентированная
Обобщённое программирование

 • Конкатенативная
 • Декларативная (контрастирует с Императивной)

Функциональная
Чистая функциональная
Аппликативная
Комбинаторная
Основанная на продолжениях
В терминах Рефал-машины
Логическая
Ограничениями
Потоков данных

 • Метапрограммирование

Языково-ориентированная
Пользовательская[en]
Автоматизация процесса программирования
Рефлексивное

 • Параллельная
 • Событийно-ориентированная
 • Реактивная
 • Сервис-ориентированная

 • Автоматная

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

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

Компонентно-ориентированный подход появился в 1987 году[2], когда Никлаус Вирт предложил для языка Оберон паттерн написания блоков. Данный паттерн сформировался при изучении проблемы хрупких базовых классов, возникающей при построении объемной иерархии классов. Паттерн заключался в том, что компонент компилируется отдельно от других, а на стадии выполнения необходимые компоненты подключаются динамически. В 1989 году[2] Бертран Мейер предложил идею единого взаимодействия между вызываемым и вызывающим компонентами. Эта идея воплотилась в виде готовых решений: CORBA, COM, SOAP. Впоследствии поддержка со стороны языка осуществилась в Компонентном Паскале.

Ситуация со внедрением компонентно-ориентированного подхода как ограничения для существующих парадигм программирования сходна с появлением структурного программирования, которое ограничивало неупорядоченные переходы управления с помощью оператора GOTO, затрудняющие анализ алгоритма программы для уже существующих языков без привнесения каких-либо новых конструкций. Компонентно-ориентированный подход может применяться во многих языках программирования с помощью стандартных конструкций, таких как классы, интерфейсы, пакеты, модули. При этом также существуют и языки программирования, реализующие на конструктивном уровне компонентно-ориентированное программирование — Оберон (ограниченно) и Компонентный Паскаль. В рамках языка Java компонентно-ориентированное программирование реализуется посредством JavaBeans, поддержанных в одной из ранних спецификаций языка. В платформе .Net реализован компонентно-ориентированный подход, обеспечивающий создание и повторное использование компонентов для любого языка программирования, поддерживаемого платформой.

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]