- 23. Событийно-ориентированное программирование.
- Основные принципы событийного программирования
- Создание приложений в среде программирования Turbo Delphi.
- Создание основного окна проекта
- Событийно-ориентированное программирование.
- Многопоточное программирование. Процесс и поток выполнения. Средства синхронизации потоков.
23. Событийно-ориентированное программирование.
Событийно-ориентированное программирование (event-driven programming) — это парадигма программирования, в которой выполнение программы определяется событиями — действиями пользователя (клавиатура, мышь), сообщениями других программ и потоков, событиями операционной системы (например, поступлением сетевого пакета).
Событийно-ориентированное программирование можно также определить как способ построения компьютерной программы, при котором в коде (как правило, в головной функции программы) явным образом выделяется главный цикл приложения, тело которого состоит из двух частей: выборки события и обработки события.
Событийно-ориентированное программирование, как правило, применяется в трех случаях:
- при построении пользовательских интерфейсов (в том числе графических);
- при создании серверных приложений в случае, если по тем или иным причинам нежелательно порождение обслуживающих процессов;
- при программировании игр, в которых осуществляется управление множеством объектов.
СОП можно также определить как способ построения компьютерной программы, при котором в коде (как правило, в головной функции программы) явным образом выделяется главный цикл приложения, тело которого состоит из двух частей: выборки события и обработки события.
Как правило, в реальных задачах оказывается недопустимым длительное выполнение обработчика события, поскольку при этом программа не может реагировать на другие события.
При каждом движении мыши, нажатии на ее кнопки или клавиши на клавиатуре генерируется событие. События могут также генерироваться системным таймером или пользовательскими программами. Существуют также «визуальные» события: например, сдвинув или закрыв одно из окон, мы открыли часть окна, находившегося внизу. Этому окну посылается событие, говорящее, что ему нужно перерисовать часть себя.
Каждое событие представляет собой структуру данных, которая содержит код, обозначающий тип события: движение мыши, нажатие кнопки и т.д., а также поля, различные для различных типов событий: для «мышиных» событий это текущие координаты мыши и битовая маска, обозначающая состояние кнопок (нажата/отпущена). Для клавиатурных событий это код нажатой клавиши — обычно, ASCII для алфавитноцифровой клавиатуры и специальные коды для стрелок и других «расширенных» клавиш — и битовая маска, обозначающая состояние различных модификаторов, таких как SHIFT, CNTRL, ALT, и т.д. для визуальных событий это координаты прямоугольника, который нужно перерисовать, и так далее.
Все события помещаются в очередь в порядке их возникновения.
В системе существует понятие обработчика событий. Обработчик событий представляет собой об ект, то есть структуру данных, с которой связано несколько программных модулей — методов. Один из методов вызывается при поступлении события и называется callback (дословно — «вызов назад»).
Представим себе простой об ект, такой как меню. При нажатии на кнопку мыши в области этого меню вызывается callback. Он разбирается, какой из пунктов меню был выбран, и вызывает соответствующую функцию обработки этого пункта. Таким образом, вместо последовательно исполняющейся программы, время от времени вызывающей систему для исполнения той или иной функции, мы получаем набор callback’ов, вызываемых системой в соответствии с желаниями пользователя. Отсюда, видимо, и происходит термин «callback» — это «системный вызов, идущий в обратном направлении».
Специальная программа, менеджер событий, непрерывно просматривает очередь и передает поступающие события обработчикам. События, связанные с экранными координатами, передаются обработчику, ассоциированному с соответствующим окном. Клавиатурные события передаются фокусу клавиатуры — текущему активному обработчику.
33. Бизнес-процесс. Средства анализа и моделирования. Автоматизация бизнес-процессов.
Бизнес-процесс — это совокупность взаимосвязанных мероприятий или задач, направленных на создание определённого продукта или услуги для потребителей. В качестве графического описания деятельности применяются блок-схемы бизнес-процессов.
Существуют три вида бизнес-процессов:
- Управляющие — бизнес-процессы, которые управляют функционированием системы. Примером управляющего процесса может служить Корпоративное управление и Стратегический менеджмент.
- Операционные — бизнес-процессы, которые составляют основной бизнес компании и создают основной поток доходов. Примерами операционных бизнес-процессов являются Снабжение,Производство, Маркетинг и Продажи.
- Поддерживающие — бизнес-процессы, которые обслуживают основной бизнес. Например, Бухгалтерский учет, Подбор персонала, Техническая поддержка, АХО.
Бизнес-процесс начинается со спроса потребителя и заканчивается его удовлетворением. Процессно-ориентированные организации стараются устранять барьеры и задержки, возникающие на стыке двух различных подразделений организации при выполнении одного бизнес-процесса.
Бизнес-процесс может быть декомпозирован на несколько подпроцессов, процедур и функций, которые имеют собственные атрибуты, однако также направлены на достижение цели основного бизнес-процесса. Такой анализ бизнес-процессов обычно включает в себя составление карты бизнес-процесса и его подпроцессов, разнесенных между определенными уровнями активности.
Бизнес-процессы должны быть построены таким образом, чтобы создавать стоимость и ценность для потребителей и исключать любые необязательные или вовсе лишние активности. На выходе правильно построенных бизнес-процессов увеличиваются ценность для потребителя и рентабельность (меньшая себестоимость производства товара или услуги).
Бизнес-процессы могут подвергаться различному анализу в зависимости от целей моделирования. Анализ бизнес-процессов может применяться при бизнес-моделировании, функционально-стоимостном анализе, формировании организационной структуры, реинжиниринге бизнес-процессов, автоматизации технологических процессов.
Одним из методов анализа текущей деятельности является составление модели бизнес-процесса «как есть» (англ. as is). После этого модель бизнес-процесса подвергается критическому анализу или обрабатывается специальным программным обеспечением. По результатам анализа формируется модель бизнес-процесса «как должно быть» (англ. to be) и план мероприятий по внедрению необходимых изменений.
Существует множество нотаций, применяемых для моделирования бизнес-процессов, например:
Основные принципы событийного программирования
Создание приложений в среде программирования Turbo Delphi.
При вызове интегрированной среды TurboDelphi на экране появляется окно, вид которого представлен на рисунке 1. Рисунок 1 – Вид окна Turbo Delphi при входе в среду Основными элементами данного окна являются:
- страница приглашения
- главное меню;
- панель быстрого доступа;
- менеджер проектов (Project Manager)
- панель структуры проектов (Structure)
- палитра инструментов (Tool Palette);
- инспектор объектов (ObjectInspector);
Работа в среде осуществляется с использованием основного и вспомогательных меню, а также кнопок панели быстрого вызова. Эти кнопки применяют для упрощения доступа к часто выполняемым операциям (они дублируют соответствующие пункты меню).
-
Создание основного окна проекта
Разработка программы начинается с создания нового проекта. Это можно сделать двумя способами:
- нажав закладку NewProject на странице приглашения. После этого на экране появится окно диалога выбора типа проекта, в котором необходимо выбрать тип VCLFormsApplication;
- выбрав пункт меню File\ New Project\ VCL Forms Application – Delphi for Win32.
После этого на экране появится заготовка формы проекта (см. рисунок 2). Рисунок 2– Вид окна приложения с заготовкой формы проекта Работа над новым проектом начинается с создания основной формы – главного окна приложения. Сначала необходимо настроить форму, затем добавить к форме необходимые компоненты интерфейса(поля отображения информации, поля ввода, командные кнопки). Форма строится на основе класса TForm и обладает большим количеством характеристик, как собственных, так и наследуемых от своих предков. Они предназначены для функционирования формы как окна Windows, а также для выполнения своих специфических задач. Настройка формы осуществляется путем изменения значений свойств. События, обрабатываемые формой, определяют ее поведение. Свойства и события можно задавать с помощью инспектора объектов (см. рисунок 2). Для изменения значений свойств используется вкладка Properties (свойства). В левой колонке этой вкладки перечислены свойства выбранного объекта (формы, кнопки и т.д.), в правой – указаны значения перечисленных свойств. На вкладке Properties свойства объединены в группы по функциональному признаку, причем названия групп выделены цветом. Группа Visual содержит свойства, определяющие вид объекта (заголовок, цвет фона, вид границы и т.п.). Группа Layout – свойства, определяющие положение объекта (координаты верхнего левого угла, длину, ширину и т. д.). Некоторые свойства могут отображаться в нескольких группах. Для определения поведения объекта используется вкладка Events (события). Она позволяет задать множество событий, на которые будет реагировать объект. В левой колонке этой вкладки перечислены события, которые может воспринимать объект, а в правой указываются имена обработчиков для выбранных событий.
Событийно-ориентированное программирование.
Событийно-ориентированное программирование (СОП) — парадигма программирования, в которой выполнение программы определяется событиями — действиями пользователя (клавиатура, мышь), сообщениями других программ и потоков, событиями операционной системы (например, поступлением сетевого пакета). СОП можно также определить как способ построения компьютерной программы, при котором в коде (как правило, в головной функции программы) явным образом выделяется главный цикл приложения, тело которого состоит из двух частей: выборки события и обработки события.
Событийно-ориентированное программирование, как правило, применяется в следующих случаях:
- построение пользовательских интерфейсов (в том числе графических);
- создание серверных приложений;
- моделирование сложных систем;
- параллельные вычисления;
- автоматические системы управления;
- программирование игр, в которых осуществляется управление множеством объектов.
- слишком велики накладные расходы на структуры данных операционной системы, необходимые для описания одной задачи (сегмент состояния задачи, стек);
- слишком велики накладные расходы на переключение контекстов.
- Perl
- PHP
- Java
- Delphi
- ActionScript 3.0
- C# (события event),
- JavaScript (действия пользователя)
Событийно-ориентированное программирование применяется в серверных приложениях для решения проблемы масштабирования на 10 тыс. одновременных соединений и более. В серверах, построенных по модели «один поток на соединение», проблемы с масштабируемостью возникают по следующим причинам:
Серверное приложение при событийно-ориентированном программировании реализуется на системном вызове, получающем события одновременно от многих дескрипторов (мультиплексирование). При обработке событий используются исключительно неблокирующие операции ввода-вывода, чтобы ни один дескриптор не препятствовал обработке событий от других дескрипторов
Разные языки программирования поддерживают СОП в разной степени. Наиболее полной поддержкой событий обладают следующие языки:
Остальные языки, в большей их части, поддерживают события как обработку исключительных ситуаций
Многопоточное программирование. Процесс и поток выполнения. Средства синхронизации потоков.
Многопоточность — свойство платформы (например, операционной системы, виртуальной машины и т.д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительно машины. Такие потоки называют потоками выполнения
Процесс (process) — это некоторая часть (единица) работы, создаваемая операционной системой. Программа может состоять из нескольких процессов. Процесс задается адресным пространством и идентификатором (id процесса). Процесс состоит из множества выполняющихся инструкций, размещенных в адресном пространстве этого процесса. Адресное пространство процесса распределяется между инструкциями, данными, принадлежащими процессу, и стеками, обеспечивающими вызовы функций и хранение локальных переменных.
Потоки позволяют одной программе состоять из параллельно выполняемых частей, причем все части имеют доступ к одним и тем же переменным. Потоки можно рассматривать как облегченные процессы, т.е. они позволяют воспользоваться многими преимуществами процессов без больших затрат на организацию взаимодействия между ними.