Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 21

Programiranje Windows aplikacija u C#

Sadržaj

1. Uvod...............................................................................................................................................2
2. Programski jezik C#.........................................................................................................................3
3. Osnove programiranja u C#............................................................................................................5
3.1. Tipovi podataka, deklaracija i definicija promenljive.............................................................5
3.2. Klasa, objekat.........................................................................................................................8
4. .NET Framework...........................................................................................................................12
4.1. Objektno - orijentisano programiranje (Klase, objekti i metode).........................................12
4.2. Ključne reči u C#...................................................................................................................12
4.3. Kreiranje konzolnih aplikacija u Microsoft Visual C# 2010 Express.......................................13
5. Programiranje Windows aplikacija u C#.......................................................................................15
5.1. Visual Studio.........................................................................................................................16
6. Zaključak.......................................................................................................................................21
7. Literatura......................................................................................................................................21

1|Strana
Programiranje Windows aplikacija u C#

1. Uvod
Programski jezik C spada u proceduralne programske jezike koji je razvijen u ranim 70-
im godinama 20. stoljeća. Autor ovog programskog jezika je Dennis Ritchie, no značajan
doprinos nastanku C-a dali su Ken Thompson kao autor programskog jezika B i Martin
Richards, autor programskog jezika BCPL. Dennis Ritchie je stvorio ovaj programski jezik za
rješavanje praktičnih problema kodiranja sistemskih programa i jezgre operacijskog
sustava UNIX, koji je praktički u cijelosti napisan u C-u.
Programski jezik C dosta se mijenjao tokom godina te je u više navrata neformalno i
formalno standardiziran. Prva važnija inačica poznata je pod nazivom "K&R C", što je engl.
kratica prezimena dvaju autora najpoznatijeg C priručnika "The C Programming Language", a
to su Brian Kernighan i Dennis Ritchie. Prvo izdanje te vrlo sažeto i precizno
pisane knjige koje datira iz 1978. godine ujedno je de facto standardiziralo jezik u 70-ima.
Drugo izdanje iz 1988. godine opisuje "ANSI C", standard kojeg je 1983. godine
definirao američki nacionalni institut za standardizaciju, a koji je i danas najbolje podržan.
Donedavni je standard bio ISO/IEC standard skraćeno poznat kao "C99", no krajem 2011.
usvojen je ISO/IEC 9899:2011, poznat kao "C11", za koji su kompajleri još u razvoju.
Kao jedan od najvažnijih jezika u povijesti komercijalne računalne industrije, C je do danas
ostao jedini programski jezik prilagođen za sve računalne platforme, od malih sustava pa do
mrežnih superračunala. Programi napisani u njemu vrlo su bliski načinu rada hardvera te u
načelu zahtijevaju od programera dobro razumijevanje rada procesora, memorije, ulazno-
izlaznih sklopova itd. No, rad s registrima procesora i adresiranje memorije apstrahirani su
pomoću koncepta varijabli i pokazivača što uz eksplicitne kontrolne strukture i funkcije
znatno olakšava programiranje u odnosu na izravno programiranje u strojnim jezicima.
Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs
proširuje C dodavajući sposobnosti objektno orijentiranog programiranja, a naziv ovog novog
programskog jezika je C++. Nažalost, ta je 100%-na kompatibilnost ujedno i razlog što su
problemi koje programiranje u C-u nosi sa sobom naslijeđeni u C++-u. Efikasno i sigurno
programiranje u C-u vrlo je zahtjevna vještina koja traži višegodišnje iskustvo pa je
stoga C jezik koji se ne preporučuje početnicima, posebice ako im programiranje nije
primarni posao.
Mnogobrojni problemi vezani prije svega za upravljanje memorijom koje programer mora
sam eksplicitno kodirati razlog su da je danas većina novih korisničkih aplikacija napisana u
nekom modernijem jeziku koji ima ugrađeno automatsko upravljanje memorijom (engl.
garbage collection), ne dopušta izravan rad s memorijom pomoću pokazivača te ima podršku
za upravljanje kodom odnosno njegovom okolinom za vrijeme njegova izvođenja. Danas se
relativno rijetko ukazuje potreba za pisanjem novih korisničkih aplikacija izravno u C-u, pa
čak i u vrlo malim sustavima kao što su primjerice mobilni telefoni. Glavno područje njegove
uporabe su sistemski programi na strani poslužitelja (engl. servers), programi prevoditelji
(engl. compilers) i jezgre operativnih sustava (engl. operating system kernels), gdje je

2|Strana
Programiranje Windows aplikacija u C#

potreba za najvećom mogućom brzinom izvođenja, efikasnom kontrolom resursa i izravnom


