seminarski rad spia

40
SVEUČILIŠTE/UNIVERZITET „VITEZ“ TRAVNIK FAKULTET POSLOVNE INFORMATIKE STUDIJ I CIKLUS; GODINA STUDIJA: I CIKLUS; I GODINA SMIJER: INFORMACIJSKE TEHNOLOGIJE STRUKTURA C# SEMINARSKI RAD

Upload: koluhazzur

Post on 30-Jan-2016

34 views

Category:

Documents


2 download

DESCRIPTION

Struktura podataka i algoritmi

TRANSCRIPT

Page 1: Seminarski Rad SPiA

SVEUČILIŠTE/UNIVERZITET „VITEZ“ TRAVNIK

FAKULTET POSLOVNE INFORMATIKE

STUDIJ I CIKLUS; GODINA STUDIJA: I CIKLUS; I GODINA

SMIJER: INFORMACIJSKE TEHNOLOGIJE

STRUKTURA C#

SEMINARSKI RAD

Travnik, mart, 2015 godine

Page 2: Seminarski Rad SPiA

SVEUČILIŠTE/UNIVERZITET „VITEZ“ TRAVNIK

FAKULTET POSLOVNE INFORMATIKE

STUDIJ I CIKLUS; GODINA STUDIJA: I CIKLUS; I GODINA

SMIJER: INFORMACIJSKE TEHNOLOGIJE

STRUKTURA C#

SEMINARSKI RAD

IZJAVA: Ja, Koluh Azur , student Sveučilišta/Univerziteta „Vitez“ Travnik, Indeks broj

: 0274-14/RIT , odgovorno i uz moralnu i akademsku odgovornost izjavljujem da sam ovaj

rad izradio potpuno samostalno uz korištenje citirane literature i pomoć profesora, odnosno

asistenta.

Potpis studenta: _Koluh Azur

Student: Koluh Azur

Predmet: Struktura podataka i algoritmi

Profesor: dr. Lazo Roljić

Asistent: mr.sc. Dragan Mlakić

Travnik, mart, 2015 godine

2

Page 3: Seminarski Rad SPiA

STRUKTURA C#

Sadržaj

1. Uvod....................................................................................................................................2

2. Programski jezik C#............................................................................................................3

3. Osnove programiranja u C#.................................................................................................5

3.1. Tipovi podataka, deklaracija i definicija promjenjive.................................................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

3| S t r a n a

Page 4: Seminarski Rad SPiA

STRUKTURA 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 operativnog

sistema UNIX, koji je praktički u potpunosti 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

4| S t r a n a

Page 5: Seminarski Rad SPiA

STRUKTURA C#

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 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 sustava, 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 popularnijim programskim 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,

5| S t r a n a

Page 6: Seminarski Rad SPiA

STRUKTURA C#

omogućava jednostavniju distribuciju i prilagođavanje projekta klijentima i obezbjeđ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()

