Подія (інформатика)

в програмуванні

В інформатиці, подія (англ. event) — дія яка розпізнається програмним забезпеченням та оброблюється за допомогою певних інструкцій. Комп'ютерні події можуть бути згенеровані або ініціалізовані системно, користувачем або іншими способами. Як правило, події обробляються синхронно з програмою, тобто, програмне забезпечення може мати один або кілька виділених місць, де обробляються події, часто називається цикл подій[en]. Події виникають при виконанні користувачем певних дій, наприклад, натисканням клавіш на клавіатурі. Деякі події виникають по таймеру, наприклад перезапуск системи. Програмне забезпечення може також викликати свій власний набір подій в цикл обробки подій, наприклад, повідомити про завершення завдання. Деякі програми кардинально змінюють свою поведінку у відповідь на події,[1] вони називаються подійно-орієнтованими.

Події та делегати

Опис ред.

Система зазвичай використовує події, коли відбувається асинхронна зовнішня діяльність, яка повинна оброблятися програмою. Наприклад, це може бути користувач, який клікає мишкою. Система створює подію в циклі подій, який очікує якоїсь діяльності, наприклад, внутрішній сигнал тривоги. Коли один з них відбувається, система збирає дані про подію та відправляє в програму-обробник, який буде правильно розподіляти виконання тієї чи іншої події. Програма також може ігнорувати події.

Існують бібліотеки для подій, які програмісти розробляють для прослуховування певної події. Дані, пов'язані з подією, як мінімум, зберігають тип події, але також можуть включати в себе іншу інформацію. Події призначені для користувача інтерфейсом програми, де дії у зовнішньому світі (натискання клавіш, зміни розміру вікна, повідомлення з інших програм) обробляються програмою як ряд подій.

Події також можуть бути використані на системному рівні, наприклад у консолі. В порівнянні з програмним та апаратним перериванням, подія, обробляється синхронно, тобто програма явно перевіряє події, які будуть виконуватися, в той час як переривання може запросити виконання дій в будь-який момент.

Делегати та події ред.

 
Делегування моделі подій. ClickMe — кнопка, джерело події.  ,…,  — інформатори які повідомляють, що сталася подія.

В об'єктно-орієнтованому програмуванні подій реалізуються на основі моделі делегатів[en][2]. Делегат — це тип, який представляє посилання на методи з конкретним списком параметрів. При створенні екземпляра делегата цей екземпляр можна пов'язати з будь-яким методом певного класу. C# використовує події як спеціальні делегати, котрі пов'язані тільки з класом, котрий оголошує її. Це створює гарну абстракцію та захист інформацію, що є основною частиною ООП.

Приклад делегату на С#, подія помічена ключовим словом  :

delegate void Notifier (string sender);

class Model {
    public event Notifier notifyViews;
    public void Change() { ... notifyViews("Model"); }
}

class View1 {
    public View1(Model m) {
        m.notifyViews += new Notifier(this.Update1);
    }

    void Update1(string sender) {
        Console.WriteLine(sender + " was changed during update"); 
    }
}

class View2 {
    public View2(Model m) {
        m.notifyViews += new Notifier(this.Update2); 
    }

    void Update2(string sender) {
        Console.WriteLine(sender + " was changed"); 
    }
}

class Test {
    static void Main() {
        Model model = new Model();

        new View1(model);
        new View2(model);
        model.Change();
    }
}

Обробник ред.

У комп'ютерному програмуванні, обробник подій це підпрограма, яка опрацьовує матеріали, отримані з програми. Обробник подій певним чином реагує на події, та починає виконувати дії які згенерувала та чи інша подія. Обробники можуть по-різному опрацьовувати події, все залежить від реалізації.[3]

Кожна подія є фрагмент інформації на рівні додатків від базової структури. В GUI події включають в себе натискання клавіші, вибір дій та таймер. На низькому рівні, події можуть представляти зчитування потоку з файла або мережі. Обробники подій є центральним поняттям програмуванні будь-якої програми. Всі події зберігаються в диспетчері подій[4].

Повідомлення про подію ред.

Повідомлення про подію генерують невеликі тлумачення такі як «Подія». Повідомлення про події — важлива функція в сучасних системах баз даних (використовується для інформування зміни бази даних), сучасних операційних системах (інформування процесів, коли вони повинні почати чи закінчити виконувати певні дії, наприклад запуск системи по таймеру). Платформи повідомлення о подіях, чи іншими словами пристрої котрі будуть генерувати події, зазвичай розробляють таким чином що вони можуть навіть не знати котрі програми будуть їх використовувати. Це роблять щоб забезпечити максимальну функціональність.[5]

Пристрої котрі генерують події ред.

Події миші ред.

Вказівний пристрій який спроможний генерувати ряд програмних жестів. Миша може генерувати ряд подій: переміщення, натискання кнопки миші та рух колеса миші чи комбінація цих жестів.

Події клавіатури ред.

При натисканні клавіші на клавіатурі або комбінацію клавіш генерується подія клавіатури, що дозволяє програмі певним чином опрацьовувати їх.

Події джойстика ред.

Переміщення джойстика генерує аналоговий сигнал. Він має кілька кнопок, щоб викликати події. Деякі геймпади, для популярних ігрових боксів, використовують джойстики.

Події сенсора ред.

Події, які генеруються за допомогою сенсорного екрану, зазвичай називають події жесту або натискання.

Події пристрою ред.

Події пристрої включають в себе особливі дії пристрою, наприклад, тремтіння, нахил, поворот, переміщення і т. д.

Примітки ред.

  1. Event Handlers and Callback Functions - article. w3future.com. Архів оригіналу за 9 липня 2016. Процитовано 28 квітня 2017.
  2. A High Level Design of the Sub-Farm Event Handler. 11 лютого 2007. Архів оригіналу за 11 лютого 2007. Процитовано 28 квітня 2017.
  3. javadoc-The Java API Documentation Generator. docs.oracle.com (амер.). Архів оригіналу за 6 травня 2017. Процитовано 28 квітня 2017.
  4. XML Events 2. www.w3.org. Архів оригіналу за 27 квітня 2017. Процитовано 28 квітня 2017.
  5. Javascript - Event order. www.quirksmode.org (англ.). Архів оригіналу за 6 травня 2017. Процитовано 28 квітня 2017.

Див. також ред.

Посилання ред.