kontrolom hardvera od primarne važnosti.
C je jezik opće namjene, što znači da se u njemu može napraviti apsolutno sve: od
rješavanja zadataka, do pisanja drivera, operacijskih susatava, tekst procesora ili igara. C, kao
jezik, ni u čemu ne ograničava. Omogućuje i uključivanje naredbi pisanih asemblerski, zbog
čega je zajedno s mogućnošću direktnog pristupa pojedinim bitovima, bajtovima ili cijelim
blokovima memorije, pogodan za pisanje sistemskog softvera. Zbog tih karakteristika C je
među popularnijimprogramskim jezicima i rabe ga mnogi programeri. Rezultat toga je
postojanje velikog broja prevoditelja za C i alata te stalno dostupne pomoći na internetu.
Programi pisani u C-u su prenosivi (mogu se prevoditi i izvršavati na različitim porodicama
računala uz minimalne ili nikakve ispravke) i obično su vrlo brzi. Postoje mnogi prevoditelji za
jezik C, a jedan od najšire korištenih je GNU C Compiler.

2. Programski jezik C#
C# je zreo programski jezik koji omogućava izradu aplikacija za Web sa svom potrebnom
funkcionalnošću. Osim što pruža programski okvir za razvoj softvera, omogućava i podršku za
pristupanje brojnim bazama podataka. On predstavlja jedan od jezika koji služe za izradu
aplikacija koje mogu raditi pod .NET okruženjem. Kako predstavlja evoluciju jezika C i C++,
kao takav je kreiran uz korišćenje svih prednosti ostalih jezika i otklanjanje njihovih mana.
Sam razvoj aplikacije je jednostavniji u C# jeziku, a sam jezik je izuzetno moćan. S vremena
na vreme njegov kod je mnogo razumljiviji u odnosu na druge jezike, ali je nešto robusniji i
jednostavnije je otkloniti greške u njemu. Sam jezik nema ograničenja u pogledu toga kakve
se aplikacije mogu napraviti u njemu, on koristi okruženje i samim tim nema ograničenja u
vezi sa mogućim aplikacijama. Za programiranje u C# korišćen je Visual Studio .NET, koji je u
mnogome olakšao razvoj same aplikacije. Visual Studio .NET pored toga što sadrži
dizajnerske alatke za aplikacije, alatke za prikazivanje i navigaciju elemenata projekta,
omogućava jednostavniju distribuciju i prilagođavanje projekta klijentimai obezbeđuje
napredne tehnike otklanjanja grešaka pri razvoju projekta.

Programski jezik C# (C sharp) je proizvod kompanije Microsoft i nastao je kao odgovor na


nedostatke postojećih jezika kao što su C, C++ i Visual Basic, u isto vrijeme kombinujući
njihove dobre strane.
C# je potpuno objektno-orijentisani programski jezik, što znači da svi elementi unutar njega
predstavljaju objekt. Objekt predstavlja strukturu koja sadrži podatkovne elemente, kao i
metode i njihove međusobne interakcije.
Kao primjer jednostavnog C# programa, navest ćemo sljedeći kod:
Using System;
Class Primjer{  
     statis void Main()  

3|Strana
Programiranje Windows aplikacija u C#

     {        
          Console.WriteLine("Pozdrav!");  
     }
}
Nakon izvođenja ovog programskog koda, na ekranu se ispisuje poruka "Pozdrav!".
Using System; je kompajlerska naredba koja mu govori da aplikacija koristi skup elemenata
pod nazivom System. Na ovaj način sve funkcije i klase unutar prostora (namespace)
System postaju izravno dostupne unutar aplikacije. Na primjer, korištena klasi Console u
našem primjeru pristupa se direktno iako se ona nalazi unutar klase System.

Slika 1. Način na koji je C# dobio ime


U suprotnom bismo joj morali pristupati na sljedeći način: System.Console;
 Nadalje definiramo vlastitu klasu naziva Primjer. Za ovo koristimo ključnu riječ Class, te
vitičaste zagrade koje idu nakon imena klase, i definišu opseg klase. Drugim riječima, svi
objekti koje definišemo unutar ovih zagrada pripadati će toj klasi.
 Svaki program mora imati tačku u kojoj kreće sa izvršavanjem, i to je u C# aplikaciji
funkcijaMain(). U našem primjeru ta funkcija definisana je pomoću dvije ključne
riječi: static i void.
 Za kraj ostaje objasniti naredbu za ispis teksta korištenu u primjeru.

4|Strana
Programiranje Windows aplikacija u C#

Ta naredba imenom WriteLine sadržana je u klasi Console. Svim sastavnim elementima neke


klase/objekta pristupamo na način da napišemo ime klase/objekta te nakon njega stavimo
točku i napišemo ime elementa (varijable, funkcije...) kojem pristupamo.
Funkcija WriteLine prima jedan argument, i to upravo tekst kojeg želimo ispisati.
Konačno, naredba izgleda: Console.WriteLine("Pozdrav!");
 Još je bitno napomenuti da u C# jeziku svaka linija završava tačka-zarezom (eng. semicolon)

3. Osnove programiranja u C#
Programski jezik C# je nastao 2002. godine u „radionici“ čuvene kompanije Microsoft kao
proizvod želje da se napravi objektno orijentisani programski jezik (poput Jave) koji
omogućava relativno lako kreiranje aplikacija u grafičkom korisničkom okruženju (poput
programskog jezika Borland Delphi). Ovaj programski jezik je jezik opšte primene i namenjen
je izradi aplikacija za Microsoft .NET platformu.

Sintaksne konstrukcije programskog jezika C# su izgrađene na uobičajenoj azbuci (velika i


