Archív Inet.sk Pôvodný autor: Michal Čižmár
15. 03. 2006 o 00:00 12105x

Programujeme v jazyku C# II. Diel 12. – Udalosti I

Začíname novú a dosť významnú kapitolu o programovaní udalostne orientovaných programov. Uvidíte, že to nie je nič zložité a určite nájdete veľa dobrých nápadov ako využiť udalosti vo svojich programoch. Veľmi vhodný článok aj pre programátorov prechádzajúcich z C++ na C#. Článok nie je obmedzený verziou .NET.
Programujeme v jazyku C# II. Diel 12.  –  Udalosti I
Začíname novú a dosť významnú kapitolu o programovaní udalostne orientovaných programov. Uvidíte, že to nie je nič zložité a určite nájdete veľa dobrých nápadov ako využiť udalosti vo svojich programoch. Veľmi vhodný článok aj pre programátorov prechádzajúcich z C++ na C#. Článok nie je obmedzený verziou .NET.
 
Možno, že ste sa ešte nestretli s pojmom “udalostne orientované programy“, ale tým, že čítate tento text už využívate taký program :-). Najjednoduchším príkladom sú klasické oknové programy vo Windows (alebo inom OS, ktorý používa technológiu šírenie udalostí).
 
Udalosť vzniká, keď pohnete myšou, keď stlačíte tlačítko alebo keď stlačíte klávesu. Keď nejaká udalosť vznikne, operačný systém (napr. Windows) predá jej šírenie všetkým programom, ktoré dokážu na takýto  typ udalosti reagovať.
 
Obsluha udalosti je jednoduché zavolanie klasickej funkcie (metódy), (ktorú programátor naprogramoval) a dokáže urobiť nejakú činnosť, ktorá prislúcha danej udalosti. Udalosti sú základom interaktívnych programov.
 
Programátori v C++ sa s takouto technológiou nestretli. Možno, že teraz hovoríte, čo za bludy to tu píšem, veď Vy bežne programujete oknové programy a všetko to fachčí :-) aj v C++. Hneď dám všetko na pravú mieru. Udalosti v C++ sú implementované len pomocou nejakých knižníc, ktoré sú najčastejšie proprietárne (vytvorené firmou, ale natoľko používané, že sú takmer štandardné) . Napr. je to MFC používané vo Visual C++ alebo aj firma Borland má na udalosti vlastnú knižnicu, alebo si môžete takú knižnicu spraviť sami použitím pointrov na funkcie. A všetky tieto knižnice sa zas opierajú o knižnice WinAPI.
 
Hlavný rozdiel medzi C++ a C#, čo sa týka udalostí je v tom, že udalosti v C# fungujú už na úrovni syntaxe a nie sú potrebné ďalšie knižnice (čo je super :-))
 
Udalosti sa používajú vo všeobecnosti vtedy, keď programátor nejakej funkcie vopred nevie, kto všetko a odkiaľ ju bude volať (spúšťať).
Napr. programátor triedy jednoduchého tlačítka naprogramuje udalosť, ktorá znamená, že sa na tlačítko kliklo. A vy ako druhý programátor, naprogramujete funkciu - obsluhu udalosti, ktorá sa má vykonať, keď sa táto udalosť vyvolá.
 
Jednoduchý príklad :-)
Často sa udalosti vysvetľujú aj na architektúre Vydavateľ/Odberateľ napr. novín, tých papierových :-). Vydavateľstvo nevydáva a neposiela noviny konkrétne iba Vám (to predstavuje klasický princíp volania funkcií), ale umožňuje odberateľom zaregistrovať sa a ako náhle sa objaví nový výtlačok ( udalosť v tomto prípade je samotné vytlačenie nového výtlačku) rozpošle ho všetkým zaregistrovaným odberateľom.  
Tu je si dobré všimnúť, že na jednu udalosť môže zareagovať aj viacero iných funkcií.
 
Ak si ešte stále nie ste istí, či ste udalosti správne pochopili, napíšte bez ostychu dole do diskusie alebo na môj e-mail.
 
