Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рабочая тетрадь по ООП.doc
Скачиваний:
6
Добавлен:
09.11.2019
Размер:
320 Кб
Скачать

Лекция 3. Uml-язык. Диаграммы классов Лекция 4. Архитектура программ в различных ос. Структура приложения в Delphi. Основные категории Delphi

Основные определения лекции

Примечания

АРХИТЕКТУРА ПРОГРАММ В ОС DOS

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

Программа сама контролирует процесс своего выполнения.

ОС вмешивается лишь по требованию: приостановить выполнение и перенаправить потоки ввода-вывода и др.

Программа монопольно использует все ресурсы, вызывая напрямую резидентные программы ОС по мере необходимости.

ОС Windows является:

многозадачной,

многооконной.

Многозадачность - поэтому невозможно монопольно использовать все ресурсы одним приложением.

За распределением ресурсов между приложениями следит ядро Windows.

Многооконность – каждой программе сопоставляется одно окно, в которое ОС направляет её потоки информации.

В любой момент времени активно только одно окно.

В ОС Windows реализована схема программ, управляемых событиями, т.е. программа – набор подпрограмм, обработчиков событий.

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

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

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

Оконная функция – специальная программа, описанная по определенным правилам и зарегистрированная в ОС как объект для сообщений.(см. Фаронов В.В. Delphi. Стр.495)

Оконная функция анализирует сообщение и вызывает соответствующий код обработчика события в приложении.

Если его нет, то вызывается обработчик по умолчанию.

Большинство приложений выполняют одни и те же действия при обработке сообщений.

Набор обрабатываемых сообщений также примерно одинаков.

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

Эти методы вызываются при обработке сообщений.

Данные методы доступны для переопределения и предоставляют возможности для удобной работы с окном.

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

Все процессы связанные с поддержанием работоспособности оконной программы реализованы и в Delphi.

ПРОГРАММИРОВАНИЕ В DELPHI

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

Данная технология программирования позволяет существенно сократить время разработки и создания Windows-приложения.

Система Delphi: компилятор с языка Object Pascal, визуальная среда разработки, инструменты взаимодействия с базами данных, библиотека VCL.

VCL- Visual Components Library – библиотека визуальных компонентов (можно создавать самим).

Система Delphi соответствует концепции RAD.

RAD – Rapit Application Development – быстрая разработка приложений.

С 1995 по 2001 гг.– Delphi 1 -6 ( улучшение интегрированной среды разработчика, расширения набора компонентов и увеличение их возможностей, внедрение технологий разработки распределенных приложений).

Delphi7 –Delphi Studio – заявлены средства поддержки платформы Microsoft Net, но поддерживает и импорт/экспорт COM-объектов в Net-приложения.

Delphi2005 – содержит много ошибок.

Delphi2007 – часть программного комплекса Borland Developer Studio.

Borland Developer Studio поддерживает языки: Delphi for MS Win32 c поддержкой и ОС Vista, Delphi for MS .Net Framewotk, C++, C# (усеченный вариант-Turbo Delphi).

В 2007 г. - среда Delphi for PHP.

СТРУКТУРА ПРИЛОЖЕНИЯ

Проект – описание файловой структуры исходного текста программного продукта (частей, на которые разбит исходный текст).

Проект состоит из нескольких файлов.

Каждый файл выполняет строго определенные функции.

Главный файл проекта текстовый файл с расширением DPR, содержащий главный программный блок.

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

Этот файл среда создает и компилирует сама.

Файлы описания форм – двоичные файлы с расширением DFM, описывающие формы с компонентами.

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

Количество DFM- файлов равно количеству используемых в приложении форм.

Если вызвать у формы всплывающее меню и выбрать команду View as Text, то можно увидеть, например, следующий текст:

object Forms: TForm1

Left = 200

Top = 108

Width = 435

Height = 300

……………..

Файлы программных модулей – текстовые файлы с расширением PAS, содержащие исходные коды форм на языке Object Pascal. В этих файлах вы пишите методы обработки событий, генерируемых формами и компонентами.

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