mala slova abecede, cifre, specijalni znaci). Kao i u svakom drugom programskom jeziku
postoje takozvene službene ili rezervisane reči koje imaju svoje unapred definisano značenje
i ne mogu se koristiti za imenovanje bilo kakvih podataka od strane programera. Ovde
navodimo skup rezervisanih reči poređanih u leksikografskom poretku:

abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue,

decimal, default , delegate, do, double, else, enum, event, explicit, extern, false, finally,

fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, is, lock, long,

namespace, new, null, object, operator, out , override, params, private, protected, public ,

readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static, string, struct, switch,

this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, virtual, volatile,

void, while

U ovom dijelu seminarsko rada govori se o tipovima podataka kojima C# manipuliše kao i sa
građenjem osnovnih sintaksnih i semantičkih konstrukcija ovog programskog jezika.

3.1. Tipovi podataka, deklaracija i definicija promenljive


Svakom aplikacijom obrađujemo podatke. Svi podaci čuvaju se u memoriji računara u obliku
nizova bistabilnih elemenata (0 i 1), bez obzira da li podatak predstavlja broj, reč, sliku ili
zvuk. Različite vrste podataka registruju se na različite načine. Takođe, nad različitim
vrstama podataka su dozvoljene različite operacije. U zavisnosti od vrste podatka, mora se
odvojiti određeni prostor za njegovo registrovanje i obezbediti izvršavanje određenih akcija

5|Strana
Programiranje Windows aplikacija u C#

nad tim podatkom. Računaru moramo dati informaciju koja vrsta podatka je registrovana da
bi ga na pravi način tumačio i obrađivao.

Potrebne informacije saopštavamo računaru tipom podataka. Tipom podataka definisan je:
o način registrovanja podataka u memoriji;

o skup mogućih vrednosti tih podataka;

o skup mogućih akcija nad podacima.

Promenljiva je ime (identifikator) memorijske lokacije u kojoj aplikacija čuva vrednost.


Identifikator (ime) koji programer definiše gradi se na osnovu sledećeg pravila: Identifikator
je niz slova (velikih i malih) engleske abecede, znaka za podvlačenje (_) i cifara. Ime mora da
počne slovom ili znakom za podvlačenje.

Prema tome, primeri identifikatora su

nazivPredmeta, ucenik1, Rezultat, radni_dan, _x, ...

dok

nazivPredmeta, godisnje-doba, 1dan, ...

nisu identifikatori.

Važno je napomenuti da C# (poput programskog jezika C) razlikuje velika i mala slova tako
da identifikatori GodisnjeDoba i godisnjeDoba nisu isti.

U programskom jeziku C# promenljive su podeljene u dve kategorije: vrednosne i referentne


promenljive. Memorijska lokacija, imenovana promenljivom vrednosnog tipa, direktno sadrži
vrednost, dok lokacija imenovana promenljivom referentnog tipa sadrži adresu lokacije u
dinamičkoj memoriji u kojoj se čuva vrednost. Za podatke osnovnih tipova (tj. sistemskih
struktura) u programskom jeziku C# (int, double, char, bool…) ime promenljive predstavlja
vrednost a za objekte sistemskih i od strane programera definisanih klasa, ime promenljive
predstavlja adresu lokacije u dinamičkoj memoriji u kojoj su ti objekti kreirani i gde
egzistiraju, pa se njima pristupa indirektno. Referentna promenljiva čuva memorijsku adresu
podatka, tj. referencira na pravu vrednost.

Imenovanje podataka u aplikaciji i definisanje tipa podataka kojem pripadaju postižemo


deklaracijom promenljivih na sledeći način:

<ime tipa><ime promenljive1>, …, <ime promenljiveN> ;

Deklaracijom promenljive vrednosnog tipa u memoriji se odvaja prostor neophodan za


registrovanje podatka zadatog tipa, a pri deklaraciji promenljive referentnog tipa odvaja se
prostor za registrovanje adrese memorijske lokacije u kojoj će se nalaziti objekat.

6|Strana
Programiranje Windows aplikacija u C#

int x,y;

char p,q;

Ucenik ucenik1,ucenik2;

Samom deklaracijom ne dodeljuje se vrednost promenljivoj vrednosnog tipa. Ako želimo da


dodelimo vrednost promenljivoj (da definišemo promenljivu) koristimo operator = (operator
dodele) na sledeći

način: <promenljiva>=<izraz>;

Tip vrednosti izraza mora se poklapati sa tipom promenljive (ili se implicitnom konverzijom
može konvertovati u tip promenljive).

int x,y;

x=5;

y=!145+x;

char p;

p=’A’;

Deklaracijom promenljive referentnog tipa ne zauzima se memorija za vrednost već samo za


njenu referencu. Da bismo napravili prostor za vrednost, upotrebljavamo izraz oblika

new <ime referentnog tipa>(<lista parametara>)

Korišćenjem operatora new odvaja se u dinamičkoj memoriji prostor za registrovanje


vrednosti tipa <ime referentnog tipa >. Ovaj operator vraća adresu dodeljenog prostora koju
onda možemo dodeliti referentnoj promenljivoj.

Primer:

mojRefTip x;

x= new mojRefTip();

Ucenik a;

a=new Ucenik(“Pera”, “Peric”);

Promenljivoj referentnog tipa x, odnosno a, dodeljujemo adrese memorijskog prostora


odvojenog korišćenjem operatora new. Pozivima metoda mojRefTip() i Ucenik(“Pera”,
“Peric”), u prostoru odvojenom korišćenjem operatora new, postavljaju se odgovarajuće
vrednosti. Možemo zaključiti da se uvođenje promenljive odvija u dva koraka: o deklaracija
promenljive promenljiva vrednosnog tipa se pri deklaraciji ne inicijalizuje ukoliko to nije

7|Strana
Programiranje Windows aplikacija u C#

eksplicitno navedeno: promenljiva referentnog tipa se pri deklaraciji inicijalizuje nulom; o


inicijalizacija promenljive za promenljive vrednosnog tipa eksplicitno navodimo vrednost ; za
promenljive referentnog tipa operator new odvaja u dinamičkoj memoriji prostor za
vrednost odgovarajućeg tipa.

U programskom jeziku C# je data mogućnost objedinjavanja ova dva koraka, što vrlo često
koristimo.

int x=32, y;

mojTip z= new mojTip();

Ucenik a=new Ucenik(“Pera”, “Peric”);

Osnovni podaci referentnog tipa u programskom jeziku C# su klase a vrednosnog strukture i


enumeracijski tip. Promenljiva vrednosnog tipa direktno sadrži podatak, dok promenljiva
referentnog tipa sadrži referencu na vrednost koja je smeštena u posebnom memorijskom
prostoru. Svaka promenljiva vrednosnog tipa sadrži sopstvenu kopiju podatka, pa operacije
nad jednom promenljivom nemaju efekta na drugu promenljivu.

Dve referentne promenljive mogu sadržati adresu iste vrednosti, pa operacije nad jednom
referentnom promenljivom mogu uticati na vrednost na koji referiše druga promenljiva.

3.2. Klasa, objekat


Do klasa dolazimo polazeći od pojedinačnih objekata. Posmatranjem objekata uočavamo
njihova zajednička svojstva koja zovemo atributima.

Takođe, objektima možemo pridružiti iste „akcije“ koje u okviru klase nazivamo metodima
klase. Njima opisujemo funkcionalnosti objekata klase. Klasu definišemo navođenjem
rezervisane reči class iza koje sledi identifikator klase (ime klase). Posle imena, ako
formiramo klasu koja nasleđuje neku, prethodno definisanu klasu, navodimo ’:’ a zatim sledi
ime klase iz koje je izvedena. Zatim u vitičastim zagradama {} definišemo članove klase
(atributi i metodi).

class <imeKlase> :<imePrethodnoDefinisaneKlase>

opis / definicija članova klase

Na primer, klasu učenika iz uvodnog primera možemo intuitivno definisati na sledeći način:

class Ucenik

8|Strana
Programiranje Windows aplikacija u C#

String ime, prezime;

DateTime datumRodjenja;

int razred;

int SkolskaGodina;

char odeljenje; int [] ocene;

double prosek()

void uci(Lekcija X)

Atributima opisujemo određenu osobinu objekta (ime, prezime, datumRodjenja, razred,


odeljenje). Najčešće, različiti objekti iste klase imaju različite vrednosti atributa. Često
kažemo da vrednosti atributa definišu stanje objekta. Pri opisu atributa moramo navesti tip
kome taj atribut pripada (celobrojni, realni, znakovni, Form, Button) i ime atributa. Pri tome,
navedeni tip je prethodno definisan (ugrađen u sistem ili definisan od strane programera).

int a,b; //celobrojni atributi a i b

Button dugme;// atribut dugme, objekat ugrađene klase Button

U programskom jeziku C#, po navođenju “//“, pišemo komentare napisanog koda. Počev od
“//“ pa do kraja linije napisani komentar se pri prevođenju programa ignoriše. Ukoliko
pišemo opširniji komentar, koji obuhvata više redova, od ostalog dela koda odvajamo ga na
početku sa “/*“ a na kraju sa

“*/“.

Pristup atributima objekta u programskom jeziku C# realizujemo navođenjem imena


objekta, znaka tačka (‘.’), pa imena atributa. Na primer, ako je X objekat klase Ucenik,
atributu razred pristupamo sa X.razred. Metodom opisujemo ponašanje objekta u određenoj
situaciji i pod određenim uslovima (npr. metod uci), ali i određujemo nove vrednosti na

9|Strana
Programiranje Windows aplikacija u C#

osnovu osobina koje objekat poseduje (npr. metod prosek). Na taj način opisujemo
funkcionalnost objekta.

Metod klase je imenovani blok naredbi koji se sastoji iz zaglavlja i tela metoda. U zaglavlju
navodimo povratni tip (ako metod ne proizvodi vrednost koju vraća, navodimo rezervisanu
reč void), zatim ime metoda za kojim sledi u malim zagradama spisak parametara metoda. Za
svaki parametar navodi se tip kome taj parametar pripada kao i ime parametra. Posle
zaglavlja u vitičastim zagradama navodimo telo metoda koje se sastoji iz odgovarajućih
naredbi programskog jezika C#.

