====== Event-Driven Programming ======
Event-Driven Programming (česky událostmi řízené programování) je programovací paradigma, ve kterém je tok programu řízen událostmi (eventy). Program nevykonává pouze předem danou posloupnost příkazů, ale čeká na události a reaguje na ně pomocí definovaných funkcí nebo metod.
Tento přístup je široce využíván při vývoji webových, desktopových, mobilních i serverových aplikací.
===== Princip fungování =====
V událostmi řízeném programování aplikace neustále naslouchá událostem, které mohou vznikat z různých zdrojů.
Typický průběh:
Vznik události ↓ Event Queue (fronta událostí) ↓ Event Loop (zpracování událostí) ↓ Event Handler ↓ Provedení akce
Událost může být vyvolána uživatelem, systémem, hardwarem nebo jinou aplikací.
===== Zdroje událostí =====
==== Uživatelské události ====
Kliknutí myší.
Stisknutí klávesy.
Dotyk obrazovky.
Přetažení objektu.
==== Systémové události ====
Spuštění aplikace.
Ukončení programu.
Změna velikosti okna.
Změna síťového připojení.
==== Časové události ====
Vypršení časovače.
Naplánovaná úloha.
Periodické spuštění procesu.
==== Síťové události ====
Přijetí dat ze serveru.
Navázání spojení.
Odpojení klienta.
===== Event Handler =====
Event Handler je funkce, která se spustí při výskytu konkrétní události.
Příklad v JavaScriptu:
document .getElementById("button") .addEventListener("click", function() { alert("Tlačítko bylo stisknuto."); });
Po kliknutí na tlačítko dojde ke spuštění příslušné funkce.
===== Event Loop =====
Mnoho moderních prostředí používá mechanismus nazývaný Event Loop.
Jeho úkolem je:
sledovat frontu událostí,
vybírat čekající události,
předávat je odpovídajícím obsluhám,
zajišťovat plynulý běh aplikace.
Event Loop je klíčovou součástí například JavaScriptu nebo Node.js.
===== Výhody =====
Vysoká interaktivita aplikací.
Efektivní využití systémových prostředků.
Dobrá podpora asynchronních operací.
Přirozené zpracování uživatelských akcí.
Vhodné pro grafická rozhraní a síťové aplikace.
===== Nevýhody =====
Složitější ladění programu.
Obtížnější sledování toku vykonávání.
Riziko vzniku tzv. callback hell.
Náročnější správa větších aplikací.
===== Oblasti použití =====
Webové aplikace.
Desktopové aplikace.
Mobilní aplikace.
Herní vývoj.
Serverové aplikace.
Internet věcí (IoT).
Síťové služby.
===== Příklady technologií =====
JavaScript
Node.js
React
Angular
Vue.js
Qt
Electron
===== Související pojmy =====
[[event]]
[[event handler]]
[[event listener]]
[[event loop]]
[[callback]]
[[asynchronous programming]]
[[javascript]]
[[node.js]]
===== Shrnutí =====
Event-Driven Programming je programovací paradigma založené na zpracování událostí. Aplikace reaguje na akce uživatele, systémové změny nebo příchozí data prostřednictvím obslužných funkcí. Tento přístup tvoří základ většiny moderních grafických a webových aplikací a umožňuje efektivní práci s asynchronními operacemi.