SlideShare a Scribd company logo
1 of 6
Download to read offline
Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
1
Лекция 11 (ч.1)
Синтаксис и программные конструкции Visual C
1. Введение в C++Builder
1.1. Эволюция систем программирования
Средства разработки приложений для ЭВМ как основной инструмент программиста
должны обеспечивать возможность написания эффективного кода с точки зрения современных
технологий и при этом предоставлять комфортные условия для работы программиста, позволяя
ему сосредоточиться на решении стоящих перед ним задач. Достичь баланса этих двух
основных функций удается далеко не всякой инструментальной системе программирования
(ИСП). Разработчики ИСП прошли довольно долгий путь совершенствования, прежде чем
достичь той вершины, представителем которой является описываемая в настоящем пособии
система программирования C++ Builder. Рассмотрим основные этапы эволюции ИСП на основе
языка С [4].
Первой ступенью эволюции систем программирования стало появление языка
программирования C++ и библиотек классов C++, которые заключали в себе сотни строк
кода, необходимых даже для простейшего отображения окна на экране, однако обращение к
этим классам занимало в программе на C++ всего несколько строк. Этот этап эволюции
характеризуется наличием раздельных элементов системы программирования – текстового
редактора, компилятора, линковщика, отладчика, справочника по функциям языка С. Процесс
разработки приложения здесь заключается в последовательном вызове этих элементов из
командной строки операционной системы. Это, очевидно, сильно замедляет процесс
программирования.
Вторым поколением средств разработки для Windows стало появление средств
интегрированной среды разработки (Integrated Development Environment, IDE). Эти средства
позволяют программисту редактировать, компилировать, компоновать, отлаживать
программы непосредственно в одном приложении. Интегрированные средства отладки
Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
2
появились чуть позже и были быстро взяты на вооружение программистами. Практически все
современные ИСП строятся по принципу IDE.
Следующий шаг эволюции средств разработки стал результатом развития концепции
каркасов (framework). Каркас — это основа, скелет вашего приложения, на основе которого
разрабатывается как структура программы, так и детали ее пользовательского интерфейса.
Каркасы кода действительно очень похожи на стены, балки, водопровод и электрические
коммуникации строительных каркасов зданий. Каркасы представляют собой библиотеки классов,
которые предлагаются разработчику как строительные блоки для создания его приложения.
Каждый класс такой библиотеки представляет собой уже готовый к использованию элемент
программного или пользовательского интерфейса приложения (окно, меню, таймер). При этом
каркасные приложения имеют стандартную структуру, реализующую типовой алгоритм
функционирования программы. Достоинства такого подхода очевидны – типовые элементы
приложения предоставляются программисту в готовом виде, и вместо многих десятков строк кода,
создающих, например, обычное окно, он может воспользоваться классом «Окно», который
содержит в себе все необходимые для работы окна методы и данные. В качестве примера каркасов
можно назвать библиотеки MFC (Microsoft Foundation Class), OWL (Object Windows Library).
Настоящей проблемой технологии каркасов являются их ограничения. Несмотря на то, что
каркасы действительно ускоряют разработку приложений, предоставляя в распоряжение
разработчика многие из основных функций нормального Windows-приложения, они сразу же
встают на пути приложения, которое не укладывается в привычные рамки, требует
нестандартного решения, не предусмотренного разработчиками каркаса. Еще одно неудобство
каркасных технологий – плохая визуализация процесса сборки приложения из классов, когда и
внешний вид элемента пользовательского интерфейса, и связи между отдельными элементами
становятся видны разработчику только на этапе работы программы.
Развитием концепции каркасов стало появление компонентной модели ИСП,
применяемой в таких системах, как Delphi, C++ Builder. В основу программирования здесь также
положена библиотека, но это уже библиотека компонент (VCL, Visual Component Library).
Компоненты не диктуют строгую структуру программы, они могут использоваться
программистом по его усмотрению для достижения поставленной цели. Благодаря своей
многофункциональной внутренней архитектуре, основанной на использовании свойств и
событий, компоненты можно гораздо гибче адаптировать к требованиям той или иной задачи.
Лекция №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), библиотеки стандартных шаблонов
Лекция №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, список может быть дополнен как
компонентами, приобретенными у сторонних разработчиков, так и компонентами собственной
разработки.
Лекция №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) поддерживает
Лекция №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 в универсальный инструмент
программиста любой специализации.

