1. Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
1
Лекция 11 (ч.1)
Синтаксис и программные конструкции Visual C
1. Введение в C++Builder
1.1. Эволюция систем программирования
Средства разработки приложений для ЭВМ как основной инструмент программиста
должны обеспечивать возможность написания эффективного кода с точки зрения современных
технологий и при этом предоставлять комфортные условия для работы программиста, позволяя
ему сосредоточиться на решении стоящих перед ним задач. Достичь баланса этих двух
основных функций удается далеко не всякой инструментальной системе программирования
(ИСП). Разработчики ИСП прошли довольно долгий путь совершенствования, прежде чем
достичь той вершины, представителем которой является описываемая в настоящем пособии
система программирования C++ Builder. Рассмотрим основные этапы эволюции ИСП на основе
языка С [4].
Первой ступенью эволюции систем программирования стало появление языка
программирования C++ и библиотек классов C++, которые заключали в себе сотни строк
кода, необходимых даже для простейшего отображения окна на экране, однако обращение к
этим классам занимало в программе на C++ всего несколько строк. Этот этап эволюции
характеризуется наличием раздельных элементов системы программирования – текстового
редактора, компилятора, линковщика, отладчика, справочника по функциям языка С. Процесс
разработки приложения здесь заключается в последовательном вызове этих элементов из
командной строки операционной системы. Это, очевидно, сильно замедляет процесс
программирования.
Вторым поколением средств разработки для Windows стало появление средств
интегрированной среды разработки (Integrated Development Environment, IDE). Эти средства
позволяют программисту редактировать, компилировать, компоновать, отлаживать
программы непосредственно в одном приложении. Интегрированные средства отладки
2. Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
2
появились чуть позже и были быстро взяты на вооружение программистами. Практически все
современные ИСП строятся по принципу IDE.
Следующий шаг эволюции средств разработки стал результатом развития концепции
каркасов (framework). Каркас — это основа, скелет вашего приложения, на основе которого
разрабатывается как структура программы, так и детали ее пользовательского интерфейса.
Каркасы кода действительно очень похожи на стены, балки, водопровод и электрические
коммуникации строительных каркасов зданий. Каркасы представляют собой библиотеки классов,
которые предлагаются разработчику как строительные блоки для создания его приложения.
Каждый класс такой библиотеки представляет собой уже готовый к использованию элемент
программного или пользовательского интерфейса приложения (окно, меню, таймер). При этом
каркасные приложения имеют стандартную структуру, реализующую типовой алгоритм
функционирования программы. Достоинства такого подхода очевидны – типовые элементы
приложения предоставляются программисту в готовом виде, и вместо многих десятков строк кода,
создающих, например, обычное окно, он может воспользоваться классом «Окно», который
содержит в себе все необходимые для работы окна методы и данные. В качестве примера каркасов
можно назвать библиотеки MFC (Microsoft Foundation Class), OWL (Object Windows Library).
Настоящей проблемой технологии каркасов являются их ограничения. Несмотря на то, что
каркасы действительно ускоряют разработку приложений, предоставляя в распоряжение
разработчика многие из основных функций нормального Windows-приложения, они сразу же
встают на пути приложения, которое не укладывается в привычные рамки, требует
нестандартного решения, не предусмотренного разработчиками каркаса. Еще одно неудобство
каркасных технологий – плохая визуализация процесса сборки приложения из классов, когда и
внешний вид элемента пользовательского интерфейса, и связи между отдельными элементами
становятся видны разработчику только на этапе работы программы.
Развитием концепции каркасов стало появление компонентной модели ИСП,
применяемой в таких системах, как Delphi, C++ Builder. В основу программирования здесь также
положена библиотека, но это уже библиотека компонент (VCL, Visual Component Library).
Компоненты не диктуют строгую структуру программы, они могут использоваться
программистом по его усмотрению для достижения поставленной цели. Благодаря своей
многофункциональной внутренней архитектуре, основанной на использовании свойств и
событий, компоненты можно гораздо гибче адаптировать к требованиям той или иной задачи.
3. Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
3
Помимо использования компонентной модели, многие современные ИСП строятся по
технологии RAD (Rapid Application Development), характеризующейся наличием визуальной
среды проектирования, представляющей еще на этапе проектирования приложения весь его
графический интерфейс в виде, аналогичном тому, каким он будет на этапе работы программы.
Также на этапе проектирования в визуальной форме (в инспекторе объектов) задаются основные
свойства компонент, связи компонент друг с другом. По данным фирмы Borland, в современных
программах около 97% кода приходится на оформление внешнего вида, и лишь 2-3% на
основную функциональность программы. Здесь-то и приходит на помощь концепция RAD.
Благодаря мощным инструментальным средствам, входящим в средства программирования,
поддерживающие RAD, можно значительно автоматизировать процесс создания компонентов
оформления и интерфейса, разгрузив программиста, избавив его от рутины, и дав возможность
сконцентрировать усилия и внимание на основных функциях программы.
1.2. Основные достоинства системы программирования C++ Builder
Система объектно-ориентированного программирования C++Builder производства
корпорации Borland предназначена для операционных систем платформы Win32. С++Builder –
это законченный, гибкий инструмент RAD, сочетающий мощь современного компилятора языка
С++, удобство средств визуальной разработки приложений, достоинства компонентного подхода
к проектированию с открытыми возможностями пополнения имеющихся в распоряжении
разработчика компонент[2].
Интегрированная среда разработки объединяет редактор форм, инспектор объектов,
палитру компонент, администратор проекта и полностью интегрированные редактор кода и
отладчик - инструменты быстрой разработки программных приложений, обеспечивающие
полный контроль над кодом и ресурсами.
Профессиональные средства языка C++ интегрированы в визуальную среду разработки.
C++Builder предоставляет быстродействующий компилятор языка Borland C++,
соответствующий стандарту ANSI. Для повышения скорости работы в системе используется
эффективный инкрементальный загрузчик и гибкие средства отладки как на уровне исходных
инструкций, так и на уровне ассемблерных команд. Компилятор системы С++Builder
поддерживает технологии шаблонов (templates), именованных областей видимости (namespaces),
обработки исключительных ситуаций (exception handling), библиотеки стандартных шаблонов
4. Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
4
STL (Standard Template Library), информации о типах времени выполнения RTTI (Run Time Type
Information). Инкрементальный компилятор и линковщик системы обрабатывают при повторной
сборке проекта только те его строки, которые изменялись с момента предыдущей компиляции,
тем самым экономя время сборки приложения.
Конструирование по способу "drag-and-drop" позволяет создавать приложение простым
перетаскиванием захваченных мышью визуальных компонент из палитры компонент на форму
приложения. Инспектор объектов предоставляет возможность оперировать со свойствами и
событиями компонент уже на этапе разработки приложения, автоматически задавая значения
свойств компонент, создавая заготовки функций обработки событий, которые необходимо
наполнять кодом.
Механизмы двунаправленной разработки (two-way-tools) позволяют синхронизировать
процесс визуального проектирования форм и генерацию исходного кода, когда манипулирование
с визуальными средствами редактора форм или инспектора объектов приводит к автоматическим
изменениям структуры программы, объявлений объектов программы.
Библиотека Визуальных Компонент VCL. Компоненты библиотеки VCL составляют
основу программного инструментария программиста на С++Builder. Компонент – это объект,
который своими свойствами, методами и событиями описывает поведение некоторого элемента
пользовательского (кнопка, список строк в окне, меню) или программного (соединение с базой
данных, сокет, таймер) интерфейса программы. Так как каждый компонент является
законченным программным объектом, то, конструируя свое приложение как совокупность
взаимодействующих компонент, программист избавляется от необходимости писать большие
фрагменты кода – они уже реализованы разработчиками компонент. Находясь в среде объектно-
ориентированного программирования C++Builder, компоненты можно использовать
непосредственно, менять их свойства, облик и поведение или порождать производные элементы,
обладающие нужными отличительными характеристиками. Хорошим подспорьем программисту
является наличие исходных текстов библиотеки визуальных компонент, что облегчает
разработку новых компонент на базе готовых примеров. C++Builder 6 версии Standard содержит
более 80 компонент, версии Professional – более 150 компонент, версии Enterprise – более 200
компонент [4]. Благодаря открытости архитектуры VCL, список может быть дополнен как
компонентами, приобретенными у сторонних разработчиков, так и компонентами собственной
разработки.
5. Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
5
Использование модели “свойства-методы-события” PEM , реализованное в С++
Builder как расширение языка С++, определяет внутреннюю структуру компонент, превращая их
в удобный инструмент визуального проектирования. Компонент в этой модели является
расширением понятия «класс» стандартного языка С++ с добавлением понятий «свойство» и
«событие». Свойство является расширением понятия «компонентные данные класса», оно
устанавливает способ получения и сохранения значений характеристик компонент при
манипулировании ими как на этапе проектирования, так и в процессе работы программы.
Событие определяет способ реакции компонента на внешние «раздражители», которыми могут
стать сообщения, приходящие от пользователя, других компонент, операционной системы. Для
поддержки модели PEM в язык внесены такие ключевые слова, как __property, _published,
_closure и др. Подробнее о свойствах и событиях речь пойдет в главах 4 и 8.
Доступ к функциям API позволяет расширять функциональность разрабатываемых
приложений за счет возможностей, предусмотренных операционной системой, которые,
возможно, не реализованы компонентами VCL, но которые, таким образом, не выпадают из
арсенала программиста.
Хранилище объектов является инструментом новой методики хранения и повторного
использования модулей данных, объектов, форм и программной бизнес-логики. Поскольку
построение нового приложения на существующем фундаменте значительно экономит временные
затраты, хранилище объектов предоставляет для повторного использования готовые структуры:
формы и законченные программные модули. Используя хранилище объектов, программист
может начинать новый проект на твердой платформе предшествующих разработок, лишь
добавляя в них фрагменты, характерные для стоящей перед ним задачи.
Поддержка промышленных стандартов ActiveX, OLE, СОМ, MAPI, Windows Sockets
TCP/IP, ISAPI, NSAPI, ODBC, Unicode и MBCS существенно повышает функциональную мощь
системы программирования, превращает ее в универсальное средство разработки приложений
различной практической направленности.
Возможности работы с базами данных. С++Builder содержит полный набор компонент
для работы с базами данных, которые вообще не требуют программирования. Разработка по
способу "drag-and-drop" многократно упрощает и ускоряет обычно трудоемкий процесс
программирования СУБД в архитектуре клиент/сервер. Широкий выбор компонент управления
визуализацией и редактированием позволяет легко изменять вид отображаемой информации и
поведение программы. Механизм BDE (Borland Database Engine) поддерживает
6. Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
6
высокопроизводительный 32-разрядный доступ к базам данных dBASE, Paradox, Sybase, Oracle,
DB2, Microsoft SQL Server, Informix, InterBase, MySQL. C++Builder использует контроллер
ODBC (Open Database Connectivity) производства Microsoft для связи с серверами баз данных
Excel, Access, FoxPro. Начиная с версии 6 поддерживается технология SOAP для
многоуровневых приложений баз данных, добавлен независимый от архитектуры BDE набор
компонентов dbExress, позволяющий создавать приложения клиент/сервер, работающие с базами
данных различных форматов, поддерживается технология доступа к базам данных ADO. Все это
в сочетании с большим количеством визуальных компонент отображения информации из баз
данных делает C++Builder мощной и гибкой средой программирования баз данных на языке С++.
Вывод
Система программирования С++Builder является современным средством разработки
приложений, поддерживающим компонентный подход и построенный по принципу визуального
проектирования. Удобные встроенные средства проектирования и поддержка большинства
современных технологий в области разработки баз данных, сетевых приложений,
мультимедийных приложений превращают С++Builder в универсальный инструмент
программиста любой специализации.