{

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.

6| S t r a n a

Page 7: Seminarski Rad SPiA

STRUKTURA C#

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.

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

7| S t r a n a

Page 8: Seminarski Rad SPiA

STRUKTURA C#

omogućava relativno lako kreiranje aplikacija u grafičkom korisničkom okruženju (poput

programskog jezika Borland Delphi). Ovaj programski jezik je jezik opće primjene i

namjenjen 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 takozvane službene ili rezervisane riječi koje imaju svoje unaprijed definisano

značenje i ne mogu se koristiti za imenovanje bilo kakvih podataka od strane programera.

Ovde navodimo skup rezervisanih riječi poredanih 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 seminarskog 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

PROMJENJIVE

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, riječ, 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 obezbjediti izvršavanje određenih akcija

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;

8| S t r a n a

Page 9: Seminarski Rad SPiA

STRUKTURA C#

o skup mogućih vrijednosti tih podataka;

o skup mogućih akcija nad podacima.

Promjenjiva je ime (identifikator) memorijske lokacije u kojoj aplikacija čuva vrijednost.

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, primjeri 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# promjenjive su podjeljene u dvije kategorije: vrijednosne i

referentne promjenjive. Memorijska lokacija, imenovana promenljivom vrijednosnog tipa,

direktno sadrži vrijednost, dok lokacija imenovana promjenjivom referentnog tipa sadrži

adresu lokacije u dinamičkoj memoriji u kojoj se čuva vrijednost. Za podatke osnovnih tipova

(tj. sistemskih struktura) u programskom jeziku C# (int, double, char, bool…) ime

promjeenjive predstavlja vrijednost a za objekte sistemskih i od strane programera definisanih

klasa, ime promjenjive predstavlja adresu lokacije u dinamičkoj memoriji u kojoj su ti objekti

kreirani i gdje egzistiraju, pa se njima pristupa indirektno. Referentna promjenjiva čuva

memorijsku adresu podatka, tj. referencira na pravu vrijednost.

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

deklaracijom promenljivih na sledeći način:

<ime tipa><ime promjenjive1>, …, <ime promjenjiveN> ;

Deklaracijom promjenjive vrijednosnog tipa u memoriji se odvaja prostor neophodan za

registrovanje podatka zadatog tipa, a pri deklaraciji promjenjive referentnog tipa odvaja se

prostor za registrovanje adrese memorijske lokacije u kojoj će se nalaziti objekat.

9| S t r a n a

Page 10: Seminarski Rad SPiA

STRUKTURA C#

int x,y;

char p,q;

Ucenik ucenik1,ucenik2;

Samom deklaracijom ne dodjeljuje se vrijednost promjenjivoj vrijednosnog tipa. Ako želimo

da dodijelimo vrijednost promjenjivoj (da definišemo promjenjivu) koristimo operator =

(operator dodjele) na sljedeći

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

Tip vrijednosti izraza mora se poklapati sa tipom promjenjive (ili se implicitnom konverzijom

može konvertovati u tip promjenjive).

int x,y;

x=5;

y=!145+x;

char p;

p=’A’;

Deklaracijom promjenjive 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

vrijednosti tipa <ime referentnog tipa >. Ovaj operator vraća adresu dodjeljenog prostora koju

onda možemo dodjeliti referentnoj promjenjivoj.

Primer:

mojRefTip x;

x= new mojRefTip();

Ucenik a;

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

10| S t r a n a

Page 11: Seminarski Rad SPiA

STRUKTURA C#

Promjenjivoj referentnog tipa x, odnosno a, dodjeljujemo 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

vrijednosti. Možemo zaključiti da se uvođenje promjenjive odvija u dva koraka: o

deklaracija promjenjive promjenjiva vrijednosnog tipa se pri deklaraciji ne inicijalizuje

ukoliko to nije eksplicitno navedeno: promjenjiva referentnog tipa se pri deklaraciji

inicijalizuje nulom; o inicijalizacija promjenjive za promjenjive vrijednosnog tipa eksplicitno

navodimo vrijednost ; za promjenjive 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 vrijednosnog strukture i

enumeracijski tip. Promjenjiva vrijednosnog tipa direktno sadrži podatak, dok promjenjiva

referentnog tipa sadrži referencu na vrijednost koja je smještena u posebnom memorijskom

prostoru. Svaka promjenjiva vrijednosnog tipa sadrži sopstvenu kopiju podatka, pa operacije

nad jednom promjenjivom nemaju efekta na drugu promjenjivu.

Dve referentne promjenjive mogu sadržati adresu iste vrijednosti, pa operacije nad jednom

referentnom promenljivom mogu uticati na vrijednost na koji referiše druga promjenjiva.

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 riječi class iza koje slijedi identifikator klase (ime klase). Poslije imena, ako

formiramo klasu koja nasljeđuje neku, prethodno definisanu klasu, navodimo ’:’ a zatim

11| S t r a n a

Page 12: Seminarski Rad SPiA

STRUKTURA C#

slijedi 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 primjer, klasu učenika iz uvodnog primjera možemo intuitivno definisati na sljedeći

način:

class Ucenik

{

String ime, prezime;

DateTime datumRodjenja;

int razred;

int SkolskaGodina;

char odjeljenje; int [] ocene;

double prosjek()

{

}

void uci(Lekcija X)

{

}

}

12| S t r a n a

Page 13: Seminarski Rad SPiA

STRUKTURA C#

Atributima opisujemo određenu osobinu objekta (ime, prezime, datum rođenja, razred,

odjeljenje). Najčešće, različiti objekti iste klase imaju različite vrijednosti atributa. Često

kažemo da vrijednosti atributa definišu stanje objekta. Pri opisu atributa moramo navesti tip

kome taj atribut pripada (cjelobrojni, 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; //cjelobrojni 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 dijela 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 vrijednosti na osnovu osobina

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

Metod klase je imenovani blok naredbi koji se sastoji iz zaglavlja i tijela metoda. U zaglavlju

navodimo povratni tip (ako metod ne proizvodi vrednost koju vraća, navodimo rezervisanu

riječ void), zatim ime metoda za kojim slijedi 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 tijelo metoda koje se sastoji iz odgovarajućih

naredbi programskog jezika C#.

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

{ <tijelo metoda> }

Svi atributi konkretnog objekta dostupni su i vidljivi svim metodima tog objekta i traju dok

traje objekat. Za razliku od njih, promjenjive deklarisane u okviru nekog od metoda (lokalne

promjenjive), nastaju izvršavanjem tog metoda, vidljive su samo u okviru njega, i gase se

13| S t r a n a

Page 14: Seminarski Rad SPiA

STRUKTURA C#

završetkom tog metoda. Zato, ako je potrebno da koristimo vrijednost 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 spriječ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 usmjeri 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 sljedeći način:

imeObjekta.imeMetoda(lista vrijednosti parametara)

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

x.prosjek()

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 dio 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

parametara. Lista parametara najčešće sadrži vrijednosti 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)

14| S t r a n a

Page 15: Seminarski Rad SPiA

STRUKTURA C#

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. Podrazumjevani 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 vrijednosti ili čitanje vrijednosti

atributa. Pri definisanju članova klase, posle nivoa pristupa, možemo navesti i službenu riječ

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 primjeru klase Ucenik, član SkolskaGodina možemo definisati kao static jer je

vrijednost ista za sve učenike, i u tom slučaju tom atributu pristupamo Ucenik.SkolskaGodina.

4. .NET Framework

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

15| S t r a n a

Page 16: Seminarski Rad SPiA

STRUKTURA C#

različitih modula, pri čemu je moguće koristiti pojedine dijelove u zavisnosti od potrebe. Tako

npr. neki moduli sadrže blokove za kreiranje windows aplikacija, drugi dio za mrežno

programiranje, a neki drugi za Web razvoj. Neki moduli su podjeljeni u neke specifičnije pod

module.

4.1. OBJEKTNO - ORIJENTISANO PROGRAMIRANJE

(KLASE, OBJEKTI I METODE)

Objekat je primjerak (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 boolbreak byte case catchchar checked class constcontinue decimal default delegatedo double else enumevent explicit extern falsefinally fixed float forforeach goto if implicitin in (generic modifier) int interfaceinternal is lock longnamespace new null objectoperator out out (generic modifier) overrideparams private protected publicreadonly ref return sbytesealed short sizeof stackallocstatic string struct switchthis throw true trytypeof uint ulong uncheckedunsafe ushort using virtualvoid volatile while

4.3. KREIRANJE KONZOLNIH APLIKACIJA U MICROSOFT

VISUAL C# 2010 EXPRESS

16| S t r a n a

Page 17: Seminarski Rad SPiA

STRUKTURA C#

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 sljedeće:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

17| S t r a n a

Page 18: Seminarski Rad SPiA

STRUKTURA C#

class Program

{

static void Main(string[] args)

{

}

}

}

Da bi aplikacija bilo šta radila potrebno je dodati bar jednu liniju koda ispod glavne funkcije

staticvoid Main(string[] args).

Primjer 1. Ispisati tekst na ekranu.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

classProgram

{

staticvoid Main(string[] args)

{

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

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

}

18| S t r a n a

Page 19: Seminarski Rad SPiA

STRUKTURA 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.

classPrimer{ -definicija klase Primer. Početak klase počinje sa otvorenom vitičastom

zagradom {, a završava se sa }.

staticvoid 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 prosljeđ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, dodjeljuje 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#

19| S t r a n a

Page 20: Seminarski Rad SPiA

STRUKTURA 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 vrijeme korisniku može djelovati 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 uvidjećemo da nije potrebno mnogo znati o njemu da

bismo se poigrali sa C# kodom. Kasnije ćemo vidjeti neke mnogo komplikovanije operacije

koje je moguće izvesti u VS-u, ali za sada su dovoljna osnovna znanja.

Pošto zavirimo u VS, sastavićemo dvije 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. Umjesto 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 zahtjeva ništa više 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 vrijeme ne brinemo o tome kako aplikacija izgleda niti kakav je osjeć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 vrijednostima namjenjena za

korisnike sa iskustvom u radu na prethodnim izdanjima ovog razvojnog okruženja.

Automatski odabrani elementi su sasvim uredu, za sada ih prihvatite jer tu nema ničega što se

kasnije ne može promjeniti.

20| S t r a n a

Page 21: Seminarski Rad SPiA

STRUKTURA C#

Izgled VS okruženja je u potpunosti prilagodljiv, ali su nam sasvim dovoljne već postavljene

vrijednosti. One su sređene na sljedeći način:

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 cijeli naš kod. Ovaj prozor je podjeljen 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

21| S t r a n a

Page 22: Seminarski Rad SPiA

STRUKTURA C#

učitavanje datoteka, preko izgradnje i pokretanja projekta, do kontrola za otklanjanje grešaka.

O svima njima ćemo pričati kada nam budu zatrebali. Slijede 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

pređe 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.

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

terminologiji VS-a jedan ili više projekata zajedno sa njihovom konfiguracijom. Ovdje

možemo vidjeti različit pogled na projekte unutar rješ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 primjer, taj prozor možemo

koristiti da promjenimo 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 unijeti 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 pomjerite prozor na

dole). U okviru za tekst Location: promjenite putanju u C:\Temp\SoftIng\LecturesCode\

Vjezba1 (ovaj će direktorijum biti automatski napravljen ukoliko već ne postoji), i ostavite

podrazumjevani tekst u okviru za tekst Name: Pozdrav Svijete.

22| S t r a n a

Page 23: Seminarski Rad SPiA

STRUKTURA C#

Pritisnite mišem na dugme OK. Kada se projekat inicijalizuje dodajte sljedeće redove u

datoteku koja se bude pojavila u glavnom prozoru:

Izaberite Debug | Start Without Debbuging iz menija. Posle nekoliko trenutaka trebalo bi da

vidite sljedeće:

23| S t r a n a

Page 24: Seminarski Rad SPiA

STRUKTURA C#

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

promjenjive 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.

Poslije otvaranja komandnog prozora .NET-a uđite u folder u kome ste sačuvali ovu konzolnu

aplikaciju. Unesite u komandnom prozoru sljedeću komandu, koja prevodi kod konzolne

aplikacije:

csc Class.cs <Enter>

Naravno programiranje pod cijelim Visual Studio .NET je tzv. Case Sensity, osjetljiv na

velika i mala slova. Tako da morate da obratite pažnju pri kucanju koda. Ovdje to nije slučaj,

ali nije naodmet da se navikavate na velika i mala slova. Prvo ćete dobiti obavještenje o

verziji prevodioca i izvršnog okruženja, a zatim i o autorskim pravima. Pokrenete program i

bićete pozdravljeni na sljedeći način:

C:\> Class1

Pozdrav svijete 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 zamjenite iskaz WriteLine() sljedećim

iskazima:

24| S t r a n a

Page 25: Seminarski Rad SPiA

STRUKTURA C#

Console.Write ("Zdravo svijete " ) ;

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 sljedeće tabele vidi se da C# koristi iste izlazne znake kao i C++. Ako

iza obrnute kose crte stavite neki drugi znak, dobićete od prevodioca poruku da nije

prepoznao izlazni znak.

25| S t r a n a

Page 26: Seminarski Rad SPiA

STRUKTURA C#

6. ZAKLJUČAK

Kreiran kako bi se iskoristile ogromne mogućnosti .NET platforme, C# se ubrzo pokazao kao

nevjerovatno univerzalan 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 uređaja. 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

namijenjen za rad iskusnim, vrhunskim programerima koji su u stanju pravilno i u punoj mjeri

iskoristiti njegove mogućnosti.

26| S t r a n a

Page 27: Seminarski Rad SPiA

STRUKTURA C#

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

27| S t r a n a