Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Емельянов.doc
Скачиваний:
11
Добавлен:
03.11.2018
Размер:
3.25 Mб
Скачать

В.И. Емельянов

В.И. Воробьев

Т.П. Тюрина

ОСНОВЫ

ПРОГРАММИРОВАНИЯ НА

DELPHI

Под редакцией доктора технических наук, профессора В.М. Черненького

Допущено

Учебно-методическим объединением

по университетскому политехническому

образованию в качестве учебного пособия

для студентов высших учебных заведений,

обучающихся по направлению «Информатика

и вычислительная техника»

Москва

«Высшая школа» 2005

УДК 004.43 ББК 32.973-018.1 L Е60

Рецензенты:

д-р техн. наук В.Н, Богатиков (Институт информатики и математического моделиро­вания технологических процессов РАН); д-р техн. наук В.И. Захаров (Институт проблем комплексного освоения недр PAI [}

Емельянов, В.И.

Е60

Основы программирования на Delphi: Учеб. пособие для вузов/В.И. Емельянов, В.И. Воробьев, Т.П. Тюрина; Под ред. В.М. Чер­ненького. — М.: Высш. шк., 2005.— 231 с: ил.

ISBN 5-06-004869-1

Пособие содержит основные начальные сведения по программированию на Del­phi, более 20 заданий, рекомендованных к обязательному выполнению, и составляет материал курса «Алгоритмические языки программирования»

Для студентов вузов, обучающихся по направлению «Информатика и вычисли­тельная техника». Может быть рекомендовано студентам других направлений и всем желающим изучить основы программирования на Delphi.

УДК 004.43 ББК 32.973-018.1

ISBN 5-06-004869-1

ФГУП «Издательство «Высшая школа», 2005

Оригинал-макет данного издания является собственностью издательства «Высшая школа», и его репродуцирование (воспроизведение) любым способом без согласия издатель­ства запрещается.

ВВЕДЕНИЕ

Основной задачей изучения дисциплины "Алгоритмические языки и технология программирования" является обучение студентов методике раз­работки программ, основам алгоритмизации, методам отладки, тестирования и построения приложений на ЭВМ. В качестве базового языка программиро­вания выбран Object Pascal (Паскаль).

Достоинства языка Паскаль общепризнанны: рациональность, лаконич­ность, полное соответствие идее структурного программирования, наличие мощной системы программирования и пакетов прикладных программ для решения широкого круга задач.

В настоящее время продолжают оказывать решающее влияние на со­стояние и развитие всех областей современного программирования идеи визуального, объектно-ориентированного и событийно управляемого про­граммирования. Классическим выражением этих идей является среда про­граммирования DELPHI и язык программирования OBJECT PASCAL.

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

Чтение книг по программированию - это хорошо, но гораздо лучше практика в программировании. Соответственно предлагаемое пособие - это фундамент Вашего успеха.

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

Данное учебное пособие содержит большое количество примеров. Тео­ретический материал изложен исходя из постепенного усвоения тех или иных языковых средств решения задач. Отличием данного пособия от мно­гочисленных книг, посвященных программированию на DELPHI, является подробное описание реального процесса создания программ. Это означает,

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

В данном пособии рассмотрена среда визуального программирования Delphi версии 7.0. Все примеры выполнены в операционной среде Windows ХР.

ОСНОВЫ DELPHI

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

Особенностью программирования в Windows является наличие много­численных технологий, используемых при создании приложений различных типов, например офисных, для работы с базами данных, в среде "клиент-сервер", в Интернете и т.д. Среда разработки приложений Delphi для самых разнообразных предприятий и организаций, являющаяся интеллектуальной собственностью фирмы Borland, на протяжении ряда лет успешно выдержи­вает (и выигрывает!) жесткую конкуренцию с другими системами подобного типа.

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

ОБЩАЯ ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ

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

Существуют различные подходы к программированию. Одним из них является структурное программирование, представляющее попытку превра-

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

Существуют различные подходы к программированию. Одним из них является структурное программирование, представляющее попытку превра-

тить искусство программирования в обычную науку. Основной принцип структурного программирования заключается в создании некоторых анали­тических моделей решаемой задачи перед началом кодирования. Двумя наи­более используемыми старыми моделями являются разработки "сверху вниз" и "снизу вверх".

Разработка "сверху вниз" означает, что программа создается исходя из принципа первоочередного решения главных задач. Новые более детальные уровни разрабатывают по мере успешной реализации предыдущих более высоких уровней.

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

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

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

ЯЗЫК ПРОГРАММИРОВАНИЯ

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

В основе любой программы на Delphi лежит язык Object Pascal - язык программирования высокого уровня, позволяющий использовать такие объ­ектно-ориентированные языковые средства, как динамические массивы, пе­регрузка методов, параметры, заданные по умолчанию, файловые потоки, многопоточные приложения и многое другое.

В качестве главного момента можно отметить следующее: изучение Del­phi следует вести в двух направлениях: изучение среды разработки и изуче­ние языка программирования.

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

В Delphi разрабатываются приложения, работающие под управлением операциионной системы Windows. Эти приложения используют библиотеку базовых классов объектов (библиотеку компонентов). Таким образом, при­ложение представляет собой совокупность объектов, которыми являются само приложение и все его компоненты: окна, кнопки, меню и т.д. Объект-приложение разрабатывается как программа-проект, которая взаимодейст­вует с другими объектами. Это взаимодействие, как и положено в объектно-ориентированном мире, выражается в сообщениях, посылаемых друг другу объектами. Идея обмена сообщениями легла в основу операционной систе­мы Windows, где объекты-окна посылают и получают сообщения.

Основные принципы и понятия объектно-ориентированного программи­рования: класс, поля, методы, свойства, инкапсуляция, объект, наследование, полиморфизм.

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

Для придания гибкости доступа к полям существуют такие элементы класса, как свойства. Свойства реализуют механизм доступа к полям. Каж­дому свойству соответствует свое поле, содержащее некоторое текущее зна­овые поля и методы.

Метод базового класса иногда полезно объявить как виртуальный. Вир­туальность обеспечивает возможность написания полиморфного метода,

который может обеспечить разнообразное {полиморфное) поведение вирту­ального метода в зависимости от использования его тем или иным объектом.

ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ

Визуальное программирование позволяет разрабатывать все элементы приложения, непосредственно наблюдая результаты своей работы на экране. Иными словами, разработчик увидит, как будет работать его приложение еще до того, как полностью будет написана программа. Реализация визуаль­ного программирования стала возможной в связи с развитием графического интерфейса GUI (Graphical User Interface).

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

Жизнь объектов состоит в обмене сообщениями. Сообщения иницииру­ются событиями, которые происходят во внешнем по отношению к прило­жению мире: при действиях пользователя, операционной системы или дру­гого приложения. События могут возникать, например, при нажатии на кнопку мыши или клавиши на клавиатуре. Сообщение может быть проигно­рировано или обработано. Для обработки сообщения необходимо запро­граммировать соответствующий обработчик события. Соответственно в ООП, в том числе и Delphi, основным стилем программирования является управляемое событиями программирование.

СОБЫТИЙНО УПРАВЛЯЕМОЕ ПРОГРАММИРОВАНИЕ

Рассмотрим простую и естественную модель событийно управляемого и визуального программирования, характерную для Delphi. В типовой модели у приложения три составляющие: визуальная, системная и обработчики событий (рис.1).

Визуальная составляющая задает образ на экране, с которым будет рабо­тать пользователь, т. е. визуальная составляющая определяет интерфейс пользователя. Большинство элементов интерфейса (кнопки, окна, списки и др.) стандартизированы. Поэтому в разных средах разработки (Visual Basic, Visual C++, Delphi и др.) визуальный инструментарий содержит одни и те же элементы интерфейса (элементы управления).

Обработчик событий 1

Обработчик событий 2

■ ■ ■

Обработчик событий п -1

Обработчик событий п

Рис. 1

Элементы управления являются объектами. Их свойства и поведение оп­ределяются полями и методами соответствующих базовых классов. Классы, порождающие интерфейсные элементы управления, в Delphi называют ком­понентами. Все визуальные компоненты находятся в библиотеке визу­альных компонентов Delphi VCL (Visual Component Library). Кроме визу­альных компонентов в этой библиотеке есть невизуальные компоненты, не имеющие образа на экране монитора.

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

В большинстве приложений нет необходимости программировать сис­темную составляющую. Кроме того, такое программирование часто требует владения функциями Windows API (Application Programm Interface, функции из открытых библиотек Windows).

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

Windows -приложение

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

События, возникающие в процессе работы компьютера (инициирован­ные пользователем или связанные с посылкой сообщений от одного прило­жения к другому, от одного окна к другому того же приложения), приводят к возникновению сообщений, из которых операционная система (\Упкю\уз) организует системную очередь сообщений. Далее сообщения распределя­ются по приложениям и создается для каждого приложения своя очередь. В этой очереди группируются сообщения от разнообразных источников: мы­ши, клавиатуры, таймера, других приложений и от самой операционной сис­темы. В этой схеме есть исключения, так как некоторые сообщения напря­мую направляются окну, например, сообщение WM_DESTROY, уведом­ляющее о закрытии данного окна.

windows накладывает довольно жесткие ограничения на структуру при­ложений - каждое имеет главную процедуру (в Delphi это программа-проект), одинаково устроенную для всех приложений. Главная процедура начинает работу с регистрации класса окна приложения, затем создает и ри­сует на экране главное окно и, возможно, другие окна. После создания объ­ектов-окон, связанных с приложением, запускается цикл обработки очереди сообщений приложения, который иногда называют основным циклом об­работки сообщений.

Среда программирования

Интегрированная среда разработки приложений в Delphi называется ШЕ (Integrated Development Environment). Под этим названием скрывается целая коллекция окон, меню и программ, которые позволяют проектировать интерфейс, связывать код с каждым экранным элементом и полностью от­лаживать приложение внутри Delphi.

При входе в IDE стандартно появляются 4 окна: главное окно (рис.2), окно инспектора объектов (Object Inspector), окно форм (Form Designer) и окно редактора кода (Code Editor).

Главное окно является управляющим центром IDE. Оно управляет фай­лами, включаемыми в приложение, и выполняет всю работу с их сопровож-

10


дением, компиляцией и отладкой. Оно состоит из трех отдельных элементов: панели меню (Menubar), панели инструментов (Speedbar) и палитры ком­понентов (Component Palette).

Окно инспектора объектов оформлено в виде двухстраничного блокнота (рис. 3). Это окно ис­пользуется для настройки компонента или формы. Первая страница используется для настройки свойств (Properties), вторая - для настройки собы­тий (Events).

Форма является контейнером интерфейсных элементов. Окно форм (проектировщик форм) ис­пользуется в процессе разработки интерфейса (рис. 4). Вместе с инспектором объектов проекти­ровщик форм позволяет добавлять компоненты в форму, модифицировать их, связывать обработчи­ки событий с программным кодом на Object Pascal, используя окно редактора кода.

Рис.3

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

Рис.4

Окно редактора кода (Code Editor, рис.5, справа) позволяет редактиро­вать коды всех модулей (программных единиц), входящих в разрабатывае­мое приложение. Это окно оформлено в виде многостраничного блокнота.

11

Каждая страница отображает код той или иной программной единицы, вхо­дящей в приложение. С помощью проектировщика форм и инспектора объ­ектов представляются все виды частей "фасада" приложения, но без редак­тора кода нельзя связать эти части в единое целое.

Рис. 5

По умолчанию слева от редактора кода находится окно Code Explorer (см. рис. 5). Оно используется для поиска в редакторе кода какого-либо про­граммного элемента: типа, класса, метода и т.д. Это окно можно выделить в самостоятельное и перенести в другое место.

ШЕ Delphi обладает большой гибкостью в настройке рабочей среды. Для настройки используется диалоговое окно Environment Options, которое вы­бирается, раскрывая пункты меню Tools - Options.

ПЕРВОНАЧАЛЬНЫЕ СВЕДЕНИЯ О ПРОЕКТЕ ПРИЛОЖЕНИЯ

Основу любой разработки a Delphi составляет проект, объединяющий различные элементы в единое целое и обеспечивающий требуемую структу­ру для Windows-приложения. В простейшем случае в проект входят модули и формы различных типов. Как правило, из одного проекта получается одно приложение.

Самый маленький проект состоит из главного файла (программы-проекта), который имеет расширение DPR. Кроме этого файла в проект вхо­дят файлы с расширениями CFG (настройки проекта), DOF (опции проекта), DSK (настройки среды), RES (файл ресурсов, в котором хранятся курсоры, значки, строки сообщений и др.). Главный файл проекта имеет стандартную форму и автоматически генерируется средой Delphi.

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

12

ляет на языке Object Pascal связать эти элементы в единое целое. Форма хра­нится в файле с расширением DFM (файл ресурсов формы), а программа модуля - в файле с расширением PAS.

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

При входе в ШЕ Delphi автоматически строится стандартный проект, включающий одну форму и связанный с ней один модуль. Если требуется выбрать какой-либо другой вариант проекта, то используется репозиторий (специальное хранилище, Repository, рис. 6).

Рис.6

В репозиторий содержатся не только варианты проектов, но и элементы, которые можно добавлять в проект. Открыть репозиторий можно при помо­щи команды New-Other меню File. Если перед этим закрыть проект, предла­гаемый по умолчанию (Close All в меню File), и выбрать в репозиторий Ap­plication, то получим стандартный проект, т.е. такой же, какой в самом на­чале был закрыт.

Обычно все файлы проекта располагают в одном каталоге. Сборка всего проекта выполняется при его компиляции (Ctrl+F9). При этом имя созда­ваемого приложения (ЕХЕ-файл) или динамически загружаемой библиотеки (DLL-файл) совпадает с названием проекта. Для каждого модуля создается файл кода с расширением DCU.

Для управления составными частями проекта служит диспетчер проек­тов (Project Manager, рис. 7), который вызывается командой Project Man­ager меню View главного окна Delphi.

13

Рис.7

В общем случае в Delphi всегда создается группа проектов. Простой проект представляет группу из одного проекта.