Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие по информатике. Часть 3

.pdf
Скачиваний:
25
Добавлен:
31.05.2015
Размер:
1.49 Mб
Скачать

21

Для каждой формы создаются два файла: файл описания формы(.dfm) и файл модуля (.pas).

При конструировании формы в файл описания автоматически включаются изменения, которые вносятся в форму.

Файл модуля формы содержит описание класса формы. Для пустой формы файл модуля имеет вид [3]:

Unit Unit1; interface uses

Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,forms,Dialogs; type

Tform1=class(Tform) private

{Private declarations} public

{Public declarations} end;

var Form1:Tform1;

implementation {раздел реализации}

{$R*.dfm} {Подключение визуального описания формы} end.

Файл модуля формы создается автоматически при добавлении формы. По умолчанию новая форма имеет тип Tform, и не содержит компонентов. В разделе interface модуля формы содержится описание класса формы, а в разделе implementation – подключение к модулю директивой $R визуального описания соответствующей формы. При размещении на форме компонентов, а также при создании обработчиков событий в модуль формы вносятся соответствующие изменения. При этом часть изменений Delphi вносит автоматически, а другую часть вносит разработчик. Все действия, связанные с программированием, выполняются в модулях форм.

Тексты модулей форм отображаются и редактируются с помощью Редактора кода. Открыть модуль формы можно в стандартном окне открытия файла командой File | Open (Файл | Открыть) или в диалоговом окне View Unit (Просмотр модуля), которое появляется при выполнении команды View | Units (Просмотр модуля) или при нажатии клавиш Ctrl+F12. В окне открытия модуля можно выбрать файл проекта. После выбора нужного модуля (или проекта) текст появляется на отдельной странице Редактора кода.

Файлы модулей

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

22

Файл ресурсов

При первом сохранении проекта автоматически создается файл ресурсов (.res) с именем, совпадающим с именем проекта. Файл ресурсов может содержать ресурсы:

пиктограммы; растровые изображения; курсоры.

Перечисленные компоненты являются ресурсами Windows. Первоначально файл ресурса содержит пиктограмму проекта (по умолчанию, изображение факела) для работы с файлами ресурсов используется графический редактор Image Editor, который можно вызвать командой Tools | Image Editor.

Параметры проекта

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

(Project Options), вызываемое командой Project | Options(Проект | Параметры).

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

Файл проекта

Файл проекта является центральным файлом проекта и представляет собственно программу. Для приложения, включающего в свой состав одну форму, файл проекта имеет вид [3]:

Program Project1; Uses

Forms,

Unit1 in „Unit1.pas‟{Form1};

{$R *.RES} Begin

Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;

End.

Имя проекта – Project1.

Компиляция выполняется с помощью меню или клавишами Ctrl +F9. В результате компиляции создается готовый к выполнению файл с расширением

.exe или динамически загружаемая библиотека с расширением .dll.

Выполнение проекта осуществляется командой F9. При зацикливании завершить приложение можно командой Run | Program Reset или Ctrl+F2.

Разработка приложения

Разработка приложения включает: создание интерфейса приложения;

определение функциональности приложения.

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

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

23

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

Создание интерфейса приложения

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

выбор компонента в Палитре компонентов и размещение на форме; изменение свойств компонента.

Выбор компонента выполняется щелчком мыши на нужном компоненте, в результате пиктограмма принимает утопленный вид и, если щелкнуть на свободном месте формы на ней, появится выбранный компонент и его пиктограмма принимает обычный вид. Пиктограммы компонентов отражают назначение компонентов. В обозначении типа объектов Delphi, в том числе и компонент указывается буква T. Это означает, что объект принадлежит классу T, например, TForm1, T – это имя класса, созданного по образцу стандартного класса TForm.

Классы в Delphi [3]

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

< название компонента>:<тип компонента>; например,

Tbutton1: Tbutton;

После размещения компонента на форме, можно изменять положение и размеры компонента с помощью мыши, а также его свойства(Properties) в окне инспектора объектов (Object Inspector). Свойства компонента реализуют способ доступа к полям в окне инспектора объектов, если компонент выделен маркерами. Свойства находятся в левой части Инспектора объектов. Свойства – это атрибуты, определяющие способ отображения и функционирования компонентов при выполнении приложения и могут быть изменены или заданы в правой части инспектора объектов. Для утверждения нового значения нажать <Enter>, для отмены нажать <ESC>. Среда Delphi обеспечивает

24

автоматизированный набор кода при вызове свойств и методов объектов и записи стандартных конструкций. При выполнении приложения значения свойств компонентов (доступных в окне Инспектора объектов) можно изменять с помощью операторов присваивания.

2 ОПРЕДЕЛЕНИЕ ФУНКЦИОНАЛЬНОСТИ ПРИЛОЖЕНИЯ