>>Udalosti pekne od podlahy.
Skôr ako začneme pracovať s udalosťami musíme si vysvetliť možno pre Vás nový dátový typ - delegate (delegát).
Delegáta a delegovanie veľmi rady využívajú šéfovia vo firmách. Šéf dokáže vykonávať nejaké funkcie. Je potrebné, aby vycestoval, ale nechce sa mu (pardon, je časovo zaneprázdnený :-) ), tak poverí – deleguje nejakou svojou funkciou svojho
zamestnanca – delegáta a pošle na pracovnú cestu jeho, aby ho zastúpil.
 
To isté robí aj delegate v C#. Je to typ premennej, ktorá dokáže zastúpiť určitú funkciu (na ktorú je prepravená) ľubovoľnej triedy. Najčastejšie sa delegáti používajú ako parametre iných funkcií a na tvorbu udalostí (asi už tušíte prečo).  
 
>>Vytvorenie delegáta
Ak viete programovať aj v C/C++, tak už asi tušíte, že delegáti sú si veľmi podobní s pointrom (ukazovateľom) na funkciu. Rozdiel je v tom, že delegáti dokážu zastúpiť aj metódy tried, čo v C++ nebolo možné. Ale to len na okraj.
 
Základom, čo si musíte uvedomiť je, že delegát je trieda alebo dátový typ (ako int alebo string), zjednodušene povedané. Takže predtým ako ho budeme používať  musíme

1. ) vytvoriť nový typ delegáta, podľa toho, aký typ funkcií, chceme aby dokázal zastúpiť
2.) zadeklarovať premennú podľa nami vytvoreného typu delegáta
3. ) naplniť hodnotou = new + odkaz na metódu, funkciu triedy, ktorú má zastúpiť.  
 
Veď mrknite na príklad a uvidíte.
 
Príklad 12.1
//---------------------------------------
using System;
class MainClass
{
      // 1. Vytvorenie noveho typu delegata
      delegate void jednoduchyDelegat();
     
      public static void Main(string[] args)
      {
       //2. Deklarovanie delagata
            jednoduchyDelegat delegat1;
           
            //3. Naplnenie delegata
            delegat1 = new jednoduchyDelegat(Pozdrav);
           
            // Volanie delegata
            delegat1();
 
       Console.ReadLine();
      }
      // Funkcia, ktoru ma delegat zastupit
      public static void Pozdrav()
      {                
            Console.WriteLine("Tek'ma'te jafa!");               
      }
}
//---------------------------------------

Príklad na stiahnutie.

 
 
Ak máte ešte drobné medzery v Goauldštine, tak program vypíše niečo ako „zdravím Ťa!“ (pri pozdravení s dobrým kamarátom). Takže si zopakujte kurz Star Gate – lekcia 1 – 9 ;-)))
 
1.) V príklade sme najprv vytvorili nový typ delegáta s menom JednoduchyDelegat, ktorý dokáže zastúpiť funkciu, ktorá nemá žiaden výstup – void a ani žiaden vstup ().
 
Všeobecne : 
delegate vystúpný_typ Meno_delegáta (vstupné_parametre)
 
2. ) Potom sme zadeklarovali premennú typu JednoduchyDelegat
    
 a dali sme jej  meno delegat1.
3.) Naplnili sme delegáta pomocou new a ako parameter
      konštruktora sme   zadali iba meno metódy (funkcie),
      ktorú má zastupovať
. V našom prípade Pozdrav.
     
Krok 3 a 4 ide samozrejme spojiť.
 
A nakoniec sme spustili delegáta, tak isto ako sa volajú metódy:delegat1().
 
>>Čo bude nabudúce?
Ukážeme si viacnásobných delegátov a ako použiť delegáta ako parameter metódy.
 
>>Predchádzajúce diely:
Programujeme v jazyku C# II. Diel 11. – yield
Programujeme v jazyku C# II. Diel 10. – Generics VI.

Programujeme v jazyku C# II. Diel 9. -- Generics V.

 
Michal Čižmár
micitn@orangemail.sk
 

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies