Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-5-8-11...doc
Скачиваний:
5
Добавлен:
21.04.2019
Размер:
122.88 Кб
Скачать

Вопрос 11. Понятие событийно-ориентированного программирования. Процедуры обработки событий.

Событийно-ориентированное программирование (англ. event-driven programming) — это способ построения компьютерной программы, при котором в коде (как правило, в головной функции программы) явным образом выделяется главный цикл приложения, тело которого состоит из двух частей: выборки события и обработки события.

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

Событийно-ориентированное программирование, как правило, применяется в трех случаях:

при построении пользовательских интерфейсов (в том числе ГПИ);

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

при программировании игр, в которых осуществляется управление множеством объектов.

Вопрос 14 Динамические массивы. Процедуры для работы с динамическими массивами.

Динамические массивы

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

byteArray : Array of Byte; // Одномерный массив

multiArray : Array of Array of string; // Многомерный массив

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

PvsDynArrayClone – создает уникальную копию массива.

PvsDynArrayInsert – вставляет новые элементы в любое место массива.

PvsDynArrayRemove – удаляет элементы из массива.

PvsDynArrayJoin – копирует элементы из одного массива в другой.

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

PvsQuickSort – процедура быстрой сортировки для любых данных представляемых как массив.

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

PvsDynArrayQuickSort - процедура быстрой сортировки для динамических массивов.

PvsBinaryFind – процедура двоичного поиска в любом массиве.

PvsDynArrayBinaryFind - процедура двоичного поиска в динамическом массиве.

Вопрос 17 Понятие класса. Директивы класса.

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

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

Рассмотрим семантику директив видимости.

1. Директива private.

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

2. Директива public.

Элементы, описанные в разделе public, называются общедоступными. Они могут быть использованы всюду в программе. Поля, свойства и методы, расположенные сразу после заголовка класса, при выключенной директиве компилятора {$M-}, по умолчанию принимаются общедоступными.

3. Директива protected.

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

4. Директива published.

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

5. Директива automated.

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