More Related Content

What's hot

10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
KewpaN
 
C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12
Technopark
 
моап 2011 02_active_1
моап 2011 02_active_1моап 2011 02_active_1
моап 2011 02_active_1
Irina Hahanova
 
JEE Conf: Архитектура Android приложений: полезные и вредные советы
JEE Conf: Архитектура Android приложений: полезные и вредные советыJEE Conf: Архитектура Android приложений: полезные и вредные советы
JEE Conf: Архитектура Android приложений: полезные и вредные советы
dmalykhanov
 
Лабораторные практические работы
Лабораторные практические работыЛабораторные практические работы
Лабораторные практические работы
Rauan Ibraikhan
 

What's hot (20)

модульное программирование (35)
модульное программирование  (35)модульное программирование  (35)
модульное программирование (35)
 
Software Engineering Knowledge Matrix
Software Engineering Knowledge MatrixSoftware Engineering Knowledge Matrix
Software Engineering Knowledge Matrix
 
Histori of Vba
Histori of VbaHistori of Vba
Histori of Vba
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системах
 
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
Базовые принципы и понятия технологии разработки объектно-ориентированных инф...
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
 
Net framework
Net frameworkNet framework
Net framework
 
C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12
 
моап 2011 02_active_1
моап 2011 02_active_1моап 2011 02_active_1
моап 2011 02_active_1
 
лекция 17
лекция 17лекция 17
лекция 17
 
JEE Conf: Архитектура Android приложений: полезные и вредные советы
JEE Conf: Архитектура Android приложений: полезные и вредные советыJEE Conf: Архитектура Android приложений: полезные и вредные советы
JEE Conf: Архитектура Android приложений: полезные и вредные советы
 
Интегрированная среда разработки
Интегрированная среда разработкиИнтегрированная среда разработки
Интегрированная среда разработки
 
Технология разработки программного обеспечения
Технология разработки программного обеспеченияТехнология разработки программного обеспечения
Технология разработки программного обеспечения
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программист
 
WinRT
WinRTWinRT
WinRT
 
Технология разработки программного обеспечения
Технология разработки программного обеспеченияТехнология разработки программного обеспечения
Технология разработки программного обеспечения
 
Лекция 1. Введение в Android.
Лекция 1. Введение в Android.Лекция 1. Введение в Android.
Лекция 1. Введение в Android.
 
Лабораторные практические работы
Лабораторные практические работыЛабораторные практические работы
Лабораторные практические работы
 
методология Rad (46)
методология Rad (46)методология Rad (46)
методология Rad (46)
 
Xamarin.Forms в реальных проектах
Xamarin.Forms в реальных проектахXamarin.Forms в реальных проектах
Xamarin.Forms в реальных проектах
 

Similar to лек11 1

#2 Введение в Android Studio Основные аспекты.pdf
#2  Введение в Android Studio Основные аспекты.pdf#2  Введение в Android Studio Основные аспекты.pdf
#2 Введение в Android Studio Основные аспекты.pdf
SergeyAn2
 
ПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решенийПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решений
Виктор Золотов
 
Проект "Нихол"
Проект "Нихол"Проект "Нихол"
Проект "Нихол"
E-Journal ICT4D
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
Roman Dvornov
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
itc73
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
Serghei Urban
 
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Anatoly Kireev
 
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Ontico
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем
KewpaN
 

Similar to лек11 1 (20)

Lecture 11 2
Lecture 11 2Lecture 11 2
Lecture 11 2
 
2IDE~1.PPT
2IDE~1.PPT2IDE~1.PPT
2IDE~1.PPT
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
#2 Введение в Android Studio Основные аспекты.pdf
#2  Введение в Android Studio Основные аспекты.pdf#2  Введение в Android Studio Основные аспекты.pdf
#2 Введение в Android Studio Основные аспекты.pdf
 
Artsofte for b2 b
Artsofte for b2 b Artsofte for b2 b
Artsofte for b2 b
 
ПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решенийПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решений
 
Краткое описание библиотеки анализа кода VivaCore
Краткое описание библиотеки анализа кода VivaCoreКраткое описание библиотеки анализа кода VivaCore
Краткое описание библиотеки анализа кода VivaCore
 
