2. Визуальное программирование интерфейса
Сколько существует программирование, столько существуют в нем и тупики, в которые
оно постоянно попадает и из которых, в конце концов, доблестно выходит. Один
из таких тупиков или кризисов был не так уж давно связан с разработкой графического
интерфейса пользователя. Программирование вручную всяких привычных пользователю
окон, кнопок, меню, обработка событий мыши и клавиатуры, включение в программы
изображений и звука требовало все больше и
больше времени программиста. В ряде случаев весь этот сервис начинал занимать
до 80-90% объема программных кодов. Причем весь этот труд нередко пропадал почти
впустую, поскольку через год — другой менялся общепринятый стиль графического
интерфейса, и все приходилось начинать заново.
Выход из этой ситуации обозначился благодаря двум подходам. Первый из них — стандартизация
многих функций интерфейса, благодаря чему появилась возможность использовать
библиотеки, имеющиеся, например, в Windows. В частности, появился API Windows
— интерфейс, в котором описано множество функций, причем от версии к версии
набор функций расширяется, внутреннее описание функций совершенствуется, но формы
вызова функций не изменяются. В итоге, при смене стиля графического интерфейса
(например, при переходе от Windows 3.x к Windows 95, а затем к Windows 2000)
приложения смогли автоматически приспосабливаться к новой системе без какого-либо
перепрограммирования. На этом пути создались прекрасные условия для решения одной
из важнейших задач совершенствования техники программирования — повторного использования
кодов. Однажды разработанные вами формы, компоненты, функции могли быть впоследствии
неоднократно использованы вами или другими программистами для решения их задач.
Каждый программист получил доступ к наработкам других программистов и к огромным
библиотекам, созданным различными фирмами. Причем была обеспечена совместимость
программного обеспечения, разработанного на разных алгоритмических языках.
Вторым революционным шагом, кардинально облегчившим жизнь программистов, явилось
появление визуального программирования, возникшего в Visual Basic и нашедшего
блестящее воплощение в Delphi и C++Builder фирмы Borland.
Визуальное программирование позволило свести проектирование пользовательского
интерфейса к простым и наглядным процедурам, которые дают возможность за минуты
или часы сделать то, на что ранее уходили месяцы работы. В современном виде
в Delphi это выглядит так.
Вы работаете в Интегрированной Среде Разработки (ИСР или Integrated development
environment — IDE) Delphi. Среда предоставляет вам формы (в приложении их может
быть несколько), на которых размещаются компоненты. Обычно это оконная форма,
хотя могут быть и невидимые формы. На форму с помощью мыши переносятся и размещаются
пиктограммы компонентов, имеющихся в библиотеках Delphi. С помощью простых манипуляций
вы можете изменять размеры и расположение этих компонентов. При этом вы все время
в процессе проектирования видите результат — изображение формы и расположенных
на ней компонентов. Вам не надо мучиться, многократно запуская приложение и
выбирая наиболее удачные размеры окна и компонентов. Результаты проектирования
вы видите, даже не компилируя программу, немедленно после выполнения какой-то
операции с помощью мыши.
Но достоинства визуального программирования не сводятся к этому. Самое главное
заключается в том, что во время проектирования формы и размещения на ней компонентов
Delphi автоматически формирует коды программы, включая в нее соответствующие
фрагменты, описывающие данный компонент. А затем в соответствующих диалоговых
окнах пользователь может изменить заданные по умолчанию значения каких-то свойств
этих компонентов и, при необходимости, написать обработчики каких-то событий.
То есть проектирование сводится, фактически, к размещению компонентов на форме,
заданию некоторых их свойств и написанию, при необходимости, обработчиков событий.
Компоненты могут быть визуальные, видимые при работе приложения, и невизуальные,
выполняющие те или иные служебные функции. Визуальные компоненты сразу видны
на экране в процессе проектирования в таком же виде, в каком их увидит пользователь
во время выполнения приложения. Это позволяет очень легко выбрать место их расположения
и их дизайн — форму, размер, оформление,
текст, цвет и т.д. Невизуальные компоненты видны на форме в процессе проектирования
в виде пиктограмм, но пользователю во время выполнения они не видны, хотя и выполняют
для него за кадром весьма полезную работу.
В библиотеки визуальных компонентов Delphi включено множество типов компонентов
и их номенклатура очень быстро расширяется от версии к версии. Имеющегося уже
сейчас вполне достаточно, чтобы построить практически любое самое замысловатое
приложение, не прибегая к созданию новых компонентов. При этом даже неопытный
программист, делающий свои первые шаги на этом поприще, может создавать приложения,
которые выглядят совершенно профессионально.
Компоненты библиотек Delphi и типы других объектов оформляются в виде классов.
Классы — это типы, определяемые пользователем. В классах описываются свойства
объекта, его методы и события, на которые он может реагировать. Язык программирования
Object Pascal, который используется в Delphi, предусматривает только инструментарий
создания классов. А сами классы создаются разработчиками программного обеспечения.
Создатели Delphi уже разработали для вас множество очень полезных классов и включили
их в библиотеки системы. Этими классами вы пользуетесь при работе в Интегрированной
Среде Проектирования. Впрочем, это нисколько не мешает создавать вам свои новые
классы.
Если бы при создании нового класса вам пришлось все начинать с нуля, то эффективность
этого занятия была бы под большим сомнением. Да и разработчики Delphi вряд ли
создали бы в этом случае такое множество классов. Действительно, представьте
себе, что при разработке нового компонента, например, какой-нибудь новой кнопки,
вам пришлась бы создавать все: рисовать ее изображение, описывать все свойства,
определяющие ее место расположения, размеры, надписи и картинки на ее поверхности,
цвет, шрифты, описывать методы, реализующие ее поведение — изменение размеров,
видимость, реакции на сообщения, поступающие от клавиатуры и мыши. Вероятно,
представив себе все это, вы отказались бы от разработки новой кнопки.
К счастью, в действительности все обстоит гораздо проще, благодаря одному важному
свойству классов — наследованию. Новый класс может наследовать свойства, методы,
события своего родительского класса, т.е. того класса, на основе которого он
создается. Например, при создании новой кнопки можно взять за основу один из
уже разработанных классов кнопок и только добавить к нему какие-то новые свойства
или отменить какие-то свойства и методы родительского класса.
Благодаря визуальному объектно-ориентированному программированию была создана
технология, получившая название быстрая разработка приложений, по-английски RAD
— Rapid Application Development. Эта технология характерна для нового поколения
систем программирования, к которому относится и Delphi.
Delphi базируется на языке Object Pascal (впрочем, начиная с версии Delphi 7
разработчики назвали его языком Delphi). Компиляторы с языков семейства Паскаль
фирмы Borland (начиная с Turbo Pascal 1.0) были одними из самых быстрых компиляторов.
В настоящее время Object Pascal — это объектно-ориентированный язык с твердой
опорой в виде хорошего компилятора.
Надо иметь в виду, что ориентация приложений Delphi на Object Pascal нисколько
не сужает возможностей разработчика. Приложения Delphi прекрасно могут использовать
разработки на других языках, включая C++ и даже ассемблер. Можно использовать
библиотеки, созданные другими фирмами, в частности, Microsoft или независимыми
разработчиками. Можно реализовывать свои разработки в виде самостоятельных выполняемых
файлов или в виде пакетов, поддерживающих выполнение ряда приложений.
Отдельно надо сказать об одной из главных задач Delphi — разработке приложений
для работы с базами данных. В этой области Delphi занимает самые передовые позиции,
работая с любыми системами управления базами данных.
В Целом Delphi – великолепный инструмент, как для начинающих программистов, так
и для ассов программирования. Так что не зря вы заинтересовались Delphi.