1. Visual Studio .NETVisual Studio .NET • Rad u Visual Studiu (VS) je organizovan u projekte. • Projekat se može otvoriti ili kreirati korišćenjem opcija Open ProjectOpen Project ili New ProjectNew Project (iz File menija). 2. Kreiranje novog projektaKreiranje novog projekta • Kreiranje novog projekta za Console application: 3. Kreiranje projekta - nastavakKreiranje projekta - nastavak • Nakon što ste odabrali naziv aplikacije, lokaciju na kojoj će se projekat snimiti (i naziv Solution-a), pritiskom na OK prikazaće se novokreirani projekat: 4. Glavni elementi VS okruženjaGlavni elementi VS okruženja GLAVNI PROZOR GLAVNI PROZOR TOOLBOX TOOLBOX SERVER SERVER EXPLORER EXPLORER SOLUTION SOLUTION EXPLORER EXPLORER PROPERTIES PROPERTIES ERROR LISTERROR LIST 5. Glavni elementi VS okruženjaGlavni elementi VS okruženja • Glavni prozor koji prikazuje uvodnu početnu stranu „Start page“ kad se VS pokrene, je prozor u kome se prikazuje sav naš kod. On je podeljen na kartice (tabove). • Glavni elementi VS okruženja su: Solution ExplorerSolution Explorer – prikazuje strukturu i sadržaj trenutno učitanog Solution-a. Solution čini jedan ili više projekata. Lista ReferencesReferences sadrži spisak .NET biblioteka koje koristimo u našem projektu. PropertiesProperties – omogućava detaljno konfigurisanje pojedinačnih elemenata, npr. promenu osobina dugmeta na Windows formi kao što su boja, tekst i sl. ToolboxToolbox – koristi se za dodavanje elemenata korisničkog interfejsa. Server ExplorerServer Explorer – omogućava pristup i podešavanje karakteristika i servisa servera. Koristi se za povezivanje sa bazo podataka. 6. Kreiranje Windows aplikacijeKreiranje Windows aplikacije • Postupak kreiranja novog projekta za Windows aplikaciju je sličan kao za kreiranje konzolne aplikacije, s tim što ćemo od ponuđenih Template-a odabrati Windows Forms Application: 7. Kreiranje Windows aplikacijeKreiranje Windows aplikacije • Windows Forms Application u VS: Windows Form 8. Kreiranje Windows aplikacijeKreiranje Windows aplikacije • Toolbox je paleta sa elementima Windows korisničkog interfesja. Dodajmo dugme na našu formu Form1 jednostavnim prevlačenjem Button kontrole iz Toolbox-a na formu. Nakon što smo prevukli dugme na formu, ukoliko duplo kliknemo na njega, otvoriće se prozor (fajl) sa kodom koji ustvari, predstavlja formu koju vidimo iz Form1.cs[Design] prozora. Kursor će se pozicionirati na metodu koja će izvršiti ako korisnik klikne na dugme. Otkucajmo: • MessageBox.Show("Pozdrav iz prve windows aplikacije"); Vidi kodkod na sledećem slajdu 9. Kreiranje Windows aplikacijeKreiranje Windows aplikacije Pokrenimo izvršavanje aplikacije pritiskom na F5 10. Osnovni koncepti C# jezikaOsnovni koncepti C# jezika Kada programiramo u C# jeziku, pišemo kod unutar metoda (method) koje se nalaze unutar klasa (class), a koje se pak nalaze unutar prostora za imena (namespace). Na vrhu hijerarhije nalazi se namespace, unutar koga možete pronaći serije različitih klase, koje sadrže metode, koje sadrže izjave (statements). Namespace Class Method 1 statement statement Method 2 statement statement Klasa sadrži jedan deojedan deo vašeg programa (međutim neki mali programi mogu sadržati samo jednu klasu). Klasa sadrži jednu ili više metoda. Metode uvek moraju “živeti” unutar klase. A metode su napravljene pomoću iskaza – nalik onome u prethodnom primeru. Svaki put kada kreirate novi projekat, automatski definišete namespace za isti, tako da je njegov kod odvojen od .NET Framework klasa. 11. Šta C# radi za Vas...?Šta C# radi za Vas...? Čim kreirate novi projekat, C# kreira Form1.csForm1.cs, Form1.Designer.csForm1.Designer.cs, i Program.csProgram.cs fajlove, when you create a new project. Iste dodaje u Solution Explorer prozor, i podrazumevano (by default), čuva ove fajlove u sledećoj putanji: My DocumentsVisual Studio 2010ProjectsIme_Vašeg_projekta. Sadrži kod koji definiše formu i objekte unutar nje Ovaj fajl sadrži C# kod koji definiše ponašanje forme. Ovaj fajl sadrži kod koji startuje (podiže) program i prikazuje formu C# Uverite se da ste sa uvali Vaš projekatč odmah nakon što ste ga kreirali, klikom na “Save All” iz File menija— ovo e sa uvati sve fajlove iz projektać č . Ukoliko kliknete na “Save”, to e samoć sa uvati fajl na kome trenutno radite.č .. C#C# Form1.cs Program.cs Form1.Designer.cs Visual Studio automatski kreira ova sva tri fajla. 12. Dodavanje kontrola na formuDodavanje kontrola na formu • Dodavanje kontrola u Visual Studio C# je VEOMA LAKO – samo prevuci i pusti (drag and drop). • Kliknite na neku kontrolu iz Toolbox-a i prevucite je na Vašu formu. U pozadini C# sam dodaje kod u Form1.Designer.cs za novu dodatu kontrolu. Svaki put kada izvršite promenu dodavajući kontrolu na formu, kod u Form1.Designer.cs se automatski menja. C# Form1.Designer.cs Ukoliko ne viditeUkoliko ne vidite TToolbox,oolbox, pokušajtepokušajte da pređete mišomda pređete mišom preko rečipreko reči “Toolbox”“Toolbox” koja se nalazi ukoja se nalazi u gornjem levom uglugornjem levom uglu glavnog prozoraglavnog prozora .. Ukoliko nije tamo,Ukoliko nije tamo, selektujteselektujte ““Toolbox”Toolbox” iziz ViewView menmenijaija da bi seda bi se pojaviopojavio.. 13. NaredbaNaredba usingusing Svaki program (kod fajl) započinje grupom usingusing linija koda (naredbi). Ova naredba govori C# jeziku da se planira korišćenje određenih prostora za nazive (grupe klasa), čije nazive kasnije nije potrebno ponavljati u programu kada se koristi određena klasa ili objekat iz te grupe. Naredbe using se nalaze na početku svakog koda za formu projekta – u njima se navode ugrađeni prostori za nazive koji se mogu koristiti. Jednu stvar imajte na umu: Nije obavezno da koristiti usingusing naredbu! Uvek možete koristiti potpuno kvalifikovanu naredbu. Dakle, ukoliko izostavite using naredbu, npr. System.Windows.Forms, i dalje možete prikazati message box pozivajući System.Windows.Forms.MessageBox.Show(), I kompajler će znati o kom namespace-u je reč. Naravno, ovo je duži i teži način! Prostor za naziv za naš projekat “Hello” 14. Primer dužeg i kraćeg načinaPrimer dužeg i kraćeg načina upotrebe prostora naziva u koduupotrebe prostora naziva u kodu a) Upotreba dužeg načina – navođenjem pune sintakse svih prostora naziva koji se koriste za ispis poruke na ekranu: System.Windows.Forms.MessageBox.Show (System.Windows.Forms.MessageBox.Show (""Pozdrav iz prve WindowsPozdrav iz prve Windows aplikacijeaplikacije",", "P"Pozdravozdrav"");); b) Upotreba kraćeg načina pozivanja klase iz prostora za nazive (ako je System.Windows.Forms klasa već navedena na početku programa u naredbi uusingsing): MessageBox.Show (MessageBox.Show ("" Pozdrav iz prve Windows aplikacije", "PozdravPozdrav iz prve Windows aplikacije", "Pozdrav"");); Duži (potpuno kvalifikovani) način pisanja naredbi ima smisla koristiti ako u različitim prostorima za nazive koristimo klase ili objekte s istim nazivom, jer se može pratiti iz kojeg prostora je uzet određeni objekt U svakom drugom slučaju praktičnije je koristiti kraći način pisanja naredbi. Kada koristiti duži način Kada koristiti duži način pisanja naredbi? pisanja naredbi? 15. Namespaces – prostori za naziveNamespaces – prostori za nazive • Biblioteke (ili skupovi) klasa u .NET okviru su različiti prostori za nazive (namespaces). • Šta su “namespaces”? • Skupovi tipova koji su logički organizovani, što omogućuje korišćenje više verzija tipova s istim nazivom, ali unutar različitih prostora za nazive (npr. kao što postoje u prirodi grupe ili vrste živih bića), npr. • Živa bićaŽiva bića -- VodozemciVodozemci -- GmGmizavciizavci -- SisSisariari ** ŽivotinjeŽivotinje ** LjudiLjudi ...dalja podela prema rasi, polu, itd....dalja podela prema rasi, polu, itd. • Postoji hijerarhija prostora za nazive – jedan prostor može sadržavati druge prostore u hijerarhijskom poretku. • Prostori za nazive su sadržani unutar .NET okvira, ali i korisnici razvojnih alata mogu koristiti te prostore. 16. Osnovni prostori za nazive uOsnovni prostori za nazive u .NET-u.NET-u 17. IntelliSense mogućnostIntelliSense mogućnost • MogućnostMogućnost ugrađena u alat,ugrađena u alat, koja pruža pomoć pri pisanju naredbi nakoja pruža pomoć pri pisanju naredbi na načinnačin da nam prikazuje listu s mogućimda nam prikazuje listu s mogućim klasama, objektima, metodama kojeklasama, objektima, metodama koje možemo izabrati smožemo izabrati saa popisapopisa.. • Aktivira se automatski pri početku pisanjaAktivira se automatski pri početku pisanja naredbe ili tnaredbe ili tasterasterom Ctrlom Ctrl++SpaceSpace.. IntelliSense pokazuje popis objekata koje možemo izabrati a koji počinju slovom “M” IntelliSense pokazuje popis metoda koje možemo izabrati za upisani objekat Message BoxIzbor vršimo strelicama ili mišem i tasterom Enter prebacujemo taj deo naredbe u programski kod... 18. Ključne reči C# jezikaKljučne reči C# jezika • Svaki programski jezik sastoji se od niza ključnih reči kojeSvaki programski jezik sastoji se od niza ključnih reči koje imaju svojeimaju svoje unapred određeno značenje i mogu se koristiti zaunapred određeno značenje i mogu se koristiti za pisanje naredbi programa.pisanje naredbi programa. • U C# jeziku neke od ključnih reči su:U C# jeziku neke od ključnih reči su: 19. Objektno orjentisano programiranjeObjektno orjentisano programiranje 20. Kreiranje vlastitih klasaKreiranje vlastitih klasa • Ključne reči koriste se u naredbama programa.Ključne reči koriste se u naredbama programa. Osim korišOsim korišććenjaenja ugrađenih ključnih reči, uugrađenih ključnih reči, u naredbama koristimo i proizvoljne nazive zanaredbama koristimo i proizvoljne nazive za klase,klase, objekte, metode iobjekte, metode i promenljive (promenljive (varijablevarijable)).. • Do sada smo u priDo sada smo u primmerima uvek koristili klase kojeerima uvek koristili klase koje su već ugrađene usu već ugrađene u razvojni alat C# (npr. klasa Formrazvojni alat C# (npr. klasa Form koja je označavala formu u Windowskoja je označavala formu u Windows aplikaciji).aplikaciji). Međutim, u aplikaciji programeri često trebaMeđutim, u aplikaciji programeri često treba dada kreirakreirajuju vlastitevlastite klase po potrebi.klase po potrebi. • Kako kreirati vlastite klase? Za odgovor na toKako kreirati vlastite klase? Za odgovor na to pitanje, potrebno jepitanje, potrebno je razumeti osnovne koncepterazumeti osnovne koncepte objektnog programiranja – štobjektnog programiranja – štaa su tipovi,su tipovi, klase,klase, instance, objekti.instance, objekti. 21. ŠtŠtaa je tip u objektnomje tip u objektnom programiranju?programiranju? • Bit objektnog programiranja je kreiranje novihBit objektnog programiranja je kreiranje novih tipova.tipova. • Tip predstavlja neku stvar (eng. thing).Tip predstavlja neku stvar (eng. thing). • Ponekad je stvar abstraktna (npr. tablica), a ponekad jePonekad je stvar abstraktna (npr. tablica), a ponekad je vrlo konkretnavrlo konkretna (npr. dugme u nekom prozoru).(npr. dugme u nekom prozoru). • Tip definiTip definišeše opopštšta svojstva i ponašanje neke stvari.a svojstva i ponašanje neke stvari. Npr. dugme (kontrolaNpr. dugme (kontrola button) je jedan tip objekta.button) je jedan tip objekta. OK je jedna instanca dugmeta Cancel je jedna instanca dugmeta Help je jedna instanca dugmeta Sva ova tri objekta su tipa “button” (sve su to dugmadi) 22. Nasleđivanje kod tipovaNasleđivanje kod tipova • Ako smo kreirali tri dugmeta (OK, Cancel i Help), sva triAko smo kreirali tri dugmeta (OK, Cancel i Help), sva tri nasleđujunasleđuju svojstva koja ima tip “button”:svojstva koja ima tip “button”: svojstvo visine, širinesvojstvo visine, širine text koji će pisati na dugmetutext koji će pisati na dugmetu položaj dugmeta na formi,položaj dugmeta na formi, i druga svojstva zajednička svim instancama kojei druga svojstva zajednička svim instancama koje pripadaju tipu “button”pripadaju tipu “button” • Ta se karakteristika objektnog programiranja zoveTa se karakteristika objektnog programiranja zove NASLEĐIVANJE.NASLEĐIVANJE. • NASLEĐIVANJE je mogućnost da instanceNASLEĐIVANJE je mogućnost da instance preuzimaju sva svojstva tipapreuzimaju sva svojstva tipa kojem pripadaju.kojem pripadaju. 23. Vrste tipovaVrste tipova • U C# jeziku se koriste ova 4 tipa:U C# jeziku se koriste ova 4 tipa: Klase, pri čemu se instance klase zovuKlase, pri čemu se instance klase zovu objekti,objekti, Enumeracije (eng. enums),Enumeracije (eng. enums), Strukture (eng. structs) iStrukture (eng. structs) i Delegati (eng. delegates).Delegati (eng. delegates). od kojih se najčešće koriste KLASE, pa će bitiod kojih se najčešće koriste KLASE, pa će biti detaljnije objašnjene udetaljnije objašnjene u nastavku.nastavku. 24. Klase, objekti (instance)Klase, objekti (instance) • KLASA je neki tip promatranih objekata.KLASA je neki tip promatranih objekata. • Klasa je adekvatnaKlasa je adekvatna grupigrupi ili vrsti kodili vrsti kod bioloških bića, npr.bioloških bića, npr. grupagrupa pasa,pasa, mačaka,mačaka, studenata, radnika, artikala, itd. Objekstudenata, radnika, artikala, itd. Objekaat jet je instanca neke klase,instanca neke klase, npr.npr. 25. Odnos klase i objekataOdnos klase i objekata • Klasa :Klasa : –– To je model koji opisuje kako kreirati objekatTo je model koji opisuje kako kreirati objekat –– je kao “šematski planje kao “šematski plan (skica)”(skica)” –– Sadrži podatke (atribute) i metodeSadrži podatke (atribute) i metode • Objekti:Objekti: –– Objekat je predstava nekog entiteta iz realnogObjekat je predstava nekog entiteta iz realnog svetasveta –– Instance klaseInstance klase –– Može biti više objekata (instanci) klaseMože biti više objekata (instanci) klase 26. Kreiranje klaseKreiranje klase • Kada kreiramo neku vlastitu klasu, potrebno je definiKada kreiramo neku vlastitu klasu, potrebno je definissati:ati: njenanjena svojstva (properties)svojstva (properties) iliili promenljivepromenljive kojima ćekojima će dodeljivatidodeljivati vrednosti (ako se radi o javnimvrednosti (ako se radi o javnim svojstvima, tada se koristi izrazsvojstvima, tada se koristi izraz “svojstvo” (eng.“svojstvo” (eng. property), a ako se radi o privatnimproperty), a ako se radi o privatnim promenljivamapromenljivama kojekoje će se koristiti samo u toj klasi, tada koristimoće se koristiti samo u toj klasi, tada koristimo izraz “izraz “promenljivapromenljiva”” metodemetode koje određuju njeno ponašanje.koje određuju njeno ponašanje. • Naredba za kreiranje nove klase počinje ključnom rečiNaredba za kreiranje nove klase počinje ključnom reči classclass, zatim dolazi, zatim dolazi naziv klase, zatim deklaracijanaziv klase, zatim deklaracija svojstava (properties) koje se definisvojstava (properties) koje se definiššu za tuu za tu klasu,klasu, papa metode koje pripadaju klasi.metode koje pripadaju klasi. 27. Kreiranje klase - nastavakKreiranje klase - nastavak • Npr. ovako bismo kreirali vlastitu klasu:Npr. ovako bismo kreirali vlastitu klasu: class mojaKlasaclass mojaKlasa {{ //ovde definicija svojstava ili//ovde definicija svojstava ili promenljivihpromenljivih,, npr.npr. int mojaint mojaPromenljivaPromenljiva;; }} • Gornjim naredbama kreirali smo klasu pod nazivomGornjim naredbama kreirali smo klasu pod nazivom mojaKlasamojaKlasa, i njoj, i njoj pripadajuću celobrojnupripadajuću celobrojnu promenljivupromenljivu pod nazivompod nazivom mojamojaPromenljivaPromenljiva kojojkojoj će se unutarće se unutar klase mojaKlasa moći dodeljivati vrednosti.klase mojaKlasa moći dodeljivati vrednosti. 28. Kreiranje instance neke klaseKreiranje instance neke klase • Npr. sledećim naredbama definiNpr. sledećim naredbama definišeše se klasa ilise klasa ili grupagrupa objekataobjekata StudentStudent, a unutar, a unutar nje metoda pod nazivomnje metoda pod nazivom Main()Main() • Main() je glavnaMain() je glavna metoda za neki program, a nalazi se u datoteci Program.cs umetoda za neki program, a nalazi se u datoteci Program.cs u okviruokviru Solution Explorer-a.Solution Explorer-a. U metodi se definiU metodi se definišeše instanca klase.instanca klase. class Studentclass Student {{ // ovde defini// ovde definišešemo svojstva koja pripadaju toj klasi:mo svojstva koja pripadaju toj klasi: int Ocena;int Ocena; // ovde defini// ovde definišešemo metodu:mo metodu: public void Main()public void Main() {{ StudentStudent StefanStefan = new Student();= new Student(); StefanStefan.Ocena= 3;.Ocena= 3; }} }} Kreiramo instancu Stefan koja pripada klasi Student Promenljivoj Ocena koja pripada instanci Stefan dodeljuje se vrednost 3 29. Dodavanje klase u Visual StudDodavanje klase u Visual Studiiuu Desni klik na naziv projektaDesni klik na naziv projekta 30. Definisanje klaseDefinisanje klase Klasa predstavlja apstraktnu predstavu skupa objekata koji imaju iste osobine. Sastoji se od atributa i metoda. Atributi i metode se nazivaju članice klase. Objekat predstavlja konkretan primerak - instancu klase. 31. Instanciranje klase (kreiranjeInstanciranje klase (kreiranje objekata)objekata) 32. KonstruktorKonstruktor • Naredba kojom se definiše instanca neke klase izgleda ovako: (npr. za kreiranje instance Stefan klase Student) Student StefanStudent Stefan = new= new Student()Student();; • Naredba sadrži na kraju zagrade (), pa izgleda kao da poziva metodu. • Zapravo, pri kreiranju nove instance poziva se jedna metoda koja se zove konstruktor (eng. constructor). • Zadatak konstruktora je kreirati instancu (objekt) neke klase i omogućiti da se toj instanci dodeli vrednost kasnije u programu. • Nakon što se konstruktorom kreira nova instanca, u memoriji se ostavlja prostor za vrednosnu instancu. Ako ne specifikujemo koji konstruktor pozivamo, * CLR poziva standardni (default) konstruktor kojim se definiše nova instanca klase i ne prosleđuju mu se nikakve vrednosti. Zato u zagradama kod ovog standardnog konstruktora ne pišemo ništa. * CLR (Common Language Runtime) – je mehanizam izvršavanja u zajedničkom jeziku koji različite .NET jezike prevodi u isti zajednički jezik, koji se koristi kada se aplikacije izvršavaju (Barker, 2007). 33. Konstruktor - nastavakKonstruktor - nastavak • Ukoliko se želi koristiti neki vlastiti određeni konstruktor, tada se on mora deklarisati u programu pre samog korišćenja. • Primer: deklarisanje konstruktora koji će ispisivati sistemsko vreme: // constructor// constructor public Time(System.DateTime dt)public Time(System.DateTime dt) {{ Year = dt.Year;Year = dt.Year; Month = dt.Month;Month = dt.Month; Date = dt.Day;Date = dt.Day; Hour = dt.Hour;Hour = dt.Hour; Minute = dt.Minute;Minute = dt.Minute; Second = dt.Second;Second = dt.Second; }} • Kako bi ovaj primer radio, potrebno je pre korišćenja konstruktora i deklarisati i dodeliti vrednosti za promenljive Year, Month, Date, Hour, Minute, Second. Deklaracija konstruktora koji je javan (public) da bi se mogao koristiti u svim metodama, on će konstruisati instance klase Time, a prosleđuje mu se promenljiva dtdt koja je tipa System.DateTime 34. Konstruktor - nastavakKonstruktor - nastavak Nakon deklaracije, u nekoj metodi, npr. Main() može se koristiti deklarisani konstruktor da bi kreirao novu instancu klase Time. Deklarisani konstruktor koristi se u klasi Tester, u metodi Main(): public class Testerpublic class Tester {{ static void Main( )static void Main( ) {{ System.DateTime currentTime = System.DateTime.Now;System.DateTime currentTime = System.DateTime.Now; Time t = new Time(currentTime);Time t = new Time(currentTime); t.DisplayCurrentTime( );t.DisplayCurrentTime( ); }} }} 35. MetodeMetode • Metoda je neka funkcija koja se nalazi unutar klase. Ona je član (eng. member) klase. Metode definišu šta klase rade i kako se klase ponašaju. Metodama koje sami kreiramo možemo dati proizvoljne naziv, npr. Ispis(), Racunanje(), itd. Ako želimo napisati odgovor na događaj klik miša na neku kontrolu (button ili dr.), dvostrukim klikom miša program će kreirati metodu i dati joj standardni naziv, npr. button1_Click() • U svakoj aplikaciji postoji prva, glavna metoda iz koje se pozivaju sve ostale metode te aplikacije. Ta se metoda zove Main()Main(). Metoda Main() može se u C#-u videti u prozoru Program.csProgram.cs u Solution Explorer-u. • Metode klase predstavljaju funkcije – članice klase. • Svaka metoda sadrži : tip koji vraća (ili void ukoliko ne vraća nikakav tip), naziv (ime metode), listu parametara, telo metode. • Ukoliko metoda vraća neku vrednost, onda se unutar tela metode mora pozvati naredba return. 36. Primeri metodaPrimeri metoda 37. Pozivanje metoda klasePozivanje metoda klase 38. Metoda Main()Metoda Main() • Otvorite u C#-u (Microsoft Visual Studio) novi projekat (Windows aplikaciju) pod nazivom Vezba. • U Solution Explorer prozoru kliknite dva puta na Program.cs • Pojaviće se programski kod za glavni program aplikacije koji poziva sve metode te aplikacije Glavni program aplikacije može se videti kada kliknemo dvaput na “Progam.cs” u prozoru Solution Explorer-a 39. Metoda Main() - nastavakMetoda Main() - nastavak Glavni program aplikacije izgleda ovako: namespace vezbanamespace vezba {{ static class Programstatic class Program {{ /// /// /// ovde dolazi opis št/// ovde dolazi opis štaa aplikacija radiaplikacija radi /// /// [STAThread][STAThread] static void Main()static void Main() {{ Application.EnableVisualStyles();Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false);Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1());Application.Run(new Form1()); }} }} }} Unutar prostora za nazive (namespace-a) vezba kreira se klasa Program, unutar te klase se definiše metoda Main() Glavna metoda Main() 40. Metoda Main() - nastavakMetoda Main() - nastavak Metoda Main() se automatski poziva od strane CLR-a (Common Language Runtime-a) prilikom izvršavanja programa. Za nas važna naredba u metodi Main() je ona koja pokreće aplikaciju, i otvara prvu formu aplikacije. To je naredba: Application.Run(new Form1());Application.Run(new Form1()); Gornjom naredbom pokreće se aplikacija otvaranjem prve forme Form1. 41. Kreiranje vlastite metodeKreiranje vlastite metode • Kada se kreira neka metoda, ona takođe ima svoju deklaraciju. U deklaraciji se definiše tip podatka koji će metoda vraćati, zatim naziv metode i u zagradi parametre koji će se prosleđivati metodi. • Npr. ovako: IntInt myMethodmyMethod((int velicinaint velicina);); • Neke metode uopšte ne vraćaju nikakve vrednosti. Takve metode samo nešto izvode, i tada je tip metode voidvoid, a u zagradi se ne piše ništa, npr. ovako: void myVoidMethod( );void myVoidMethod( ); Ovde se određuje da će metoda nakon izvršavanja vraćati celobrojnu vrednost Naziv metode je myMethod (može biti proizvoljan) Ovde se određuje da će se promenljiva s kojom će se u metodi računati zvati “velicina” i biće celobrojna 42. Metode tipaMetode tipa voidvoid • U C# se prilikom korišćenja metode uvek mora deklarisati tip koji metoda vraća ili napisati ključnu reč “void” ako metoda ne vraća nikakvu vrednost. • Npr. do sada smo u primerima koristili metode koje ne vraćaju vrednosti, ali su bile standardne metode za klik miša na neko dugme, pa su njihove deklaracije izgledale ovako: private void button1_Click(object sender, EventArgs e)private void button1_Click(object sender, EventArgs e) “private” znači da se metoda koristi samo unutar jedne klase u kojoj je deklarisana “void” znači da metoda ne vraća nikakvu vrednost “button1_Click” je naziv metode Metodi se u zagradi prosleđuju parametri koji su standardni za neku ”click” metodu 43. Komentari u programskom koduKomentari u programskom kodu • Komentari se u programski kod umeću zbog više razloga: Kako bi olakšali programeru snalaženje u kodu (zbog mogućih kasnijih ispravki) Kako bi omogućili izradu adekvatne programske dokumentacije • Postoji tri osnovna načina upotrebe komentara: 11.. C++ stil:C++ stil: // ovo je C++ stil pisanja komentara i vredi do kraja// ovo je C++ stil pisanja komentara i vredi do kraja // jedne linije// jedne linije 2. C stil:2. C stil: /* ovo je C stil pisanja komentara./* ovo je C stil pisanja komentara. Komentar se može pisati kroz više linijaKomentar se može pisati kroz više linija a vredi do znaka */a vredi do znaka */ 3. Komentari za XML dokumente3. Komentari za XML dokumente 44. Operator tačka (.)Operator tačka (.) Operator . koristi se: Za pristup metodi ili svojstvu unutar neke klase Kako bi ograničio naziv klase na određeni prostor za nazive (namespace), npr. u naredbi using System.Windows.Forms;using System.Windows.Forms; koristi se prostor za nazive System, u njemu podprostor Windows, a u njemu podprostor Forms. •Primer: Student.Student.StefanStefan.Visina=1.Visina=19191;; koristi instancu Stefan klase Student, i njegovom svojstvu Visina dodeljuje vrednost 191. 45. Korišćenje statičnih članovaKorišćenje statičnih članova Pri korišćenju metode Main() videli smo da naredba sadrži ključnu reč “static”: static void Main()static void Main() Reč “static” znači da se ta metoda može pozvati samostalno bez prethodnog pozivanja klase (Možete je koristiti bez da u ruci imate instancu te klase) Svojstva i metode neke klase mogu biti instance ili statični članovi. Ako su instance, moraju se pozivati preko operatora “.” tako da se najpre navede klasa kojoj pripadaju, npr. ako definiramo klasu Student, i u okviru nje instancu Stefan, a zatim neku metodu Upisi() (kojom će se studenti upisivati na fakultet), tada se ta metoda poziva: a) ako prethodno nije definisana kao statična: Student.Student.StefanStefan.Upisi();.Upisi(); b) ako je prethodno definisana kao statična: Student.Upisi();Student.Upisi(); 46. Windows formeWindows forme 47. Pojam Windows formePojam Windows forme • Forma je osnovni elemenat korisničkog interfejsa. • Forma je kontrola izvedena iz klase Form a koja je izvedena iz klase Control. • Windows forme se kreiraju u slučajevima kreiranja desktop aplikacija i kada se očekuje da klijentski računari imaju dovoljno snage da izvrše odgovarajuću obradu podataka. • ASP.NET Web forme se kreiraju u slučajevima kada je korisnički interfejs web browser i za aplikacije koje se objavljuju putem web-a. 48. Svojstva windows formeSvojstva windows forme • Name – ovo svojstvo postavlje ime forme odnosno ime odgovarujuće klase. public partial class Form1 : Formpublic partial class Form1 : Form • AcceptButton – pomoću ovog propertija se postavlja koje će dugme biti kliknuto kada korisnik pritisne taster ENTER. • CancelButton – ovaj properti određuje koje će dugme biti kliknuto kada se pritisne ESC taster. • ControlBox – određuje da li forma sadrži dugmad za minimizaciju, maksimizaciju, za zatvaranje prozora. • Minimize Box, MaximizeBox svojstva omogućavaju prikazivanje i sakrivanje dugmadi za maksimiziranje i minimiziranje. • Text property određuje tekst koji će biti prikazan na naslovnoj liniji forme. • StartPosition određuje početnu poziciju forme na ekranu. • WindowState svojstvo omogućava prikaz forme u normalnoj veličini, minimiziranu i maksimiziranu. 49. Događaji i metode formeDogađaji i metode forme (životni ciklus forme)(životni ciklus forme) 50. Opis događaja formeOpis događaja forme • Load događaj se koristi da bi se izvršile akcije pre nego što forma postane vidljiva. • Activated događaj se okida kada se forma aktivira u kodu ili od strane korisnika. Okida se npr. kada forma dobije fokus od neke druge forme. Ovaj događaj se okida pre događaja GotFocusGotFocus. • Kada forma predaje fokus drugoj formi pali se događaj DeactivateDeactivate. • ClosingClosing događaj se trigeruje kada forma dobije zahtev da se zatvori. Ukoliko postoji potreba da forma i dalje bude otvorena ovaj događaj se može poništiti. • Closed događaj se trigeruje kada je forma zatvorena ali pre događaja DisposeDispose. • DisposeDispose metod se automatski poziva za glavnu formu aplikacije. • Metoda Hide() sakriva formu sa ekrana ali ona i dalje postoji u memoriji. 51. Prikazivanje, skrivanje i uništavanjePrikazivanje, skrivanje i uništavanje formeforme 52. Osnovne Windows kontroleOsnovne Windows kontrole 53. Klasa ButtonKlasa Button • Klasa Button predstavlja windows kontrolu Button. • Na dugme se može kliknuti mišem, pritiskom na taster ENTER, pritiskom na taster ESC ili pritiskom na SPACE taster(kada dugme ima fokus). • Ako se kao AcceptButton (CancelButton) forme postavi odgovarajuće dugme tada se pritiskom na taster ENTER (Esc) izvršava klik na to dugme. • Može se koristiti DialogResult property dugmeta da bi se specificirala povratna vrednost ShowDialog() metode. • Pozivom metode dugme.PerformClick() simulira se klik korisnika na dugme. 54. Klasa LabelKlasa Label • Koristi se za predstavljenje opisnog teksta korisniku. • Obično se koristi u kombinaciji sa kontrolama za unos i editovanje teksta. • Text propery definiše tekst koji će se pojaviti na labeli. • Korisnik ne može menjati tekst na labeli. • Labela ne može da dobije fokus. Label Button 55. Windows Hello worldWindows Hello world aplikacijaaplikacija 56. LinkLabel kontrolaLinkLabel kontrola • LinkLabel kontrola omogućava da se na windows formi kreira web link koji može da otvori web stranu kada se na njega klikne ili da izvrši neku drugu operaciju. • Svojstvo ActiveLinkColor definiše boju aktivnog linka. • Svojstvo LinkArea definiše oblast LinkLabel kontrole koja se ponaša kao link. • Svojstvo LinkVisited ukazuje dali je link već posećen ili nije. • Svojstvo VisitedLinkColor definiše boju posećenog linka. 57. Primer upotrebe LinkLabelPrimer upotrebe LinkLabel kontrolekontrole 58. TextBox kontrolaTextBox kontrola • Koristi se za prihvatanje ulaza od strane korisnika ili za prikaz vrednosti. • Text propertyText property se koristi za čitanje sadržaja tekst boksa ili prikaz sadržaja u tekst boksu. • Multiline propertyMultiline property – ako se postavi na true moguće je prikazivanje teksta u više linija. • MaxLengthMaxLength – definisanje maksimalnog broja karaktera za TextBox. • ScrollBarsScrollBars za postavljanje horizontalnog, vertikalnog ili oba skrola. • PasswordCharPasswordChar omogućava da se prikazuje određeni znak kada korisnik unosi tekst. • TextAlignTextAlign svojstvo omogućava podešavanje ravnjanja teksta u TextBox kontroli. • Najčešće korišćeni događaj ove kontrole je TextChangedTextChanged koji se generiše svaki put kada se promeni tekst u TextBox kontroli. • Događaj KeyDownKeyDown generiše se kada se pritisne neki taster na tastaturi pre nego što se otpusti. 59. Obrada događaja KeyDownObrada događaja KeyDown 60. Primer upotrebe TextBoxPrimer upotrebe TextBox kontrole - GUIkontrole - GUI 61. Primer upotrebe TextBoxPrimer upotrebe TextBox kontrole - kodkontrole - kod 62. RichTextBoxRichTextBox • Omogućava korisniku unos teksta ali mu daje naprednije mogućnosti za editovanje. • Metoda LoadFileLoadFile omogućava učitavanje tekstualnog fajla(čist tekst ili rtf format) u tekst boks. • RichTextBoxStreamType enumeracija specificira tip ulaznog ili izlaznog toka sa kojim radi RichRextBox. • Metoda SaveFileSaveFile omogućava čuvanje sadržaja tekstboksa u tekstualni fajl. • Metoda Clear()Clear() briše sadržaj tekst boksa. Primer upotrebe 63. CheckBox kontrolaCheckBox kontrola • Klasa CheckBox predstavlja Windows kontrolu CheckBox koja omogućava korisniku da nešto potvrdi(čekira) ili ne. • Može biti čekirano više od jednog ček dugmeta. • Pomoću property-ja Checked može se pročitati ili postaviti stanje CheckBox-a. • Događaj CheckedChanged se okida kada dugme prelazi iz stanja čekirano u stanje nečekirano ili obrnuto. • Može se takođe instancirati iz koda, pri čemu je potrebno dodati ga u Controls kolekciju forme i definisati njegove event handler-e. Primer upotrebe 64. Svojstvo CheckedSvojstvo Checked 65. Događaj CheckedChangedDogađaj CheckedChanged 66. RadioButton kontrolaRadioButton kontrola • Radio dugmad se obično nalaze u Grupi. • najpre se dodaje kontrola GroupBox na formi. • zatim se dodaju radio dugmad u grupu. • samo jedno radio dugme u grupi u jednom trenutku može biti selektovano. • Property Checked radio dugmeta vraća true ako je ono čekirano ili false ako nije. • Događaj CheckedChanged se okida kada dugme prelazi iz stanja čekirano u stanje nečekirano ili obrnuto. 67. Primer upotrebe RadioButtonPrimer upotrebe RadioButton kontrole-GUIkontrole-GUI 68. Primer upotrebe RadioButtonPrimer upotrebe RadioButton kontrole -kontrole - kodkod 69. Primena osnovnih Windows kontrolaPrimena osnovnih Windows kontrola Razmena podatakaRazmena podataka između Windows formiizmeđu Windows formi 70. Kod za prethodni primerKod za prethodni primer 71. Standardni windows dijaloziStandardni windows dijalozi • Nalaze se u Dialogs sekciji Toolboxa. • Instanciraju se prevlačenjem na Windows formu. – OpenFileDialog – SaveFileDialog – FontDialog – ColorDialog – PrintDialog – FolderBrowserDialog 72. Primer upotrebe standardnihPrimer upotrebe standardnih dijalogadijaloga 73. Funkcije za startovanje aplikacijeFunkcije za startovanje aplikacije 74. ColorDialogColorDialog 75. FontDialogFontDialog 76. FolderBrowserDialogFolderBrowserDialog 77. SaveFileDialogSaveFileDialog 78. OpenOpenFileDialogFileDialog 79. Vežbe kroz primere Vežbe kroz primere 80. Zadatak 1Zadatak 1 1. Napraviti Windows aplikaciju, koja će imati jednu label kontrolu i jedan Button. Prilikom pritiska na dugme, otvara se message box u kojem je ispisana poruka korisniku. Izgled prozora treba da bude kao na slici ispod: 81. Zadatak 2Zadatak 2 2. Napraviti windows aplikaciju, koja će imati samo jednu link labelu, u okviru koje će biti ispisan tekst 'Posetite TFC', pri čemu reč 'TFC' predstavlja istovremeno i link na web stranicu TFC-a. Dakle, kada korisnik klikne na taj link, otvoriće se stranica www.tfc.kg.ac.rs. Izgled forme treba da bude kao na slici ispod: 82. Zadatak 3Zadatak 3 3. Napraviti windows aplikaciju, koja će imati dve labele, dva text box-a i jedno dugme. Prilikom njenog pokretanja, u text box-ovima treba da budu ispisane poruke korisniku, kao na sledećoj slici ispod: 83. Zadatak 4Zadatak 4 4.Napraviti windows aplikaciju, koja ima jednu osnovnu formu sa dve labele, dva text box-a i jednim dugmetom. U text box-ove korisnik treba da unese dva broja tipa 'double', a klikom na dugme otvara se message box u kojem je ispisan zbir unetih brojeva. Izgled treba da bude kao na slici ispod: 84. Zadatak 5Zadatak 5 5. Napraviti windows aplikaciju, koja će imati dve labele i jednu Timer komponentu. Svakim pokretanjem aplikacije, potrebno je da se u drugoj labeli prikaže tačno vreme u tom trenutku. 85. Zadatak 6Zadatak 6 6. Napraviti windows aplikaciju, koja ima jedan combo box i jedan text box. U combo box uneti nekoliko stavki. Kada korisnik izabere neku stavku iz combo box-a, potrebno je da se automatski u text box-u ispiše poruka o tome koju je stavku korisnik izabrao. To ilustruje sledeća slika 86. Zadatak 7Zadatak 7 7. Napraviti windows aplikaciju, koja će imati jednu formu sa tri radio dugmeta, smeštenih u jedan group box, zatim jedno dugme i jedan text box (multiline). Pritiskom na dugme "Rezervisi", u text box-u se ispisuje odgovarajuća poruka korisniku. Samo jedno radio dugme u jednom trenutku može biti selektovano. 87. Zadatak 8Zadatak 8 8. Napraviti windows aplikaciju, koja će imati jednu formu sa 4 check box-a, jedno dugme i jedan text box (multiline). Klikom na dugme, u text boxu se ispisuje poruka odgovarajuće sadržine, kao na slici ispod Potvrđivanjem check box-a "Sakri porudzbinu", text box treba da postane nevidljiv za korisnika. To ilustruje sledeća slika: 88. Zadatak 9Zadatak 9 9. Napraviti windows aplikaciju, koja će imati tri dugmeta i jedan richText box, kao na sledećoj slici Klikom na dugme 'Sacuvaj', sadržaj richText box-a, treba da bude sačuvan u fajlu na putanji C:Tempproba.rtf. Dugme 'Citaj' služi za učitavanje sadržaja fajla sa iste putanje u richText box. Dugme 'Brisi' služi za brisanje sadržaja richText box-a.