Lec 9
Lec 9Lec 9
Lec 9
 
Проект "Нихол"
Проект "Нихол"Проект "Нихол"
Проект "Нихол"
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программирование
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
Новые возможности IBM WebSphere Portal v8 и IBM WCM v8
 
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем
 
лекция 3
лекция 3лекция 3
лекция 3
 
Обзор Технологий iOS
Обзор Технологий iOSОбзор Технологий iOS
Обзор Технологий iOS
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
 
JavaScript
JavaScriptJavaScript
JavaScript
 

More from Anastasia Snegina

птп по ппп 2013 2014
птп по ппп 2013 2014 птп по ппп 2013 2014
птп по ппп 2013 2014
Anastasia Snegina
 
прикл.прогр птп 13 14
прикл.прогр птп 13 14прикл.прогр птп 13 14
прикл.прогр птп 13 14
Anastasia Snegina
 
2012 2013 пм спп провидошина
2012 2013  пм спп провидошина2012 2013  пм спп провидошина
2012 2013 пм спп провидошина
Anastasia Snegina
 
2012 2013 пм спп провидошина
2012 2013  пм спп провидошина2012 2013  пм спп провидошина
2012 2013 пм спп провидошина
Anastasia Snegina
 
рп по у пп практике в
рп по у пп практике врп по у пп практике в
рп по у пп практике в
Anastasia Snegina
 
рп по пр практике в
рп по пр практике врп по пр практике в
рп по пр практике в
Anastasia Snegina
 
рп по у сп практике в
рп по у сп практике врп по у сп практике в
рп по у сп практике в
Anastasia Snegina
 
рп по у пп практике вт
рп по у пп практике втрп по у пп практике вт
рп по у пп практике вт
Anastasia Snegina
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике вт
Anastasia Snegina
 
рп по у сп практике вт
рп по у сп практике втрп по у сп практике вт
рп по у сп практике вт
Anastasia Snegina
 
рп по у пп практике вт
рп по у пп практике втрп по у пп практике вт
рп по у пп практике вт
Anastasia Snegina
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике вт
Anastasia Snegina
 
рп по у сп практике вт
рп по у сп практике втрп по у сп практике вт
рп по у сп практике вт
Anastasia Snegina
 

More from Anastasia Snegina (20)

птп по ппп 2013 2014
птп по ппп 2013 2014 птп по ппп 2013 2014
птп по ппп 2013 2014
 
прикл.прогр птп 13 14
прикл.прогр птп 13 14прикл.прогр птп 13 14
прикл.прогр птп 13 14
 
я.прогр птп
я.прогр птпя.прогр птп
я.прогр птп
 
пп кос вт
пп кос втпп кос вт
пп кос вт
 
пп кос в
пп кос впп кос в
пп кос в
 
пп кос в
пп кос впп кос в
пп кос в
 
2012 2013 пм спп провидошина
2012 2013  пм спп провидошина2012 2013  пм спп провидошина
2012 2013 пм спп провидошина
 
2012 2013 пм спп провидошина
2012 2013  пм спп провидошина2012 2013  пм спп провидошина
2012 2013 пм спп провидошина
 
пп кос вт
пп кос втпп кос вт
пп кос вт
 
рп по у пп практике в
рп по у пп практике врп по у пп практике в
рп по у пп практике в
 
рп по пр практике в
рп по пр практике врп по пр практике в
рп по пр практике в
 
рп по у сп практике в
рп по у сп практике врп по у сп практике в
рп по у сп практике в
 
рп по у пп практике вт
рп по у пп практике втрп по у пп практике вт
рп по у пп практике вт
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике вт
 
рп по у сп практике вт
рп по у сп практике втрп по у сп практике вт
рп по у сп практике вт
 
рп по у пп практике вт
рп по у пп практике втрп по у пп практике вт
рп по у пп практике вт
 
рп по пр практике вт
рп по пр практике втрп по пр практике вт
рп по пр практике вт
 
рп по у сп практике вт
рп по у сп практике втрп по у сп практике вт
рп по у сп практике вт
 
лр18
лр18лр18
лр18
 
лр15
лр15лр15
лр15
 

лек11 1

  • 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 в универсальный инструмент программиста любой специализации.