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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Події та делегати

В інформатиці, подія (англ. 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. Процитовано 2017-04-28. 
  2. A High Level Design of the Sub-Farm Event Handler. 2007-02-11. Процитовано 2017-04-28. 
  3. javadoc-The Java API Documentation Generator. docs.oracle.com (en-US). Процитовано 2017-04-28. 
  4. XML Events 2. www.w3.org. Процитовано 2017-04-28. 
  5. Javascript - Event order. www.quirksmode.org (en). Процитовано 2017-04-28. 

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

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