Для компонентов, размещенных на форме, разработчик может определить нужную реакцию на те или иные действия пользователя, например, что должно произойти, если нажать кнопку на форме. На форме, как правило, размещены компоненты, образующие интерфейс приложения, и разработчик должен для этих компонентов определить нужную реакцию на те или иные действия пользователя. Например, на нажатие кнопки или включение переключателя. Эта реакция и определяет функциональность приложения. Так, если при создании интерфейса на форме размещена кнопка Button1, то ее можно нажимать с помощью мыши; она отображает нажатие на себя визуально, но никаких действий она не выполняет до тех пор, пока не будет создана процедура обработки этого события. Для создания этой процедуры нужно выделить кнопку на форме и перейти на страницу событий инспектора объектов (Events), где указаны все возможные события для кнопки. При нажатии на кнопку возникает событие Onclick и необходимо создать обработку этого события. Двойной щелчок на кнопке и Delphi автоматически создает в модуле формы заготовку процедуры-обработчика, при этом окно редактора кода переводится на передний план, а курсор устанавливается в место, куда должны быть внесены изменения.

Пример: обработка события закрытие формы. procedure Tform1.Button1Click(Sender:Tobject);

begin

Form1.Close; // Эта строка добавлена end;

Имя процедуры – составное и состоит из имени класса TForm1 и собственно имени процедуры, включающее имя компонента, его числовой номер и событие, которое обрабатывается Onclick. Текст процедуры обработки составляется программистом.

Языком программирования Delphi является язык Object Pascal и представляет собой объектно-ориентированное расширение языка Pascal.

Система Delphi обеспечивает возможность визуального программирования на нем с помощью библиотеки визуальных компонентов VCL (Visual Component Library).

Основными стандартными модулями Delphi являются System, SysUtils, Windows, Messages, Variants, Classes, Graphics, Controls, Forms, Dialogs.

Элементы любого модуля Delphi: типы, константы, переменные и подпрограммы допускается использовать в программе или в других модулях, обращаясь к ним по имени (идентификатору).

Чтобы иметь доступ к элементам модуля его необходимо подключить. Для подключения имя модуля указывается в разделе Uses.

25

Для каждой формы проекта автоматически создается связанный с ней модуль. Объявление перечисленных выше стандартных модулей автоматически добавляется в шаблон Unit-модуля для любой формы проекта, создавая приложение, мы автоматически получаем доступ к обширному инструменту управления формой, компонентами и пр.

Кроме модулей связанных с формами, при программировании можно использовать и отдельные модули. Они добавляются в проект командой File | New | Unit, оформляются по обычным правилам языка Object Pascal и сохраняются в отдельных файлах.

Вотдельном модуле можно размещать процедуры, функции, константы и переменные, общие для нескольких модулей проекта.

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

Модуль состоит из заголовка, в котором после зарезервированного слова unit указывается имя модуля, и четырех разделов, каждый из которых начинается своим зарезервированным словом: интерфейса (Interface), реализации (Implementation), инициализации (Initialization) и деинициализации

(Finalization).

Общий вид структуры модуля: Unit <Имя модуля>;

Interface // Раздел внешнего интерфейса Uses <Список модулей>;

Const <Список констант>; Type <Описание типов>;

Var <Объявление переменных>; <Заголовки процедур>; <Заголовки функций>;

Implementation // Раздел реализации Uses <Список модулей>;

Const <Список констант>; Туре <Описание типов>;

Var <Объявление переменных>; <Описание процедур>; <Описание функций>;

Initialization // Раздел инициализации

<Инструкции, выполняемые один раз при первом обращении к модулю> Finalization // Раздел деинициализации

<Инструкции, выполняемые при любом завершении работы модуля> end.

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

26

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

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

втом порядке, в котором они перечислены в списке раздела Uses основной программы.

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

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

Язык Object Pascal является объектно-ориентированным расширением языка Pascal и реализует концепцию объектно-ориентированного программирования.

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

Классы и объекты

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

Описание класса имеет следующую структуру: Type <Имя класса>= class (<Имя класса-родителя>) private

<Частные описания>

Protected

<Защищенные описания>

Public

27

<Общедоступные описания>

Published

<Опубликованные описания> end;

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

Пример. Описание класса.

Type TcolorCircle=class(Tcircle); FLeft,

FTop

FRight

FBotton: Integer; Color: TColor; End;

Здесь класс TcolorCircle создается на основе родительского класса Tcircle. По сравнению с родительским, новый класс дополнительно содержит

четыре поля типа Integer и одно поле типа TColor.

Если в качестве родительского используется класс Tobject, который является базовым классом для всех классов, то его имя после слова class можно не указывать

Type TNewClass=class

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

Разделы private и protected содержат защищенные описания, которые доступны внутри модуля, в котором они находятся. Описания из раздела protected, кроме того, доступны для порожденных классов за пределами названного модуля.

Раздел public содержит общедоступные описания, которые видимы в любом месте программы, где доступен класс.

Раздел published содержит опубликованные описания.

Объекты как экземпляры класса объявляются в программе в разделе var как обычные переменные, например,

Var

CCircle1: TColorCircle; CircleA: TCircle;

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

Пример. Обращения к полям объекта

Var

CCircle1: TColorCircle; Begin

….

CCircle1. Fleft:=5;

CCircle1. Ftop:=1;

28

End;

Поля [3]

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

Пример. Описание полей

Type TNewclass=class(TObject) Private

Fcode: integer; FSign: char; FNote: string; End;

TNewclass – новый класс создается на основе базового класса TObject и получает в дополнение три новых поля Fcode, FSign, FNote. Префикс F от слова Field поле. При создании новых классов класс потомок наследует все поля родителя. При этом удаление или переопределение этих полей невозможно.

При создании новых классов класс-потомок наследует все поля родителя, изменение значений полей выполняется с помощью методов и свойств объекта.

Свойства [3]

Свойства реализуют механизм доступа к полям. Каждому свойству соответствует поле, содержащее значение свойства, например, свойства, определяющие внешний вид кнопки: color – ее цвет left и top – координаты левого верхнего угла

Событие [3]

Это либо воздействие пользователя на какой-либо объект (нажатие мыши) либо изменение размеров объекта. Визуальные компоненты способны генерировать и обрабатывать достаточно большое число событий различных видов. К наиболее общим группам событий можно отнести:

выбор управляющего элемента; перемещение указателя мыши; вращение колеса мыши; нажатие клавиш клавиатуры;

получение и потеря управляющим элементом фокуса ввода; перемещение объектов методом drag and drop.

В языке Object Pascal, который лежит в основе Delphi, события также являются свойствами. При выборе управляющего элемента возникает событие Onclick, называют событием нажатия, и возникает при щелчке мышью на компоненте.

При разработке приложений событие Onclick является одним из наиболее часто используемых.

Пример. Процедура обработки события выбора элемента Edit1.

Procedure TForm1.Edit1Click(Sender: TObject); Begin

Edit1.Color :=Random($FFFFFF); End;

29

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

Для некоторых компонентов событие Onclick может возникать и при других способах нажатия на управляющий элемент, находящийся в фокусе ввода, например, для компонента Button – с помощью клавиш <Пробел > или

<Enter>

4 МЕТОДЫ

Метод представляет собой подпрограмму (процедуру или функцию), являющуюся элементом класса, определяющую поведение объекта. Метод приводит к выполнению последовательности действий, часть из которых может быть связана с изменением внешнего вида объекта. Описание метода похоже на описание обычной подпрограммы модуля. Заголовок метода располагается в описании класса, а сам код метода находится в разделе реализации. Имя метода в разделе реализации является составным и включает в себя тип класса [3].

Пример описания метода Button1Click будет выглядеть так:

Interface

TForm1= class(TForm) Button1: TButton;

Procedure Button1Click(Sender: TObject); End;

Implementation

Procedure TForm1.Button1Click(Sender: TObject); Begin

Close;

End;

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

5 ЯЗЫК OBJECT PASCAL

5.1Алфавит

Алфавит языка Object Pascal включает в себя следующие символы [1]:

52 буквы латинского алфавита - прописные (A..Z) и строчные (a..z) буквы латинского алфавита, а также символ подчеркивания (_). В языке нет различия между заглавными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения.

арабские цифры (0..9);

30

23 специальных символа (+, -, *, /, ., ,, :, ;, =, >, <, ', (, ), {, }, [, ], #, $, ^,

@ и пробел).

Комбинации специальных символов образуют следующие составные символы:

:= (присваивание); <> (не равно);

.. (диапазон значений); <= (меньше или равно); >= (больше или равно);

(* и *) выделение комментария (альтернатива фигурным скобкам

{ и } );

5.2Словарь языка

Слова словаря языка Object Pascal подразделяются на: ключевые слова;

идентификаторы (стандартные и пользовательские).

Ключевые (зарезервированные) слова являются составной частью языка, имеют фиксированное написание и однозначно определенный смысл, изменить который программист не может. Например, ключевыми являются слова: Label, unit, Goto, Begin, interface. В Редакторе кода ключевые слова выделяются полужирным шрифтом.

Идентификаторы в Object Pascal – это имена констант, переменных, меток, типов, объектов, классов, свойств, процедур, функций, модулей, программ и полей в записях.

Стандартные идентификаторы обозначают заранее определенные разработчиками конструкции языка: типы данных; константы; процедуры и функции. Пользовательские идентификаторы задаются программистом, могут иметь произвольную длину (<=255 символов) и должны отвечать следующим правилам:

идентификатор составляется из букв и цифр, символ подчеркивания также является буквой;

идентификатор всегда начинается только с буквы; исключением являются метки, которыми могут быть целые числа без знака в диапазоне

0..9999;

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

5.3 Данные в Object Pascal

Обрабатываемые в программе данные подразделяются на переменные и константы.

Константы

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

Константы бывают именованные и неименованные.