Showing posts with label napredni. Show all posts
Showing posts with label napredni. Show all posts

Friday, June 17, 2016

Događaji u C# programskom jeziku


Event – događaj u C# programskom jeziku je način da klasa ili objekat pruži obaveštenje drugim klasama ili objektima da se nešto važno dogodilo. Klasa koja generiše događaj naziva se publisher – izdavač dok klasa koja prima ili obrađuje događaj se naziva subcriber – pretplatnik. Klasa publisher definiše kad će se generisati događaj dok klasa subscriber odlučuje koja će se akcija preduzeti. Obično klasa pretplatnik sadrži čitavu listu metoda koji se pozivaju kad se izazove događaj i takve metode takođe zovemo subscribers - pretplatničke metode. Kada programeri rade sa događajima, uglavnom se to odnosi na programiranje aplikacije sa grafičkim okruženjem ili web aplikacijama, zato što su takve aplikacije vođene događajima. Na primer kad god vi kliknete na neku stavku u meniju ili neko dugme na formi mišem; vi zapravo aktivirate određeni događaj i na osnovu pokrenutog događaja se izvršava kod koji se nalazi u proceduri događaja za stavku menija ili dugmeta koje ste pritisnuli. Kako će ceo tok programa da se izvršava zavisi od događaja koje korisnik aktivira sve do izlaska iz aplikacije. Zato kažemo da su navedene aplikacije vođene događajima. Događaji se retko koriste u konzolnim aplikacijama ali i u njima mogu da imaju svoju primenu.


( Događaji u C# programskom jeziku )

Deklaracija događaja je jednostavna, stime da su događaji namenjeni da se koriste sa delegatima. Jednostavno tip događaja mora da bude delegat i zato ispred delegata mora da se nalazi ključna reč event. U .Net Framework-u su događaji bazirani na EventHandler delegatu. O delegatima čitajte ovde, a sintaksa za deklarisanje događaja je sledeća:


event DelegatDogadjaja imeDogadjaja;

Kao i kod delegate, pretplata na događaj se vrši operatorom +=

ImeDogadjaja += new DelegatDogadjaja (ImeMetode);

Dok se odjava, otkazivanje pretplate vrši operatorom -=

ImeDogadjaja -= new DelegatDogadjaja (ImeMetode);

Pre generisanja događaja se uvek proverava da li događaj ima null vrednost:

if (ImeDogadjaja != null)
{
    ImeDogadjaja.Invoke();

}

Događaje će te najbolje naučiti koristeći praktične primere. Pogledajte jedan od njih.

Praktičan primer događaja

Thursday, June 16, 2016

Delegati u C# programskom jeziku



Delegati su neka vrsta pokazivača na metode koji su objektno orjentisani i strogo tipizirani. Najjednostavnije rečeno delegat je referenca na metodu. Najlakše će te ih razumeti ukoliko zamislite da su delegati potpis metoda. Delegati vam omogućavaju da se logika vaše aplikacije u vašim metodama potpuno razdvoji od aplikacija koje su ih pozvale. Inače mnogi programeri ne shvataju zašto bi koristili delegate kad mogu pozvati metodu i ne vide njihovu svrhu. Delegati su predviđeni za situacije u kojima metodama želite da prenosite druge metode. Ja razumem da ste vi navikli da metodama prenosite podatke preko parametara ali ne i metode. Međutim postoje situacije u kojima će vaš metod umesto da za obradu podataka, poziva drugi metod i da bi situacija bila još komplikovanija vi čak i ne znate koji je taj drugi metod koji će se pozivati. Jer to možete znati jedino u fazi izvršavanja i zbog toga je neophodno pozivanje metode preko parametra i zato se koriste delegati.



( Delegati u C# programskom jeziku )

Delegati se često koriste kada radite sa nitima, klasama biblioteka i događajima. Delegate koje nameravate da koristite prvo treba da definišete. To u prevodu znači da vi definisanjem delegata saopštavate kompajleru koju vrstu metoda vaš delegat predstavlja. Svaki delegat se definiše unutar imenskog prostora ili klase. Zatim pravite jedan ili više primeraka tog delegata. Delegati mogu biti i sa i bez parametara. Sintaksa za delegata izgleda ovako; prvo se definiše delegat korišćenjem ključne reči delegate:

public delegate string ImeDelegata(string patrametar);

Delegat se može instancirati ovako:

public ImeDelegata mojDelegat = null;

Delegatu se može dodati referenca koristeći += operator:

mojDelegat += TestMetoda;

ili

mojDelegat = new ImeDelegata(TestMetoda);

Delegatu se takođe može ukloniti referenca koristeći -= operator:

mojDelegat -= TestMetoda;

Sve ovo vam može zvučati i izgledati nerazumljivo ali kad pogledate praktične primere upotrebe delegata, shvatićete koliko je to jednostavno. Ono što je najbitnije treba da razumete da se delegati izvršavaju dinamički; u toku izvršavanja; i da delegat može pokazivati na bilo koju metodu koja ima isti potpis kao i delegat. Pogledajte jednostavan primer kako se koristi delegat sa više metoda.

Primer upotrebe delegata

Wednesday, March 09, 2016

Uvod u Advanced - naprednije C# tutorijale

Svakim danom tehnologija napreduje, jednostavno ona nikog ne čeka. To za posledicu ima da se čak i C# programski jezik u stručnim školama uči od osnovnih stvari i na najbrži način se prelazi sve opširnija i kompleksnija materija, koja u suštini iza vas ostavlja praznine i nejasnoće. Jednostavno mnogo bitne stvari se preskoče, neke se smatraju zastarelim dok se neke ne uklapaju u nastavni program zbog svoje kompleksnosti. Danas je jednostavno teško pronaći granicu gde početni nivo C#  programskog jezika počinje a gde se završava i prelazi u napredniji nivo. U većini slučajeva sva se materija stavi pod isti krov dok se podrazumeva da znate i one stvari za koje nikad niste ni čuli. Ali činjenica je da se bitne stvari preskaču. Da stvar bude zanimljivija mnogi studenti prestaju da prate nastavnu materiju u kontinuitetu jer im materija nije jasna. Jednostavno ne razumeju.


( C# 6.0 Advanced Tutorial )

Iz tog razloga, neophodno je pored progresa u učenju C# programskog jezika i kontinuiteta vraćati se unazad i često istraživati i po starijoj literaturi gradiva koja vam u edukaciji uopšte nisu prezentovana. Zato sam ja odlučio da Fundamentals – osnovne tutorijale prekinem kod indeksera, pokrenem Advanced – naprednije tutorijale i bukvalno vratim materiju unazad i iskopam ono što se u edukaciji retko i spominje. Inače, šta vam vredi samo ubrzano preći učenje preko listi, generika, rada sa datotekama, delegatima, događajima itd; ako vi ne znate ni šta je sklop niti kako vaša aplikacija uopšte radi. Ja sam tokom svog učenja C# programskog jezika uvek osećao tu neku prazninu i pokušavao sam pronaći odgovore učeći C++ programski jezik, čak i C programski jezik, ali odgovori nisu bili tu. Jednostavno, morate istražiti detaljno i jednom za sva vremena bukvalno imati pravu sliku i shvatiti kako detaljno šta radi u samom .Net Framework okruženju, čak i u Windows-u. To sad ne znači, da vi bukvalno trebate da naučite IL programski jezik, ali bar treba da čujete za alate Microsoft Visual Studio-a poput ildasm.exe, resedit.exe ili gacutil.exe i da znate zašto služe. Vi kasnije sami možete izučavati svaki alat kako vi želite, ali je bitno da razumete suštinu i tok svih procesa koje se odvijaju za vreme rada vaše aplikacije. Potrebno je da razumete i kako da pišete nebezbedni kod u Microsoft Visual Studio okruženju, kako da upravljate nitima, taskovima kako bi ste optimizovali vaše programe i desetine drugih stvari. Inače ja ne preporučujem ni da prelazite i pravite najbanalnije Windows Forms aplikacije dok ne shvatite u potpunosti sintaksu C# kod-a. Tek kad vam bude jasna sintaksa C# kod-a u potpunosti u svakom njegovom obliku, ma kako on bio isprepletan, kompleksan ili pojednostavljen lambda izrazima tek onda se možete posvetiti UI - User interface okruženjima.

Šta možemo da očekujemo u Advanced tutorijalima?