====== 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.