Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчёт3.docx
Скачиваний:
2
Добавлен:
12.09.2019
Размер:
50.62 Кб
Скачать

Лабораторная работа №3 Динамические структуры данных. Класс как динамическая структура данных. Создания пользовательского класса в Delphi.

1. Цель работы:

Целью лабораторной работы является изучение динамических структур данных – классов.

2. Порядок выполнения работы и требования к отчету:

1. Ознакомится с описанием на лабораторную работу.

2. Разработать программу согласно заданию на лабораторную работу.

3. Отчет по лабораторной работе должен содержать:

    • тему и номер работы;

    • цель работы;

    • ход работы - краткое описание используемых компонент и функций;

    • результаты – части исходных текстов программы, где реализуется поставленное задание;

    • вывод о проделанной работе.

Отчет оформляется в соответствии с правилами оформления текстовых документов.

3. Теоретические сведения

Динамический тип данных - класс.

Классы — это специальные типы данных языка Object Pascal, которые используются для описания объектов.

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

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

type Имя класса = class (Класс-предок)

{Список состава класса}

private {частные описания}

protected

{защищенные описания}

public {общедоступные описания}

published {опубликованные описания}

end;

где Имя класса — любое корректное имя (выбирается произвольно), Класс-предок — название класса, наследником которого является создаваемый класс, а Cписок состава класса содержит свойства и методы нового класса.

Для каждого элемента класса можно установить разную видимость. Для этого предназначены четыре ключевых слова: private, protected, public и published.

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

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

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

Технология двойного буфера отображения при отображении графики.

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

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

Создается объект класса TBitmap. У данного объекта есть плоскость рисования (свойство Canvas), которая расположена в памяти. На данную плоскость рисования производится отображение всех необходимых графических элементов. Затем эта плоскость рисования может быть скопирована целиком на основную плоскость рисования при помощи метода класса TCanvas - Draw(x,y:integer;g:TGraphic), где x,y – позиция отрисовки, g – любой графический объект имеющий плоскость рисования.

Например, заполнение черным цветом и вывод красной точки посередине на PaintBox1.Canvas при помощи данной технологии:

var b:TBitmap;

Begin

// создание дополнительной плоскости рисования

b:=TBitmap.Create;

// задание размеров плоскости

b.Height := PaintBox1.Height;

b.Width := PaintBox1.Wodth;

// заполнение черным цветом

b.Canvas.Brush.Color := clBlack;

b.Canvas.Pen.Color := clWhite;

b.Canvas.Rectangle(0,0,b. Width,b. Height);

// вывод красной точки

b.Pixels[b.Height div 2,b.Width div 2]:=clRed;

// копирование на основную плоскость рисования

PaintBox1.Canvas.Draw(0,0,b);

// удаление дополнительной плоскости рисования

b.Free;

end;

Опрос клавиатуры.

Иногда в приложения необходимо узнать состояние клавиш клавиатуры. Это можно сделать несколькими способами:

- У компонент, которые воспринимают ввод с клавиатуры, есть методы: OnKeyUp – вызывается когда нажата клавиша и OnKeyDown – вызывается когда клавиша отпущена. Этим методам в качестве параметра передается виртуальный код нажатой или отпущенной клавиши. Эти методы вызываются только, если элемент интерфейса, реализуемый данным компонентом, активен.

- При помощи функции GetAsyncKeyState, которая возвращает состояние определенной клавиши, не зависимо от того какой элемент интерфейса является активным.

Функции, необходимые для выполнения работы.

GetAsyncKeyState(vk:intger):longword – возвращает состояние кнопки клавиатуры с виртуальным кодом vk;

Например, VK_DOWN,VK_UP,VK_LEFT,VK_RIGHT – клавиши курсора.

Возвращаемое значение:

$0000 – кнопка не нажата

$8000 – кнопка нажата

$8001 – кнопка нажата с последнего вызова GetAsyncKeyState

Например, проверка нажат пробел или нет:

if (GetAsyncKeyState(VK_SPACE) and $8000) = $8000

then // нажат

else // нет

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]