Визуального и компонентного программирования

Одним из главных преимуществ объектно-ориентированного программирования является возможность многократного использования разработанного программного обеспечения. Под этим понимается возможность использования фрагмента кода, разработанного для одной системы, в других системах. Разумеется, этот фрагмент кода должен представлять собой логически более или менее законченный модуль. Это может быть функция, подпрограмма, объект, компонент, подсистема или целиком система. Реальное ускорение процесса разработки программного обеспечения возможно только тогда, когда конкретная программная система разрабатывается не с нуля, а используя готовые составные части.

Многократное использование кода – это идеальный вариант передачи знаний. Труд, знания и опыт разработчика, заложенные уже в готовом продукте – программном коде, – передаются без потерь.

Конечно, и раньше для процедурно-ориентированных языков программирования типа Фортран, Паскаль или Си создавались библиотеки функций, реализующих наиболее употребимые алгоритмы обработки данных.

В рамках объектно-ориентированного подхода разрабатываются библиотеки классов. Использование библиотек классов повышает скорость разработки программ и экономит значительные усилия разработчиков. Однако нельзя сказать, что у них нет недостатков.

Использование библиотек классов требует определенных усилий для их изучения и понимания того, как они устроены. Современные среды программирования используют различные графические средства построения программ, которые позволяют визуально манипулировать программой и упростить разработку классов, однако их возможности при работе с библиотеками классов ограниченны.

Библиотека классов должна быть написана на том же языке программирования, что и разрабатываемая программа.

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

Подобные соображения привели к появлению концепции компоненты, Компонента – это программный модуль или объект, который готов для использования в качестве составного блока программы и которым можно визуально манипулировать во время разработки программ.

Чем отличается компонента от класса в библиотеке классов или функция в библиотеке функций?

Во-первых, компонента – это объект, т.е. компонента объединяет состояние и интерфейс. Состояние компоненты может быть изменено только с помощью посылки сообщений (вызова операций).

Во-вторых, у компоненты имеются два типа интерфейсов:

– интерфейс времени выполнения,

– интерфейс времени проектирования.

Интерфейс времени выполнения – это тот интерфейс, который управляет работой компоненты.

Интерфейс времени проектирования – это интерфейс, который позволяет узнать, каков интерфейс времени выполнения. Интерфейс времени проектирования позволяет включать компоненты в современные среды программирования. Кроме того, интерфейс времени проектирования позволяет опрашивать компоненту уже во время выполнения, динамически проверяя, какие методы и интерфейсы она реализует.

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

Компонента может быть включена непосредственно в программу (локальная компонента) или существовать независимо, в том числе и на другом компьютере.

Отличительными признаками локальной компоненты является то, что она включается в программу на стадии разработки и существует только как часть вызывающей ее программы. Физически копия компоненты может быть одна для нескольких программ, либо каждая программа создает собственную копию. Однако логически они независимы, и вызывающая программа управляет созданием и уничтожением компоненты.

Другой вид компонент – это независимые компоненты, существующие вне использующей их программы. Чаще всего такие компоненты применяются в распределенных системах, состоящих из большого числа ЭВМ, соединенных между собой сетью.

Компонентное построение прежде всего используется для построения графического интерфейса программ. По мере того как графические возможности систем становятся все более изощренными, затраты на создание интерфейсов программ растут. При этом их программирование и отладка не только трудоемки, но и требуют высокой квалификации. Разнообразные библиотеки классов, хотя и упрощают в какой-то мере программирование, ограничивают гибкость. Для построения удобных в использовании графических программ достаточно часто нужно использовать весь арсенал предоставляемых графической подсистемой ОС средств.

Средства проектирования пользовательских графических интерфейсов в большинстве случаев работают в режиме графических редакторов, при котором программист рисует на экране монитора диалоги, помещая разнообразные элементы (кнопки, списки, поля) простым движением мыши.

Компоненты легко вписываются в концепцию графического редактора, позволяя программисту манипулировать ими с той же легкостью, что и стандартными графическими элементами.

Но наличие графического интерфейса не является обязательным признаком компоненты (в отличие от возможности визуального манипулирования ими). Компонента может реализовывать вычислительную задачу или связывать программу с другой подсистемой.

Компонента может реализовать какой-либо графический элемент, например, в качестве компоненты может выступать кнопка на экране, при нажатии которой происходит выполнение какого-либо действия, или более сложный элемент, например календарь с расписанием отправлений поездов.

Наши рекомендации