<povratni tip><ime metoda>(<lista parametara>)

{ <telo metoda> }

Svi atributi konkretnog objekta dostupni su i vidljivi svim metodima tog objekta i traju dok
traje objekat. Za razliku od njih, promenljive deklarisane u okviru nekog od metoda (lokalne
promenljive), nastaju izvršavanjem tog metoda, vidljive su samo u okviru njega, i gase se
završetkom tog metoda. Zato, ako je potrebno da koristimo vrednost u okviru više metoda
jedne klase (ili u više izvršavanja jednog metoda), možemo je definisati kao atribut klase.

Neki od metoda se pokreću kao reakcija na događaje koji nastaju tokom izvršavanja
aplikacije. Za takve metode kažemo da obrađuju događaje(engl. event handler).

Kada u toku izvršavanja aplikacije pritisnemo dugme za izlazak iz programa u naslovnoj liniji
prozora u kome se izvršava aplikacija, automatski se pokreće metod Closing u okviru koga
možemo programirati akcije koje će sprečiti izlazak iz programa ukoliko uslovi za to nisu
ispunjeni. Vrlo često u toku izvršavanja Windows aplikacija korisnik ima mogućnost da
klikom na dugme usmeri dalje izvršavanje aplikacije. Tok izvršavanja aplikacije nakon klika
na dugme programer definiše metodom Click. Poziv metoda objekta u programskom jeziku
C# realizujemo na sledeći način:

imeObjekta.imeMetoda(lista vrednosti parametara)

Na primer, ako je x objekat klase Ucenik, metod prosek pozivamo

x.prosek()

a metod uci

x.uci(L)

gde je L objekat klase Lekcija.

Svaka klasa sadrži metode koji omogućavaju kreiranje objekta, a može sadržati i metod koji
„uništava“ objekat (destruktor). Metode koje kreiraju objekte zovemo konstruktorima.
Konstruktori su sastavni deo svake klase i nose njeno ime. Pozivom konstruktora objekat
počinje svoj život. Klasa može imati jedan ili više konstruktora koji se razlikuju po listi
10 | S t r a n a
Programiranje Windows aplikacija u C#

parametara. Lista parametara najčešće sadrži vrednosti kojima inicijalizujemo svojstva


objekta, a može biti i prazna. Konstruktor neke klase pozivamo pri definisanju objekta iste
klase, korišćenjem operatora new.

Objekat A klase Ucenik možemo definisati izrazom

A=new Ucenik("Pera","Peric");

Jedan od osnovnih koncepata objektno orijentisanog programiranja jeste kontrolisanje


pristupa članovima objekta (atributima i metodima). Za svaki član klase (atribute i metode)
moramo definisati nivo pristupa (vidljivosti, dostupnosti, zaštite). Na taj način definišemo
koliko je taj član klase otvoren prema „spoljašnjem“ svetu.

U programskom jeziku C# postoje više nivoa pristupa a mi ćemo, u početku, koristiti privatni
(private) i javni (public ) pristup. Neki članovi klase mogu da se koriste interno, samo u
metodima klase, i metodi drugih klasa im ne mogu pristupiti. Za takve članove klase kažemo
da su privatni i pri njihovom definisanju navodimo rezervisanu reč private. Privatnim
članovima klase mogu pristupati samo metodi te klase i to je najviši nivo zaštite.

Pri opisu javnih članova klase navodimo rezervisanu reč public . Takvi članovi klase su
dostupni svetu van klase i pristup tim članovima je potpuno slobodan. Podrazumevani
pristup članovima klase je privatni, što znači da su članovi klase za koje nije naveden nivo
pristupa, privatni članovi. Uobičajeno je da su atributi privatni, a metodi javni članovi klase.

Ukoliko postoji potreba da se izvan klase pristupa privatnim atributima, potrebno je


definisati javne metode ili javno svojstvo (engl. property) u okviru klase koji služe za
komunikaciju sa privatnim atributom, odnosno omogućava postavljanje vrednosti ili čitanje
vrednosti atributa. Pri definisanju članova klase, posle nivoa pristupa, možemo navesti i
službenu reč static kojom definišemo da odgovarajući član postoji i da se koristi i bez
kreiranja konkretnih instanci klase.

Takvim članovima pristupamo navođenjem imena klase umesto imena objekta. Bez obzira na
broj instanci klase koja sadrži atribut static, postoji tačno jedna kopija tog atributa u
aplikaciji. U navedenom primeru klase Ucenik, član SkolskaGodina možemo definisati kao
static jer je vrednost ista za sve učenike, i u tom slučaju tom atributu pristupamo
Ucenik.SkolskaGodina.

4. .NET Framework

11 | S t r a n a
Programiranje Windows aplikacija u C#

NET Framework je revulucionarna platofrma koju je kreirao Microsoft za razvoj aplikacija. To


je takva platforma na kojoj mogu raditi različite vrste aplikacija (Windows aplikacije, Web
aplikacije, Web servisi...). NET Framework je dizajniran tako da može koristiti bilo koji
programski jezik kao što su C++, Visual Basic, Jscript, čak i ranije verzije Cobol. Takođe je
moguće da se kombinuju pojedini delovi koda iz različitih programskih jezika. Npr. kod
napisan u C# se može kombinovati sa kodom iz Visual Basica.

