75.81K
Категория: ПрограммированиеПрограммирование

Событийно-ориентированное программирование

1.

Парадигмы программирования
(с примерами на языке R)
Событийно-ориентированное
программирование
Голубничий А.А.
[email protected]
@Golubnichij

2.

Структура занятия
• основные понятия
• аспекты событий;
• области применения;
• делегаты;
• языки программирования;
• инструменты для разработки.
2

3.

Основные понятия
Событийно-ориентированное программирование – парадигма
программирования, в которой выполнение программы определяется
событиями – действиями пользователя (клавиатура, мышь),
сообщениями других программ и потоков, событиями операционной
системы (например, поступлением сетевого пакета).
Событийно-ориентированное программирование – способ
построения компьютерной программы, при котором в коде (как
правило, в головной функции программы) явным образом выделяется
главный цикл приложения, тело которого состоит из двух частей:
выборки события и обработки события
3

4.

Основные понятия
Событие – это сообщение, которое возникает в различных точках
исполняемого кода при выполнении определенных условий.
• события предназначены для того, чтобы иметь возможность
предусмотреть реакцию программного обеспечения;
• событие сообщает об изменении состояния некоторого объекта.
Событие – это абстракция инцидента или сигнала в реальном
мире, который сообщает нам о перемещении чего- либо в новое
состояние.
Событие – это именованный делегат, при вызове которого, будут
запущены все подписавшиеся на момент вызова события методы
заданной сигнатуры.
Делегат – класс, который позволяет хранить в себе ссылку на
4
метод с определенной сигнатурой произвольного класса

5.

Пример объявления и использования
делегата (С#)
using System;
// Объявление делегата
delegate void MyDelegate(string a);
class DelegateExample
{
static void Func(string param)
{
Console.WriteLine("Вызвана функция с параметром {0}.", param);
}
public static void Main()
{
// Создание экземпляра делегата
MyDelegate f = new MyDelegate(Func);
// Вызов функции
f("hello");
}
}
5

6.

Аспекты событий
Метка – уникальный идентификатор события.
Значение – текстовое сообщение о сути произошедшего.
Предназначение – модель событий, которая принимает событие.
Данные – данные, которые переносятся от одного объекта к
другому.
6

7.

Области применения
• построение пользовательских интерфейсов (в том числе
графических);
• создание серверных приложений;
• моделирование сложных систем;
• параллельные вычисления;
• автоматические системы управления, SCADA;
• программирование игр, в которых осуществляется управление
множеством объектов.
7

8.

Применение в серверных приложениях (C10k)
Проблемы модели «один поток на соединение»:
• слишком велики накладные расходы на структуры данных
операционной системы, необходимые для описания одной задачи
(сегмент состояния задачи, стек);
• слишком велики накладные расходы на переключение контекстов.
Серверное
приложение
при
событийно-ориентированном
программировании реализуется на системном вызове, получающем
события
одновременно
от
многих
дескрипторов
(мультиплексирование). При обработке событий используются
исключительно неблокирующие операции ввода-вывода, чтобы ни
один дескриптор не препятствовал обработке событий от других
дескрипторов.
8

9.

Применение в настольных приложениях
(пример)
Реализация графического интерфейса пользователя.
Обработчик событий (на примере C#):
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Была нажата кнопка");
}
9

10.

Языки программирования
Perl (события и демоны DAEMON, и их приоритеты PRIO),
PHP
Java
Delphi
ActionScript 3.0
C# (события event),
JavaScript (действия пользователя).
10

11.

Инструменты и библиотеки
Node.js – событийно-ориентированный I/O фреймворк на JavaScript
Cocoa & Objective-C – рефлексивный объектно-ориентированный
язык программирования, добавляющий сообщения в стиле Smalltalk
в язык Си.
Gui4Cli – событийно-ориентированный язык программирования для
Windows
PRADO – компонентный событийно-ориентированный инструмент
для Web-программирования на PHP5
Qt – кроссплатформенная библиотека виджетов для C++,
основанная на модели управления событиями.
QP – семейство открытых событийно-ориентированных окружений
для встроенных систем реального времени
11
English     Русский Правила