По умолчанию система сама дает имена:

Unit Unit1; Unit Unit2; ….

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

Не рекомендуется вносить самому изменения в структуру модуля и его имя.

Если необходимо удалить метод обработки события и убрать ссылки на него, то просто необходимо сделать метод пустым, убрать весь написанный код и локальные переменные, остальное все сделает Delphi.

Файл ресурсов с расширением RES (RESource). В нем хранится, например, пиктограмма приложения, которая будет видна на панели задач Windows.

Создается автоматически.

Файл опций с расширением DOF (Delphi Options File), где сохраняются заданные программистом параметры компиляции и компоновки проекта.

Файл с расширения DSK (DeSKtop) - размещены настройки визуальной среды, используемые данным приложением.

Чтобы Delphi сохраняла настройки среды, необходимо выбрать команду Tools\Options и в диалоговом окне на странице Preference в группе AutoSave отметить пункт Desktop (не копируйте при переносе).

Файлы DSM – файл с информацией, используемой внутренний отладчиком. Создается при компиляции проекта.

Файлы DCU – откомпилированные модули (аналогичен файлу obj).

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

В проект могут входить также и другие файлы: растровые рисунки (BMP- файлы), значки (ICO- файлы), файлы справочников (HLP- файлы) и др.

Этими файлами управляет сам программист.

program Project1;

uses

Forms,

Unit1 in ‘Unit1.pas’ {Form1};

{$R *.Res} {подключает ресурсы}

begin

Application. Initialize;

Application. CreateForm (TForm1, Form1);

Application. Run;

end.

ОСНОВНЫЕ ПОНЯТИЯ DELPHI

Относятся:

  • свойства,

  • события,

  • методы.

СВОЙСТВА

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

Например, свойства Left, Top, Width, Height определяют местоположение объекта и его размеры:

Свойства, которые определяют, как объект может вести себя, например:

Visible : boolean – видимый.

Если свойство имеет значение True, то объект видимый.

Свойство определяется элементами:

полем и двумя методами.

Например:

Set<имя свойства> - устанавливает значение свойства,

Get<имя свойства> - возвращает его значение.

Например, чтобы программно установить цвет формы необходимо вызвать метод

Form1.SetColor(clBlue); {исп. вызов метода}

или написать инструкцию присваивания

Form1.Color := clBlue; {исп. поле}

которую Delphi откомпилирует как Form1.SetColor(clBlue);

Аналогично, и для получения значения свойства можно использовать оператор присваивания:

С := Form1.Color;

при компиляции это вызовет метод

C := GetColor(Form1);

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

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

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

В этом примере чтение свойства AValue означает просто чтение поля FValue.

Затем внутри SetValue вызывается и метод DoSomeThing.

Для присвоения значения свойству по умолчанию используется ключевое слово default:

property Visible : boolean read FVisible write SetVisible default True;

т.е. по умолчанию свойство устанавливается в значение True.

Свойства, опубликованные в секции Published, отображаются в Инспекторе объектов на странице Properties.

Среда Delphi позволяет изменить свойство:

визуально – курсором на форме - значения свойств в Инспекторе объектов будут изменены.

программно, записав соответствующий код, например: Form1.Left := 400;

путем внесения значений свойств в поля значений Инспектора объектов.

СОБЫТИЯ

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

В среде ничего не происходит пока не произойдет некоторое событие (event) – только в этом случае будет реакция программы.

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

Такие программы называются «обработчиками» событий.

Событие – это свойство процедурного типа, предназначенное для создания пользовательской реакции на те или иные входные действия:

property OnMyEvent : TMyEvent read FOnMyEvent write FOnMyEvent;

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

Внутри библиотеки времени выполнения Delphi вызовы обработчиков событий находятся в методах, обрабатывающих сообщения Windows.

Выполнив необходимые действия, этот метод проверяет, известен ли адрес обработчика, и, если это так, вызывает его:

if Assigned (FOnMyEvent) then FOnMyEvent (Self);

Self – указатель на тот объект, который вызвал метод.

События имеют разные типы в зависимости от происхождения и предназначения.

Общим для всех является параметр Sender – он указывает на объект-источник события.

Самый простой тип TNotifyEvent – не имеет других параметров:

TNotifyEvent = procedure (Sender : TObject) of object;

Различают события:

  • мыши,

  • клавиатуры,

  • системные события.

Все события в Delphi принято именовать с «On»: OnClick, OnMouseMove и т.д.

Каждый компонент имеет свои события.

Под события в Инспекторе объектов отведена страница Event.

СОБЫТИЯ МЫШИ

Дважды щелкнув в Инспекторе объектов на странице Event в поле любого события, мы получим программу -заготовку метода нужного типа.

При этом имя будет состоять из имени текущего компонента и имени события, а относиться будет к текущей форме,

например: TForm1.FormClick

Например, написать обработчик события нажатия кнопки мыши, по которому случайным образом меняется цвет формы:

- активизируем форму,

- дважды щелкнем в поле значения события OnClick на странице событий Event

procedure TForm1.FormClick(Sender: TObject);

begin

randomize;

Color := random (65535);

end;

События можно менять во время выполнения программы.

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

Object1.OnMouseMove := Object2.OnMouseMove;

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

СОБЫТИЯ КЛАВИАТУРЫ

Создадим программу перемещения формы по экрану при нажатии клавиш управления курсором:

Форма должна реагировать на нажатие клавиш перемещением на 8 пикселей в соответствующем направлении.

Коды клавиш управления:

Vk_Left,

Vk_Right,

Vk_Up,

Vk_Top.

Обработаем событие OnKeyDown

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

case Key of

Vk_Left: Left := Left - 8;

Vk_Up : Top := Top - 8;

Vk_Right: Left := Left + 8;

Vk_Down: Top := Top + 8;

end;

end;

Key - код нажатой клавиши; Sender - источник события

Для завершения работы программы вставим еще один обработчик события клавиатуры: конец работы программы при нажатии на клавишу <Q>.

Для этого можно в обработчик события формы OnKeyPress вписать:

If UpCase (Key) = ‘Q’ Then Close;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

begin

If UpCase(Key) = 'Q' Then Close;

end;

end;

Функция UpCase возвращает прописную букву.

СОБЫТИЯ МЫШИ

Создадим программу, изменяющую вид указателя мыши при каждом нажатии ее кнопки.

Если щелкнуть на свойстве формы Cursor, а затем раскрыть список значений, появится список значений от crDefault до crVSplit.

procedure TForm1.FormClick(Sender: TObject);

begin

if cursor = crDefault Then Cursor := crVSplit

else Cursor :=Succ(Cursor);

end;

СИСТЕМНЫЕ СОБЫТИЯ

Системные события исходят непосредственно от Windows, поэтому их использование не так очевидно.

МЕТОДЫ

Метод – это процедура или функция класса, определяющая поведение объекта.

Например:

Close – закрыть, например, форму.

SetFocus – установить фокус ввода.

СВЯЗЬ СОБЫТИЯ С ОБЪЕКТОМ

unit Unit1;

interface

Uses….;

type

TForm1 = class(TForm)

Button1:TButton;

procedure Button1Click(Sender: TObject);

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

end.

(файл Unit1.dfm)

object Form1: TForm1

Left = 192

Top = 114

…………………..

end;

Object Button1:TButton

Left=……

………..

OnClick = Button1Click

End;

Пример:

TMyObject = class (TObject)

FValuer : Integer;

procedure DoSomeThing;

procedure SetValue (NewValue : Integer);

property AValue : Integer read FValue

write SetValue (NewValue : Integer);

end;

Implementation …..

procedure TMyObject.SetValue (NewValue : Integer);

begin

if NewValue <> FValue then FValue := NewValue;

DoSomeThing;

end;