You are on page 1of 8

Uvod u C#

Ovo je prva lekcija programiranja u jeziku C#. Prvi deo vas uvodi u osnovna znanja koja su neophodna da bi ste se kasnije lako snali. Ovde emo napraviti kratak pregled jezika C# i .NET okruenja, opis ovih tehnologija, prednosti njihove upotrebe, kao i meusobnu povezanost. Poeemo sa osnovnim pitanjima vezanim za .NET okruenje. Ovo je nova tehnologija koja sadri nove koncepte, sa kojima je isprva teko uhvatiti se u kotac, uglavnom zbog toga to predstavlja potpuno nov nain rada u razvoju aplikacija. Kratak pregled osnova od velike je vanosti za razumevanje programiranja u jeziku C#. Nakon kratkog pregleda prei emo na prost opis samog jezika C#, ukljuujui korene i slinost sa jezikom C++.

ta je .NET okruenje?
.NET okruenje je nova i revolucionarna platforma za razvoj aplikacija napravljena od strane Microsofta. Primetiete da nismo rekli razvoj aplikacija u operativnom sistemu Windows". lako prva verzija .NET okruenja radi na operativnom sistemu Windows, budui planovi podrazumevaju i rad na drugim sistemima, kao to su FreeBSD, Linux, Macintosh, pa ak i na ureajima klase linog digitalnog asistenta (PDA). Jedan od kljunih razloga za razvoj ove tehnologije je namera da ona postane sredstvo kojim se vri integracija razliitih operativnih sistema. Pored toga, ova definicija .NET okruenja ne ograniava mogunosti bilo kog tipa aplikacije. Ogranienja zapravo ne postoje - .NET okruenje daje vam mogunost izrade Windows aplikacija, Web aplikacija, Web servisa i skoro svega ostalog to bi ste mogli zamisliti. .NET okruenje dizajnirano je tako da se moe koristiti iz bilo kog jezika: C#, C++, Visual Basic, JScript, pa ak i starije jezike kao to je COBOL. Da bi sve to funkcionisalo, pojavile su se i posebne verzije ovih jezika za .NET: Managed C++, Visual Basic .NET, JScript .NET, kao i razni drugi. Ne samo da svi oni imaju pristup .NET okruenju, ve mogu i meusobno komunicirati. Sasvim je mogue kod programiranja u jeziku C# koristiti kod napisan u Visual Basic .NET-u, kao i obrnuto. Sve ovo omoguuje dosad nezamisliv nivo viestruke namene, to pored ostalog ini .NET okruenje toliko atraktivnim.

ta se nalazi unutar .NET okruenja?


.NET okruenje se najveim delom sastoji od ogromne biblioteke koda koju upotrebljavamo preko klijentskih jezika (kao to je C#) koristei tehnike objektno orijentisanog programiranja (OOP). Ova biblioteka podeljena je na razliite module koje koristimo u zavisnosti od zadatka. Na primer, jedan modul sadri delove potrebne za pravljenje Windows aplikacija, drugi je vezan za mree, a neki za razvoj Weba. Neki moduli su podeljeni u razliite podmodule, kao to su moduli za pravljenje Web servisa unutar modula za razvoj Weba. Namera je da razliiti operativni sistemi podravaju neke ili sve module zavisno od njihovih karakteristika. Na primer PDA e imati podrku za sve osnovne funkcionalnosti .NET modula, to se svakako ne odnosi i na one namenske ili rede koriene. Jedan deo biblioteke .NET okruenja definie samo osnovne tipove. Tip je u stvari nain na koji se predstavlja podatak (kao to je recimo oznaena 32-bitna celobrojna veliina), a definicijom fundamentalnih tipova podataka olakava se interoperatibilnost izmedu jezika koji koriste .NET * okruenje. To se naziva zajedniki sistem tipova (engl. Common Type System - CTS). Okruenje osim biblioteke poseduje i .NET zajedniko izvrno jeziko okruenje (engl. Common Language Runtime - CLR), koje je odgovorno za izvravanje svih aplikacija razvijenih uz pomo :NET biblioteke.

Kako napisati aplikaciju koristei .NET okruenje?


Pisanje aplikacija unutar .NET okruenja u stvari znai pisanje koda (koristi se bilo koji jezik koji podrava ovo okruenje) uz pomo .-NET biblioteke koda. U ovoj semestru koristiemo VS za razvoj, koji je mono i integrisano razvojno okruenje koje podrava jezik C# . Prednost ovog okruenja je lakoa kojom se mogunosti .NET-a mogu integrisati u na kod. Kod koji emo pisati bie u potpunosti C#, ali demo koristiti .NET okruenje, a takoe i dodatne alate VS-a kada zatreba. Da bi se C# kod izvrio neophodno ga je prevesti u jezik koji operativni sistem na kome je aplikacija razume, poznat kao prirodni kod. Ovo prevoenje se jo naziva i kompajliranje koda, funkcija koju obavlja kompajler. Unutar .NET okruenja ta operacija ima dve faze.

MSIL i JIT
Kada kompajliramo kod koristei biblioteku .NET okruenja, ne pravimo odmah prirodni kod specifian za operativni sistem. Umesto toga, kompajliramo u Microsoftov posredni jezik (engl. Microsoft Intermediate Language - MSIL). Ovaj kod nije odreen ni jednim operativnim sistemom i nije namenjen samo za jezik C#. Ostali .NET jezici - na primer, Visual Basic .NET - takoe se kompajliraju u njega u svojoj prvoj fazi. VS e izvesti ovaj korak ukoliko ga koristimo pri razvoju C# aplikacija. Da bi se program izvrio, oigledno je potrebno jo rada. Za taj posao zaduen je kompajler u pravo vreme (engl. Just-In-Time - JIT), koji prevodi MSIL u prirodni kod specificiran od strane operativnog sistema i arhitekture same maine na kojoj se program izvodi. Tek tada operativni sistem moe izvriti program. Pojam u pravo vreme" oznaava da se MSIL kod kompajlira samo kada je to potrebno. U prolosti je bilo neophodno kompajlirati kod u vise razliitih aplikacija zavisno od samog operativnog sistema i arhitekture samog procesora. esto je to bio oblik optimizacije (da
2

bi se recimo kod naterao da radi bre na AMD setu ipova), ali s vremena na vreme moglo je biti kritino (da aplikacije, na primer rade i pod Win9x i pod WinNT/2000 okruenjima). Sve je to sada nepotrebno, jer JIT kompajleri (kako im samo ime kae) koriste MSIL kod, koji je nezavisan od maine, operativnog sistema ili procesora. Postoji nekoliko JIT kompajlera - svaki za razliitu arhitektura, a koristie se odgovarajui da bi se napravio traeni prirodni kod. Lepota je u tome to je mnogo manje rada potrebno sa nae strane. U stvari, moemo zaboraviti na detalje koji se odnose na sistemsku zavisnost i koncentrisati se na mnogo zanimljiviju funkcionalnost naeg koda.

Sklopovi
Kada kompajliramo aplikaciju, MSIL kod se smeta u posebne sklopove (engl. assembly). Takvi sklopovi sadre i izvrne programske datoteke koje mogu biti startovane direktno iz Windowsa bez potrebe za nekim drugim programima (takve datoteke imaju .exe nastavak) i biblioteke koje koriste i druge aplikacije (koje imaju . dll nastavak). Sklopovi pored MSIL sadre i takozvane meta informacije (odnosno podatke o podacima sadranim u sklopu, nazvane jo i metapodaci), kao i opcione resurse (dodatne podatke koje koristi MSIL, kao to su zvukovi i slike). Metapodaci dozvoljavaju sklopovima da budu potpuno samoopisujui. Ne trebaju nam nikakve dodatne informacije da bi smo koristili sklopove. Podrazumeva se, naravno da izbegnemo situacije kao to su nedostavljanje traenih informacija sistemskom registru i si., to je inae esto bio problem pri korienju drugih platformi. To u stvari znai da je distribucija aplikacija esto jednostavna koliko i kopiranje podataka u direktorijum na nekom udaljenom raunaru. Kako nam nisu potrebne nikakve dodatne informacije o ciljnim sistemima, moemo odmah pokrenuti izvrnu datoteku iz ovog direktorijuma i (pod uslovom da je .NET CLR instaliran) poleemo. Naravno da neemo uvek eleti da ukljuimo sve to je potrebno za izvrenje jedne aplikacije na jednom mestu. Moda poelimo da napiemo kod koji e moi da koriste i druge aplikacije. U tom sluaju korisno je takav vienamenski kod smestiti na mesto koje mogu koristiti sve aplikacije U .NET okruenju to mesto se naziva globalni ke sklopova (engl. Global Assembly Cache - GAC). Smetanje koda u ovaj ke je jednostavno - samo postavimo programski skup koji sadri ovaj kod u direktorijum koji sadri ke.

Upravljivi kod
Uloga CLR-a se ne zaustavlja onog trenutka kada smo kompajlirali kod u MSIL, niti kada JIT kompajler sve to prevede u prirodni kod. Kod napisan u .NET okruenju je upravljiv tokom svog izvrenja (ova faza se obino naziva izvrna). To znai da CLR vodi rauna o naoj aplikaciji kroz upravljanje memorijom, obezbeivanje sigurnosti, dozvoljava meujeziko otklanjanje greaka i tako dalje. Suprotno ovome, aplikacije koje ne rade pod kontrolom CLR-a nazivaju se neupravljive, odreeni jezici kao to je C++ mogu se koristiti za pisanje takvih aplikacija ( na primer, da bi se pristupilo funkcijama niskog stepena operativnog sistema). Sve u svemu, u jeziku C# moemo napisati samo onaj kod koji radi pod upravljivim okruenjem. Mi demo iskoristiti razne mogunosti upravljivosti CLR-a i dozvoliti .NET-u da se sam pozabavi interakcijom sa operativnim sistemom.

Sakupljanje otpada
Jedna od najvanijih mogunosti upravljivog koda jeste koncept sakupljanja otpada. Ovo je metod .NET-a koji se stara o tome da memorija koju je aplikacija koristila tokom svog izvrenja bude obavezno ispranjena kada aplikacija nije vise u upotrebi. Pre pojave .NET-a to je najee bila briga samih programera, te je usled nekoliko malih greaka memorija misteriozno gubila itave blokove jer bila pogreno pozivana. To je najee bilo praeno usporavanjem vaeg raunara i obaveznim padom sistema. Sakupljanje otpada se odvija tako to uestalo ispituje memoriju vaeg raunara i odbacuje sve to vam nije vise potrebno. Ono nema neki vremenski okvir izvravanja, moe se dogoditi hiljadu puta u sekundi, jednom u nekoliko sekundi, ili kad god, ali moete biti sigurni da e se dogoditi. Kako je sakupljanje otpada nepredvidivo, morate ga imati na umu dok radite aplikacije. Kod koji za svoje izvrenje zahteva puno memorije morao bi iza sebe da poisti pre nego to dopusti sakupljanju otpada da to uradi za njega, ali to nije tako teko kako zvui.

Uklapanje u celinu
Pre nego to nastavimo, sumirajmo sve korake koji su nam potrebni da bi smo napravili .NET aplikaciju. 1. Kod za aplikaciju pie se korienjem .NET kompatibilnog jezika kao to je C#:

2. Ovaj kod se kompajlira u MSIL, koji je smeten u sklop:

3. Kod koji se izvrava (bez obzira da li je sam po sebi izvrni ili ga koristi neki drugi kod) mora se prethodno kompajlirati kroz JIT kompajler u prirodni kod:

4. Prirodni kod se izvrava u kontekstu upravljanog CLR, zajedno sa bilo kojom drugom aplikacijom ili procesom:

Povezivanje
Postoji jedan dodatak gore pomenutom procesu. C# kod koji se kompajlira u MSIL u koraku 2 ne mora da bude smeten u jednu datoteku. Mogue je podeliti kod aplikacije u razliite datoteke koji e se tokom kompajliranja objediniti u sklop. Ovaj proces je poznat i kao povezivanje i veoma je koristan. Ta podela se vri jer je mnogo lake raditi sa vise manjih datoteka nego sa jednom ogromnom. Moete izdeliti kod na logike celine i smestiti ih u nezavisne datoteke na kojima se moe nezavisno raditi i praktino zaboraviti na njih kada zavrite. Ovo nam olakava pronalaenje odreenih delova koda kada nam zatrebaju. Takoe omoguuje programerskim timovima da podele teret na manje delove kojima je lake rukovati, kao i to da ukoliko doe do provere nekog od tih delova ne postoji rizik da se ugroze celina programa ili njegovi delovi na kojima se radi. Takoe celo MSJIT kompajliranje moe se predstaviti i u celini to vam moe pomoi da sagledate na drugi nain:

ta je C# ?
Kako je gore pomenuto, C# je jedan od jezika koji slui za izradu aplikacija koje mogu raditi pod .NET CLR-om. On predstavlja evoluciju jezika C i C++ koju je kreirao Microsoft da bi se radilo sa .NET okruenjem. U njegovom razvoju koriene su mnoge prednosti drugih jezika, naravno uz otklanjanje njihovih mana. Razvoj aplikacija u jeziku C# je jednostavniji nego u C++, jer je sintaksa prostija. Pa ipak, C# je moan jezik i postoji veoma mali broj stvari koje bi smo uradili u C++ jeziku pre nego u C#-u. Paralelne mogunosti jezika C# onima naprednijim u C++-U, kao to je direktno pristupanje i manipulisanje sistemskom memorijom, moe biti izvedeno jedino kroz kod koji je obeleen kao nesiguran. Ove napredne tehnike programiranja su potencijalna opasnost (odakle im i ime) zato to je mogue pristupiti memorijskim blokovima koji su kritini za sistem, a sve to potencijalno vodi ka katastrofi. Iz ovog razloga, kao i drugih, ova tema nije obraena ovim predavanjima. S vremena na vreme kod u jeziku C# je malo razumljiviji od C++ koda. Jer je C# jezik sigurniji po pitanju dodele tipa promenljivim (za razliku od C++-a). To znai da ukoliko nekoj

promenljivoj ili nekom podatku dodelimo odreeni tip, on ne moe biti zamenjen nekim drugim nevezanim tipom. Postoje stroga pravila kojih se moramo pridravati prilikom konverzija tipova, to u sutini znai da emo esto morati da napiemo vise koda u jeziku C# nego u C++-U da bismo izvrili iste zadatke. Ali iz toga moemo izvui i neku korist. Kod je robusniji i jednostavnije je otkloniti greke, odnosno .NET u svakom trenutku moe odrediti kojem tipu pripada traeni podatak. Usled toga jezik C# nam ne omoguuje naredbe kao to su Uzmi deo memorije poevi od 4. bajta unutar podatka i duine 10 bajta i interpretiraj ga kao X", to ne mora da bude uvek loe. C# je samo jedan od jezika koji omoguuju rad sa .NET razvojnim okruenjem, ali moda je i najbolji. Njegova prednost je u tome to je jedini napravljen od poetka ba za .NET okruenje, pa samim rim moe biti i vodei jezik korien za verzije .NET-a namenjene dragim operativnim sistemima. VB.NET je, recimo, napravljen tako da bude to sliniji svojim prethodnicima i stoga ne moe da iskoristi .NET biblioteku koda u potpunosti. Suprotno njemu, jezik C# je napravljen tako da moe iskoristiti svaki deo biblioteke koda .NET okruenja koju ova moe da ponudi.

Kakve aplikacije moemo pisati u C#-u?


Kako je gore navedeno, jezik C# nema ogranienja u pogledu toga kakve sve aplikacije moemo napraviti. C# koristi okruenje i samim tim nema ogranienja u vezi sa moguim aplikacijama. Pa ipak, pogledajmo koji su tipovi najee pravljenih aplikacija: Windows aplikacije - To su recimo, aplikacije tipa Microsoft Office koje imaju izgled Windowsa i odlino se slau sa njim. Ovo je uproeno korienjem modula Windows formulara unutar .NET okruenja, koji u stvari ini biblioteka kontrola (kao to su dugmad, palete alatki, meniji i tako dalje) koje nam koriste pri izradi Windows korisnikog interfejsa (UI). Web aplikacije - Web strane koje moemo videti kroz bilo koji ita. .NET okruenje prua veoma moan sistem generisanja Web sadraja i to dinamiki, dozvoljavajui personalizaciju, sigurnost i jo mnogo toga. Ovaj sistem se naziva Active Server Pages .NET (ASP.NET), a jezik C# moemo koristiti za izradu ASP.NET aplikacija uz pomo Web formulara. Web servisi - Predstavljaju nov i uzbudljiv nain izrade raznovrsnih distribuiranih aplikacija. Koristei Web servise preko Interneta moemo razmenjivati bilo koju vrstu podataka, koristei prostu sintaksu, ne vodei rauna o tome u kom jeziku je napisana aplikacija niti na kom sistemu je postavljena. Bilo kom od ovih tipova moe zatrebati pristup bazama podataka, to se postie korienjem Active Data Objects .NET (ADO.NET) odeljka .NET okruenja. Mnogi od ovih resursa mogu biti iskorieni, kao to su alati za izradu komponenata na mrei, iscrtavanje, izvoenje komplikovanih matematikih zadataka i tako dalje.