NET Framework sadrži veliku biblioteku koda koji može da koristi klijentski jezik (kao što je
C#) koristeći tehnike objektno-orijentisanog programiranja. Ova biblioteka se sastoji od
različitih modula, pri čemu je moguće koristiti pojedine delove u zavisnosti od potrebe. Tako
npr. neki moduli sadrže blokove za kreiranje windows aplikacija, drugi deo za mrežno
programiranje, a neki drui za Web razvoj. Neki moduli su podeljeni u neke specifičnije pod
module.

4.1. Objektno - orijentisano programiranje (Klase, objekti i metode)


Objekat je primerak (instanca) klase. Klasa predstavlja skup podataka i instrukcija koje se
izvode na nekim podacima. Klasa je skup pravila koji određuju kako će se formirati neki
objekat. Svaka klasa ima svoje članove i to su podaci i kod. Podaci koji se definišu u klasi
obično se nazivaju polja (fields). Ovde se koriste termini kao što su funkcija (metoda) koja
predstavlja kod programa koji se izvršava nad podacima. Metodi su ustvari podprogrami i oni
mogu imati svojstva, događaje i konstruktore. Metodi se izvršavaju nad poljima koja su
definisana u klasi.

4.2. Ključne reči u C#

abstract as base bool


break byte case catch
char checked class const
continue decimal default delegate
do double else enum
event explicit extern false
finally fixed float for
foreach goto if implicit
in in (generic modifier) int interface
internal is lock long
namespace new null object
operator out out (generic modifier) override
params private protected public
readonly ref return sbyte
sealed short sizeof stackalloc
static string struct switch
this throw true try
typeof uint ulong unchecked
unsafe ushort using virtual
void volatile while

12 | S t r a n a
Programiranje Windows aplikacija u C#

4.3. Kreiranje konzolnih aplikacija u Microsoft Visual C# 2010 Express

Na slici 2 je prikazana startna strana, na kojoj se mogu odabrati ponuđene mogućnosti za


formiranje novog projekta izborom opcije New Project ili otvaranje već postojećeg projekta
izborom opcije Open Project.

Slika 2. Izgled startnog prozora Microsoft Visual C# 2010 Express

Pri kreiranju konzolne aplikacije izabere se opcija sa padajućeg menija File→New Project.
Zatim se u okviru panela Templates izabere Console Application. Potom se dobija sledeće:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

13 | S t r a n a
Programiranje Windows aplikacija u C#

class Program

static void Main(string[] args)

Da bi aplikacija bilo šta radila potrebno je dodati bar jednu liniju koda ispod glavne funkcije
static void Main(string[] args).

Primjer 1. Ispisati tekst na ekranu.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

class Program

static void Main(string[] args)

Console.WriteLine("Prva aplikacija kod C# proogramiranja!");

Console.ReadKey();/*traži se pritiskanje nekog tastera za prekid rada programa*/

14 | S t r a n a
Programiranje Windows aplikacija u C#

namespace predstavlja .NET način da se kod i njegov sadržaj jedinstveno identifikuju. Takođe
se koristi za kategorizaciju elemenata u .NET Framework. namespace je deklarisan za kod
aplikacije koja se u ovom slučaju naziva ConsoleApplication1.

using System;-predstavlja korišćenje System namespace (odnosi se na biblioteku klasa .NET


Framework, čiju biblioteku koristi C#). Za veće projekte može se kreirati sopstveni
namespaces.

class Primer{ -definicija klase Primer. Početak klase počinje sa otvorenom vitičastom
zagradom {, a završava se sa }.

static void Main()-počinje glavni metod, gde se izvršava program. Ovaj metod počinje sa
static, što znači da je statički i void - ne vraća vrednost.

Console.WriteLine("Jednostavan C# program."); -WriteLine() je funkcija koji kao rezultat


vraća string koji mu je prosleđen. Console- podržava konzolni I/O. U kombinaciji se
kompajleru govori da je WriteLine() članica Console klase.

Izrazi u C# se zvršavaju sa tačka-zarezom (;).

Console.ReadKey(); - funkcija za unos nekog znaka sa tastature (za prekid rada programa)

Ovaj program se unosi izborom opcije New Project, pa se bira u okviru Online Template
opcija Empty Project. Na padajućem meniju se izabere opcija Build →Build Solution (F6), a
potom sa padajućeg menija Debug → Start Without Debugging. (Ukoliko je u padajućem
meniju ne postoje ove opcije treba izabrati opciju Tools → Settings → Expert Settings).

Ukoliko se fajl ne snimi pod nekim imenom, dodeljuje mu se automatski ime CodeFile1.cs.
Naravno, postoji mogućnost preimenovanja.

Pri izvršavanju aplikacije pojaviće se u komand propmptu tekstualna poruka:

Jednostavan C# program.

5. Programiranje Windows aplikacija u C#


Nakon upoznavanja sa tim šta je u stvari jezik C# i kako se uklapa u .NET okruženje, došao je
trenutak da započnemo sa pisanjem koda. U tom poslu koristićemo Visual Studio .NET (VS),
pa treba da naučimo osnovne stvari o torn razvojnom okruženju. VS je ogroman i
komplikovan proizvod, tako da u prvo vreme korisniku može delovati zastrašujuće, ali uz
njegovu pomoć pravljenje jednostavnih aplikacija može biti iznenađujuće prosto.

Čim počnemo sa korišćenjem VS-a uvidećete da nije potrebno mnogo znati o njemu da
bismo se poigrali sa C# kodom. Kasnije ćemo videti neke mnogo komplikovanije operacije
koje je moguće izvesti u VS-u, ali za sada su dovoljna osnovna znanja.

15 | S t r a n a
Programiranje Windows aplikacija u C#

Pošto zavirimo u VS, sastavićemo dve proste aplikacije. Za sada se nećemo mnogo
opterećivati kodom, samo ćemo se upoznati sa tim koje su procedure potrebne da bi se
aplikacija napravila i da bi funkcionisala kako treba, mada će sve to uskoro postati sporedno.

Prva aplikacija koju ćemo napraviti biće jednostavna konzolna aplikacija. Konzolne aplikacije
ne koriste grafičko okruženje Windowsa, tako da ne moramo da brinemo o dugmadima,
menijima, interakciji sa pokazivačem miša i tako dalje. Umesto toga, pokrenućemo aplikaciju
iz komandne linije i komunicirati sa njom na mnogo prostiji način. Druga aplikacija će biti
bazirana na Windows formularima. Njen izgled, kao i rad sa njom, biće vrlo prepoznatljiv
onima koji su koristili Windows i njeno kreiranje ne zahteva ništa vise rada nego prethodna.
Ipak, sintaksa njenog koda je mnogo komplikovanija, mada često nećemo morati da vodimo
računa o detaljima.

Dodatna fleksibilnost Windows aplikacija nije neophodna da bi se naučio C# jezik, dok


jednostavnost konzolnih aplikacija omogućuje da se skoncentrišemo na učenje sintakse, a da
za to vreme ne brinemo o tome kako aplikacija izgleda niti kakav je osećaj raditi sa njom.

5.1. Visual Studio


Kada prvi put učitate VS, odmah se pojavi nekoliko prozora, od kojih je većina prazna,
zajedno sa nizom elemenata menija i ikona sa paletama alatki.

Ukoliko prvi put pokrećete VS biće vam predstavljena lista sa vrednostima namenjena za
korisnike sa iskustvom u radu na prethodnim izdanjima ovog razvojnog okruženja.
Automatski odabrani element! su sasvim u redu, za sada ih prihvatite jer tu nema ničega što
se kasnije ne može promeniti.

Izgled VS okruženja je u potpunosti prilagodljiv, ali su nam sasvim dovoljne već postavljene
vrednosti. One su sređene na sledeći način:

16 | S t r a n a
Programiranje Windows aplikacija u C#

Slika 3. Korisnički interfejs Visual Studia paketa

Glavni prozor, koji prikazuje uvodnu „početnu stranu" kada se VS pokrene, jeste onaj u kome
se prikazuje ceo naš kod. Ovaj prozor je podeljen na kartice tako da možemo lako skakati sa
jedne na drugu datoteku tako što ćemo pritisnuti mišem njihovo ime. Ovaj prozor ima i
druge funkcije: može prikazati grafički korisnički interfejs koji dizajniramo za naš projekat,
čiste tekstualne datoteke, HTML, kao i različite alate ugrađene u VS.

Opisaćemo svaki, kako na njega naiđemo tokom rada.

Iznad glavnog prozora nalaze se palete sa alatkama, kao i VS meni. Ovde možete naći
nekoliko različitih paleta sa alatkama rangiranih po funkcionalnosti - od alatki za snimanje i
učitavanje datoteka, preko izgradnje i pokretanja projekta, do kontrola za otklanjanje
grešaka. O svima njima ćemo pričati kada nam budu zatrebali. Slede kratki opisi glavnih
karakteristika VS-a, koje ćete najčešće koristiti:

Server Explorer i Toolbox paleta sa alatkama izbacuju sopstvene menije kada se preko njih
prede mišem, i otvaraju nam nove dodatne mogućnosti, kao što su pristup i podešavanje
karakteristika i servisa samog servera, i pristup korisničkom interfejsu za izradu elemenata
Windows aplikacija.

17 | S t r a n a
Programiranje Windows aplikacija u C#

Solution Explorer prozor prikazuje informacije o trenutno učitanim rešenjima. Rešenje je po


terminologiji VS-a jedan ili vise projekata zajedno sa njihovom konfiguracijom. Ovde možemo
videti različiti pogled na projekte unutar rešenja, kao što su datoteke iz kojih se sastoje i
njihov sadržaj.

Properties prozor omogućuje detaljniji pogled na sadržinu projekta i dozvoljava nam da


izvedemo dodatno konfigurisanje pojedinih elemenata. Na primer, taj prozor možemo
koristiti da promenimo izgled dugmeta unutar Windows formulara.

Task List and Output prozor prikazuje informacije prilikom kompajliranja projekta zajedno sa
zadacima koji treba da se izvrše (slično listi zadataka u Microsoft Outlooku). Ovi zadaci se
mogu uneti ručno, a mogu biti i automatski generisani od VS-a.

Primjer:

Napravite novi projekat konzolne aplikacije birajući File | New | Project... iz menija:

Izaberite Visual C# Projects direktorijum unutar prozora Project Types:, i tip projekta Console
Application u okviru prozora Templates: (za ovo ćete morati malo da pomerite prozor na
dole). U okviru za tekst Location: promenite putanju u
C:\Temp\SoftIng\LecturesCode\Vezba1 (ovaj će direktorijum biti automatski napravljen
ukoliko već ne postoji), i ostavite podrazumevani tekst u okviru za tekst Name: Pozdrav
Svete.

18 | S t r a n a
Programiranje Windows aplikacija u C#

Pritisnite mišem na dugme OK. Kada se projekat inicijalizuje dodajte sledeće redove u
datoteku koja se bude pojavila u glavnom prozora:

Izaberite Debug | Start Without Debbuging iz menija. Posle nekoliko trenutaka trebalo bi da
vidite sledeće:

Takođe samu konzolnu aplikaciju možemo pokrenuti i na drugi način:

Odaberite Start | Programs | Microsoft Visual Studio .NET 2003 | Visual Studio .NET Tools |
Visual Studio .NET Command Prompt. Pojaviće se komandni prozor i biće definisane sve
promenljive okruženja potrebne prevodiocima i alatkama Visual Studija. Ako se pokrene
obično komandno okruženje, bez zadavanja tih promenljivih, .NET alatke neće raditi.

19 | S t r a n a
Programiranje Windows aplikacija u C#

Posle otvaranja komandnog prozora .NET-a uđite u folder u kome ste sačuvali ovu konzolnu
aplikaciju. Unesite u komandnom prozoru sledeću komandu, koja prevodi kod konzolne
aplikacije:

csc Class.cs <Enter>

Naravno programiranje pod celim Visual Studio .NET je tkz. Case Sensity, osetljiv velika i mala
slova. Tako da morate da obratite pažnju pri kucanju koda. Ovde to nije slučaj, ali nije
naodmet da se navikavate na velika i mala slova. Prvo ćete dobiti obaveštenje o verziji
prevodioca i izvršnog okruženja, a zatim i o autorskim pravima. Pokrenute program i bićete
pozdravljeni na sledeći način:

C:\> Class1

Pozdrav svete na jeziku C# !

C:\>

Funkcija Console.WriteLine() dodaje tekstu indikator novog reda (engl. Newline character). U
windowsu je to kombinacija znaka za početak reda i znaka za prelazak u novi red. Da biste u
nekoliko iskaza pisali u istom redu, koristite funkciju Write(). Ona zahteva da sami dodate
indikator novog reda. Sada u prethodnom programu zamenite iskaz WriteLine() sledećim
iskazima:

Console.Write ("Zdravo svete " ) ;

Console.Write ( "na jeziku C#! \ r \n" ) ;

Obrnuta kosa crta (\) ispred znaka je signal prevodiocu da je u pitanju izlazna sekvenca
(engl. escape sequence). Iz sledeće tabele vidi se da C# koristi iste izlazne znake kao i C++.
Ako iza obrnute kose crte stavite neki dragi znak, dobićete od prevodioca poruku da nije
prepoznao izlazni znak.

20 | S t r a n a
Programiranje Windows aplikacija u C#

6. Zaključak
Kreiran kako bi se iskoristile ogromne mogućnosti .NET platforme, C# se ubrzo pokazao kao
nevjerovatno univerzala programski jezik sposoban da zadovolji zahtjeve kako najsloženijih
programskih zadataka kakvi se sreću na serverima, radnim stanicama i superačunarima pa
sve do malih mobilnih uredjaja. Njegova sposobnost da direktno upravlja hardverom čini ga
veoma moćnim sredstvom pri kreiranju novih i modifikovanju postojećih operativnih
sistema. Uprkos svim svojim prednostima i sposobnostima, C# kao i njegove prethodnika
karakteriše složenosti sintakse i samog procesa programiranja. Zbog toga, on predstavlja
jezik više klase namijenje za rad iskusnim, vrhunskim programerima koji su u stanju pravilno i
u punoj mjeri iskoristiti njegove mogućnosti.

7. Literatura

1. „Objektno orjentisano programiranjeu jeziku C#“, Dragan Milićev, Beogra 1996.


2. „Osnovni elementi programskog jezika C“, Skripta
3. „Programiranje u C“, Skripta, Univerzitet u Zagrebu
4. „C# - Auditorne vježbe“, Skripta, Univerzitet u Beogradu
5. „Tehnike vizuelnog programiranja u C#“, Zoran Ćirović, Ivan Dunđerski, Viša
elektrotehnička škola, Beograd, 2006.
6. „Programiranje u C#“, Skripta, Elektrotehnički fakultet „Mihajlo Pupin“, Zrenjanin
7. „Programski jezik C#“, Mario Bošnjak, Univerzitet u Zagrebu

21 | S t r a n a

You might also like