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

Ракитин Р.Ю. ООП в Turbo Delphi

.PDF
Скачиваний:
57
Добавлен:
18.03.2015
Размер:
3.59 Mб
Скачать

11

Главное меню

Главное меню (Main menu) позволяет вызывать все инструменты, необходимые для работы с проектом. Рассмотрим назначение разделов меню и связанных с ними функций:

File содержит набор команд для работы с файлами, позволяет создавать новые проекты, добавлять новые файлы в проект на основе различных шаблонов, переименовывать файлы проекта, а также распечатывать их. Сюда же включена команда закрытия среды разработки. Важные команды:

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

§

создать приложение для Win32;

§

создать пакет;

§создать форму;

§создать модуль;

§создать из шаблона;

открыть существующий файл, поддерживаемый Delphi;

открыть существующий проект;

сохранить текущий модуль;

сохранить текущий модуль под новым именем;

закрыть текущий модуль;

закрыть все;

выход из Delphi.

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

выровнять по сетке;

и переместить объект на передний и задний план;

выровнять объекты горизонтально и вертикально;

изменить порядок переключения объектов при нажатии на Tab;

заблокировать объект;

12

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

View под этим названием объединены команды вызова инструментов управления проектом такие, как инспектор объектов, конструктор форм, менеджер проектов и т.д. Важные команды:

открыть окно управления проектом;

открыть окно инструментов;

открыть окно инспектора объектов;

открыть окно структуры проекта;

открыть список модулей (Units) в проекте;

открыть список форм (Forms) в проекте;

переключиться между окном конструктора

 

формы и окном редактора кода;

Refactor здесь находятся команды, предназначенные для рефакторинга кода. Рефакторинг (Refactoring) – это процесс изменения кода таким образом, что его смысл (то есть выполняемые действия) остается тем же самым, но его работа и читаемость повышаются;

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

добавить в текущий проект уже существующий

модуль, документ и т.д.;

удалить из текущего проекта модуль, документ и

т.д.;

просмотреть исходный код проекта;

компилировать проект;

открыть настройки проекта;

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

компилировать и выполнить проект;

выполнить программу пошагово

(трассировка);

выполнить программу пошагово с

заходом в процедуры;

выполнить программу до курсора;

13

добавить наблюдение за данными;

добавить точку останова;

Component здесь сосредоточены команды, предназначенные для установки и создания новых пакетов, шаблонов компонентов;

Tools позволяет настроить свойства рабочей среды Delphi () и отладчика, произвести настройку репозитория (архива проектов), добавлять и удалять дополнительные утилиты, а также команды запуска этих самых утилит;

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

Window позволяет переключаться между окнами, если вы откроете какой- либо модуль для редактирования в новом окне;

Help объединяет команды вызова справочной системы Delphi и ее настройки, а также позволяет обратиться к Web ресурсам компании Borland для получения дополнительной информации.

Панель инструментов

Панель инструментов (Toolbar) позволяет организовать быстрый доступ к нужным инструментам Delphi. Для настройки панели перейдите View Toolbars.

Конструктор форм

Центральную часть окна занимает окно Конструктора форм (Form designer) приложения (см. рис. выше). Формой (Form) приложения на этапе разработки принято называть окно программы (во время разработки это Форма, на этапе выполнения Окно).

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

+ Переключаться с окна на окно можно нажатием клавиши F12

либо нажатием на специальные вкладки Code и Design в нижней части окна.

Редактор кода

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

14

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

+ При создании нового проекта автоматически создаётся и

заготовка текста будущей программы.

Инспектор объектов

Слева от окна конструктора формы вы теперь наблюдаете измененное окно Инспектор объектов (Object Inspector). Это окно теперь не пустое оно заполнилось информацией выделенного объекта (в данный момент

Формы (Form)). Окно Object Inspector имеет две вкладки Properties (Свойства) и Events (События).

Первая вкладка используется для редактирования свойств объектов. Свойство (Property) объекта это одна из его характеристик, которая определяет его «поведение» в программе.

Вторая вкладка используется для описания Событий (Events), на которые будет реагировать выделенный объект.

Менеджер проекта

В окне Менеджер проекта (Project Manager),

отображается структура приложения (проекта, над которым вы сейчас работаете). С помощью указателя мыши можно раскрывать содержимое списка, нажав на изображение знака «+» слева от элементов списка.

15

Палитра компонентов

Палитра компонентов (Tool Palette) это один из наиболее часто используемых инструментов Delphi. Она состоит из большого числа групп, в которых располагаются компоненты.

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

системе Windows (такие компоненты называют визуальными). Кроме того это могут быть также и невизуальные компоненты, то есть те компоненты, которые не отображаются в момент выполнения программы, но реализуют различные функции. Типичный пример такого компонента таймер (Timer).

Структура проекта

Окно Структуры проекта (Structure) после создания проекта отображается в левой верхней части экрана. Это

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

16

Глава 2. Объектная модель в среде программирования Delphi

Этапы реализации объектно-ориентированного подхода

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

Рассмотрим эти этапы.

1. Анализ предметной области задачи

Цель анализа максимально полное описание задачи. На этом этапе

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

2. Проектирование системы

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

Физическое проектирование заключается в объединении описаний классов в модули, определении способов взаимодействия с оборудованием, с операционной системой и/или другим программным обеспечением (например, базами данных, сетевыми программами), обеспечении синхронизации процессов для систем параллельной обработки и т.д. Результаты физического проектирования представляют в виде схемы композиции классов в модули, описания интерфейсов для взаимодействия с другими программами и т. п.

3. Эволюция системы

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

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

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

данном этапе передача сообщений в отсутствующую пока часть системы не

17

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

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

4. Модификация

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

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

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

Концепции объектно-ориентированного программирования

1. Класс

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

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

Форма описания нового класса выглядит следующим образом:

type

<ИмяКласса> = class(<ИмяРодительскогоКласса>)

Опубликованные поля; Опубликованные методы; Опубликованные свойства;

private

Приватные поля; Приватные методы; Приватные свойства;

18

public

Общедоступные поля; Общедоступные методы; Общедоступные свойства;

protected

Защищенные поля; Защищенные методы; Защищенные свойства;

published

Опубликованные поля; Опубликованные методы; Опубликованные свойства;

automated

Поля реализации OLE-механизма;

Методы реализации OLE-механизма;

Свойства реализации OLE-механизма;

end;

Обратите внимание, что поля, методы и свойства, описанные сразу после заголовка класса <ИмяКласса>, по умолчании принимаются опубликованными (published) при включенной директиве компилятора {$М+} или общедоступными (public) при выключенной директиве {$М-}.

+ Количество разделов private, public, protected, published и automated, а также порядок их следования могут быть произвольными.

Имя родительского класса указывать не обязательно, по умолчании считается, что если имя родителя не указано, то класс непосредственно наследуется от TObject.

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

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

Для всех идентификаторов (полей, методов или свойств), объявленных внутри класса, накладывается определенная область видимости,

распространяющаяся

от точки объявления до конца описания класса;

во всех объектах объявляемого класса, расположенных как в данном модуле, так и в модулях, которые его включают в своем предложении uses;

19

во всех классах-потомках объявляемого класса и их объектах, расположенных как в данном модуле, так и в модулях, которые его включают в своем предложении uses;

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

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

protected, private и automated.

Директива public

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

Директива published

Поля, свойства и методы, описанные в разделе published, называются опубликованными. Их область видимости эквивалентна области видимости общедоступных описаний. Отличие состоит в том, что для опубликованных полей, свойств и методов генерируется дополнительная информация об их типе, которая доступна во время выполнения. Благодаря этой информации при создании и размещении компонент на палитре, их опубликованные свойства становятся доступными в Инспекторе объектов.

+ Такие свойства могут быть только у ограниченного числа типов:

порядковых, вещественных, за исключением Real, типа String, типа «множество» с максимальным числом элементов не более 15.

Директива automated

Поля, свойства и методы, описанные в разделе automated, назовем по имени директивы, автоматическими. Их область видимости эквивалентна области видимости общедоступных описаний. Отличие состоит в том, что для автоматических свойств и методов генерируется дополнительная информация, которая используется для реализации OLE-механизма.

Директива private

Поля, свойства и методы, описанные в разделе private, называются приватными или личными. Их область видимости ограничивается пределами того модуля, в котором они описаны и где они доступны так же, как и public- описания. Раздел private в рамках объявления класса играет роль, аналогичную роли раздела реализации модуля implementation, то есть скрытие информации разработчика, о которой не должен знать пользователь, включающий созданный модуль в предложении uses.

20

Директива protected

Поля, свойства и методы, описанные в разделе protected, называются защищенными. Директива protected определяет принципиально отличные

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

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

Вот пример объявления простого класса:

TPerson = class private

FName: string[15]; FAdres: string[35];

public

procedure Show; end;

Данные класса называются полями, процедуры и функции методами.

В приведенном примере TPerson это имя класса, FName и FAdres имена полей, Show имя метода.

Описание класса помещают в программе в раздел описания типов (type).

2. Объект

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

Свойства это переменные, которые влияют на состояние объекта. На- пример, ширина, высота.

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

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

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