Visual Studio.NET
U ovom predavanju za programiranje u jeziku C# koristimo Visual Studio .NET (VS), poev od aplikacija koje se pokreu iz komandne linije, pa sve do kompleksnih tipova projekata. VS nije neophodan za razvoj C# aplikacija, ali nam znatno olakava stvari. Moemo (ako to poelimo) napisati na kod u najobinijem programu za ureivanje teksta, kao to je Notepad, i kompajlirati kod u sklopove koristei kompajler iz komandne linije koji je u sastavu .NET okruenja. Meutim, zato bismo to radili, kada moemo iskoristiti snagu VS-a da nam pomogne? Sledi kratka lista razloga zbog kojih je VS pravi izbor za razvoj u .NET okruenju: VS automatizuje korake neophodne pri kompajliranju prirodnog koda, ali u isto vreme dozvoljava i kompletnu kontrolu nad opcijama ukoliko elimo da ih promenimo. VS program za ureivanje teksta je povezan sa jezicima koje podrava VS (ukljuujui jezik C#) i to tako da omoguuje pametnu detekciju greaka i sugerie odgovarajui kod na pravom mestu dok ga unosimo. VS sadri i dizajnerske alate za aplikacije koje ukljuuju Windows formulare kao i Web formulare, koji vam omoguuju jednostavna tehnika povlaenja i putanja (engl. drag-and-drop) dizajn elemenata korisnikog interfejsa. Mnogi tipovi projekata koji su mogui u jeziku C# mogu se napraviti sa, 'optenamenskim' kodom koji se ve nalazi na pravom mestu. Umesto da poinjemo od nule, esto emo nai razliite datoteke koje sadre kod koji je za nas zapoet, smanjujui nam vreme provedeno u spremanju projekta. VS sadri nekoliko arobnjaka koji vam automatizuju zadatke opte namene i koji mogu dodati odgovarajui kod postojeim datotekama, a da mi o tome ne vodimo brigu (ili u nekim sluajevima ak i da ne pamtimo tanu sintaksu). VS sadri mone alatke za prikazivanje i navigaciju elemenata naeg projekta, bez obzira da li se radi o prirodnom kodu jezika C# ili nekoj slici, ili moda zvunoj datoteci. Pored toga to olakava pisanje aplikacija, VS omoguuje i jednostavniju distribuciju i prilagoavanje projekata klijentima, kako bi ih oni lake koristili ili instalirali. VS omoguuje i napredne tehnike otklanjanja greaka pri razvoju projekata, i to tako da moemo u isto vreme ui u kod jedne instrukcije dok pazimo u kakvom je stanju aplikacija. Ima jo mnogo toga, ali nadam se da ste shvatili o emu se radi!

Reenja u VS-u
Kada koristimo VS za razvoj aplikacija, to radimo kreiranjem reenja. Reenje, po VS terminologiji, predstavlja neto vise od aplikacije. Reenja sadre projekte, koji mogu biti zasnovani na Windows formularima, Web formularima i tako dalje. Reenja mogu sadrati i vise projekata, tako da moemo grupisati srodan kod na jedno mesto, iako e se oni kompajlirati u razliite sklopove na razliitim mestima na disku. Ovo moe biti od velike koristi, kada se radi na deljenom kodu (koji moe biti smeten u globalni ke sklopova) u isto vreme dok aplikacije koriste taj kod. Otklanjanje greaka u kodu je mnogo lake ako se koristi jedinstveno razvojno okruenje, jer moemo pratiti instrukcije u viestrukim modulima koda.

Saetak
U ovom predavanju upoznali smo se sa osnovnim pojmovima .NET razvojnog okruenja i sa mogunostima pravljenja monih i raznovrsnih aplikacija. Saznali smo ta je neophodno da bi se kod napisan, recimo, u jeziku C# pretvorio u funkcionalnu aplikaciju, i koje su prednosti upravljanog koda koji radi pod optim izvrnim jezikom .NET-a (Common Language Runtime). Videli smo ta je u stvari jezik C#, kako je povezan sa .NET okruenjem i upoznali se sa alatom koji emo koristiti za programiranje u C# - Visual Studio .NET-u. U sledeem predavanju nauiemo kako se C# kod pie pomou VS-a, pa emo samim tim moi da se skoncentriemo na jezik C# sam po sebi, umesto da brinemo o tome kako VS radi.

You might also like