Вы находитесь на странице: 1из 11

Objektno-orijentisano programiranje

Cilj ovog predmeta je da se upoznamo sa osnovama objektno-orijentisanog


programiranja. Kroz niz praktinih primera objektno-orijentisanih programa pisanih u
jeziku C# (ita se SI-!"# a na engleskom pi$e jo$ i C Shapr%# objasni&emo osnovne
kon'epte objektno-orijentisanog programiranja# koje je zastupljeno u ogromnoj ve&ini
savremenih programskih jezika.
"redmetom (vod u programiranje obuhva&ena je materija ije je znanje neophodno za
savladavanje gradiva obuhva&enog ovim predmetom. Kako su primeri jednostavnih
so)tverskih programa kori$&enih na predmetu (vod u programiranje bili pisani u
programskom jeziku *ava# napomenu&emo da su oni u potpunosti primenljivi# odnosno
prenosivi i na programski jezik C#. +aime sintaksa programa pisanih u programskom
jeziku *ava i programskom jeziku C# veoma je slina# a na nivou jednostavnih primera
predstavljenih na predmetu (vod u programiranje# skoro potpuno identina.
"rimere koji su dati u okviru ovog materijala treba praktino isprobati# koriste&i ,isual
Studio .+-. -/press# ili bilo koje drugo razvojno okru0enje koje omogu&uje pisanje i
prevodjenje C# programa.
!adi preuzimanja i instaliranja C # ,isual Studio .+-. -/press okru0enja za razvoj
so)tverskih aplika'ija na svom raunaru# preporuujemo da posetite 1eb stranu2
http233111.mi'roso)t.'om3e/press34o1nloads3
Poglavlje 1: Osnovni elementi jezika C#
Cilj ovog poglavlja je da se na brz nain upoznamo sa osnovnim elementima C#
programa# podsetimo nekih tema obradjenih na predmetu (vod u programiranje i
pro$irimo ovo znanje.
( okviru ovog poglavlja kroz primere &emo predstaviti osnovne elemente koje sadr0i
svaki C# program. 5adr0a&emo se na primerima koji koriste takozvani konzolni ulaz3izlaz
(input3output% za interak'iju sa korisnikom programa. 6vo je najjednostavniji nain za
interak'iju sa korisnikom i ne koristi gra)iko okru0enje koje pru0a 7indo1s operativni
sistem. 8edjutim# kako je 'ilj ovog kursa da ilustruje objektno-orijentisane prin'ipe
programiranja# a ogranienost vremena nam ne dozvoljava da se zadr0imo na
implementiranju korisnikog inter)ejsa# ostavi&emo pisanje programa za 7indo1s van
dometa ovog poglavlja# i ovog kursa.
Jednostavan program u jeziku C#
"rogramski kod dat u primeru 9.9 ilustruje osnovne elemente C# izvr$nog programa. Cilj
ovog primera je da se na brz nain upoznamo sa osnovnim elementima koje svaki C#
program sadr0i# kako bismo uskoro potom bili u mogu&nosti da predjemo na detaljnija
obja$njenja vezana za kon'epte objektno-orijentisanog programiranja i programski jezik
C#.
Primer 1.1 : Program dobrodolice
// Deklaracija imenskog prostora.
using System;
// Naziv imenskog prostora u kome definisemo nas program.
namespace DemoAplikacija
{
// Program poinje deklarisanjem klase
class Do!rodoslica
{
// "etodom "ain poinje izvr#avanje programa
static void "ain$%
{
// &spis na ekranu
'onsole.(rite)ine$*Do!rodo#li u predmet +!jektno,orijentisano
programiranje-*%;
.
.
.
Komentari u programskom kodu
Komentari (delovi programa koji se ne prevode% obojeni su zeleno u gornjem primeru.
+jihova uloga je da pobli0e objasne delove programskog koda. Komentari su ignorisani
kada se na$ program kompajlira. 6ni su tu da dokumentuju $ta na$ program radi.
Komentari se u programu oznaavaju zna'ima 33 ili 3: :3. Komentar oznaen zna'ima 33
mo0e se prostirati u samo jednom redu. ko 0elimo da se komentar prote0e na ve&i broj
redova# on mora poinjati znakom ;3 :; i zavr$avati se znakom ;:3;. Sve izme<u je deo
komentara.
Izvravanje programa
4a bismo izvr$ili C# program# potrebno je pokrenuti C# prevodila' (kompajler%# pri emu
se program prevodi u program kodiran u .+-. medjujeziku# koji se potom izvr$ava na
.+-. plat)ormi# odnosno pozivom generisanog izvr$nog programa# pri emu je na
sistemu prethodno instalirana .+-. plat)orma.
"rilikom izvr$avanja programa pokre&e se takozvani konzolni prozor# koji podse&a na
stari operativni sistem zvani 46S# koji ne podr0ava izradu gra)ikog korisnikog
inter)ejsa. Konzolni prozor nam omogu&uje da unosimo i ispisujemo tekst na ekranu# ali
ne omogu&uje kreiranje prozora# dugmi&a i ostalih delova standardnog gra)ikog
korisnikog inter)ejsa.
Obavezna veba
Program dat ovim primerom treba izvriti u okviru razvojnog okruenja Visual Studio
.NET Express. Potrebno je najpre kreirati projekat, odabrati da to bude konzolna
aplikaija, i potom kopirati dati programski kod u odgovaraju!i prozor. Pri tome !ete
primetiti da je ovo okruenje obeleilo bojama delova programa na isti na"in kao u
gornjem primeru.
,e0ba = kora'i
9. Kreirati novi projekat u ,S.+-. kao Console ppli'ation
>. 4esni klik na "rogram.'s )ajl u desnom prozoru i izmena imena )ajla u
4obrodosli'a.'s
?. Izmena imena klase "rogram u 4obrodosli'a
@. 4odati liniju za ispis poruke na ekranu kao gore
A. K68"*BI!+*-2 8eni --C Duild --C Duild Solution (ili EF%
F. S.!.2 8eni --C 4ebug ili Start 7ithout 4ebugging (EA ili Ctrl-EA%
#ada pokre!ete program u okviru okruenja VS .NET Express okruenja $skra!eno
VS.NET%, potrebno je izabrati na meniju stavku &'un (it)out debugging* da bi se
program izvrio. +koliko elite samo da prevedete $kompajlirate% program bez
izvravanja $na primer radi provere da li je program sintaksno ispravan%, potrebno je da
izaberete stavku &,ompile*, posle "ega moete naknadno da izvrite program.
Pri tome, kada pokrenete ovaj program iz okruenja VS.NET, otvori!e se konzolni
prozor i odma) potom brzo zatvoriti, pre nego to uspete da vidite odziv programa. -a
biste ovo spre"ili, moete dodati slede!u liniju koda kao poslednji red u .ain metodi,
dakle pre zatvorene zagrade koja ozna"ava kraj .ain metode/
'onsole./ead)ine$%;
Tada !e program sa"ekati da unesete znak za kraj reda sa tastature pre nego to se
konzolni prozor zatvori, a vi moete videti poruku ispisanu na ekranu pre nego to
pritisnete 0ENTE'1.
lementi programa u primeru 1!1
"rogram u primeru 9.9 sadr0i slede&e elemente# o kojima &e detaljnije biti rei u
narednim poglavljima2
- 4eklara'ija imenskog prostora
o Imenski prostor mo0e obuhvatati jednu ili vi$e klasa i u su$tini slu0i za
lak$e organizovanje programskog koda. ( ovom programu koristi se
jedan od imenskih prostora koje sadr0i .+-. biblioteka klasa# koji se zove
GSHstemI i koji sadr0i klasu koja se zove GConsoleI# koja sadr0i metod koji
se zove G7riteBineI# koji slu0i za ispisivanje linije teksta na ekranu (tanije
u konzolnom prozoru%.
- 4e)ini'ija klase
o Klasa je osnovni element objektno-orijentisanog programa. ( uvodnom
primeru 9.9 imamo samo jednu klasu# iji je naziv 4obrodosli'a# koja
sadr0i samo jedan metod# iji je naziv 8ain.
o .elo klase je uokvireno otvorenom i zatvorenom vitiastom zagradom J K
- 4e)ini'ija metode
o 8etoda je pojam ekvivalentan pojmu pro'edure iz pro'eduralno-
orijentisanog programiranja. 8etoda je programska 'elina koja izvr$ava
odredjenu )unk'iju. ( datom primeru postoji samo jedna metoda# iji je
naziv 8ain# i ija je uloga da na ekranu ispi$e poruku dobrodo$li'e.
o .elo metode je uokvireno otvorenom i zatvorenom vitiastom zagradom
J K
o 8etoda koja se naziva 8ain predstavlja poetnu taku izvr$avanja
programa. Lak i ako se program sastoji od vi$e klasa# od kojih svaka ima
vi$e metoda# uvek &e samo jedna od tih klasa sadr0ati metodu 8ain# od
koje poinje izvr$avanje programa.
- "oziv metode 7riteBine za ispis teksta na ekranu (tanije u konzolnom prozoru%
o ( okviru metode 8ain# u primeru 9.9 poziva se metod 7riteBine.
o 8etod 7riteBine postoji kao deo klase Console# koja je deo .+-.
biblioteke klasa. C# programer ima na raspolaganju hiljade klasa i
njihovih metoda# koje su isporuene sa instala'ijom .+-. okru0enja i
jezika C#.
o .ekst koji 0elimo da ispi$emo na ekranu zadat je kao parametar metodi
7riteBine# i ona &e ga ispisati na ekranu prilikom izvr$enja programa.
+apomene2
- "rimetimo da se svaka linija programskog koda C# programa zavr$ava znakom M
- 6bratimo pa0nju da se u C# jeziku razlikuju mala i velika slova. +a primer# re
;4obrodosli'a; nije ista kao i da je napisana malim slovima ;dobrodosli'aI. .o bi
bila dva razliita identi)ikatora.
6stali detalji programa u primeru 2.2
( primeru 2.2 vidimo da nazivu metoda Main prethodi modi)ikator static. 6n oznaava
da nije potrebno kreirati instan'u (pojavu3objekat% klase Dobrodoslica da bi se
pokrenuo metod Main. 6vaj modi)ikator je neophodan za metod Main# jer u trenutku
poetka izvr$avanja programa ne mo0e postojati instan'a (objekat% klase. 6na se mo0e
kreirati kasnije# tokom izvr$avanja programa. ,i$e o klasama i instan'ama bi&e rei u
narednim poglavljima.
Svaka metoda mora da ima de)inisan tip povratne vrednosti. ( sluaju metode Main#
povratna vrednost je GvoidI (praznina%, $to znai da Main metoda ne vra&a vrednost.
8etoda mo0e imati listu parametara koja se pi$e nakon njenog imena unutar zagrada.
!adi jednostavnosti u navedenom primeru nismo dodelili parametre metodi Main. ,i$e o
metodama i njihovim parametrima bi&e rei u narednim poglavljima.
+apomena2 Koristimo operator ;.; (taka% da odvojimo nazive identi)ikatora koji
oznaava imenski prostor# klasu i metod klase. 6 imenskim prostorima bi&e vi$e rei
kasnije. 5a sada# dovoljno je znati da postoji klasa koja se zove ,onsole# i koja ima
metod 3rite4ine. Klasa ,onsole pripada prostoru imena S5stem# koji je pomenut na
poetku programa u liniji using S5stem. .ime je reeno programu da mo0emo koristiti
sve klase koje se nalaze u ovom prostoru imena. Sa obzirom da je metoda 3rite4ine
koja pripada klasi ,onsole u njoj oznaena stati# mo0emo ovu metodu pozivati u obliku2
KBS . 8-.64 (listaNargumenata% M
4akle2
,onsole.3rite4ine$%6
Pri"vatanje ulazne komandne linije
( prethodnom primeru# dovoljno je da pokrenemo program i proizveden je izlaz (ispis
poruke na ekranu%.
8e<utim# ve&ina programa# ukljuuju&i i 7indo1s operativni sistem koji koristimo
svakodnevno# mogu imati neke ulazne parametre koje program prima prilikom
pokretanja. +a primer# ako otku'amo Notepad.exe .oja-atoteka.txt# onda &e Notepad
program otvoriti .oja-atoteka.txt datoteku tako da mo0emo da ponemo da je
ure<ujemo. +aziv datoteke .oja-atoteka.txt bio je ulazni parametar sa kojim smo
pokrenuli program Notepad.exe
Slino# mo0emo praviti svoje programe koji prihvataju parametre sa komandne linije na
ulazu. "rimer 9.> prikazuje program koji prihvata ime kao parametar sa komandne linije#
a potom ga ispisuje u konzolnom prozoru u okviru pozdravne poruke.
Primer 1.2 : Ulaz sa komandne linije
// Deklaracija imenskog prostora.
using System;
// Naziv imenskog prostora u kome definisemo nas program.
namespace DemoAplikacija
{
// Program poinje deklarisanjem klase
class Do!rodoslica&me
{
// "etodom "ain poinje izvr#avanje programa
static void "ain$string01 args%
{
// &spis na ekranu
'onsole.(rite)ine$*Do!ar dan2 {3.-*2 args031%;
.
.
.
6bratimo pa0nju na parametar metode Main u primeru 9.>. +aziv parametra je args,
$to se koristi prilikom re)eren'iranja na parametre dalje u programu. Kljunim reima
string78 de)ini$e se tip parametra. .ip string oznaava niz karaktera. (glastim zagradama
;O P; oznaava se niz bilo koji) objekata $u ovom slu"aju niz stringova, odnosno niz
nizova karaktera%. (vek kada dodamo string78 args parametrima liste 8ain metode# C #
kompajler emituje kod koji analizira argumente komandne linije i upisuje ih u parametar
args. Litaju&i vrednost ovog parametra# mo0emo pristupati ovim argumentima.
6bratimo pa0nju na Console.7riteBine(...% naredbu u okviru 8ain metode. args798 je prvi
element niza parametara, args728 je drugi element niza, args7:8 tre!i, itd !i, itd. +a
primer# ako smo otku'ali 4obrodosli'aIme 8arko na komandnoj liniji# vrednost argsOQP &e
biti ;8arko;.
,ratimo se na ugnje0deni parametar ;JQK;# u )ormatiranom stringu. "rilikom odredjivanja
stvarne vrednosti )ormatiranog stringa na ekranu ovaj parametar se zamenjuje prvim
argumentom# odnosno vredno$&u argsOQP. 4akle# vrednost args798, to je ;8arko;# &e
zameniti oznaku ;JQK; u <ormatiranom stringu.
+akon izvr$enja komandne linije navodjenjem ; 4obrodosli'aIme 8arko;# ispis na
ekranu &e biti slede&i2
Dobar dan, Marko!
Obavezna veba
Program dat pret)odnim primerom treba izvriti u okviru razvojnog okruenja Visual
Studio .NET Express.
,e0ba = kora'i
9. Kreirati novi projekat u ,S.+-. kao Console ppli'ation
>. 4esni klik na "rogram.'s )ajl u desnom prozoru i izmena imena )ajla u
4obrodosli'aIme.'s
?. Izmena imena klase "rogram u 4obrodosli'a
@. 4odati liniju za ispis poruke na ekranu kao gore
A. Snimiti )ajlove 8eni --C Eile --C Save ll
a. "ri tome odabrati neki pogodan )older
b. "osle snimanja pogledajte )oldere koje ste dobili
F. K68"*BI!+*-2 8eni --C Duild --C Duild Solution (ili EF%
R. S.!. I5 K68+4+- BI+I*-2
a. 6tvoriti komandni prozor 7indo1s meni Start --C !un --C 'md
b. ( komandnom prozoru2
'd ST5U,ezbeU4obar4anImeUbinU!elease
"ri tome# ST5 zamenite putanjom do )oldera u kome ste snimili aplika'iju.
'. ( komandnom prozoru2
4obar4anIme "etar
Interak#ija sa korisnikom preko komandne linije
"ostoji mogu&nost da se obezbedi ulaz podataka u program preko konzole. "rimer 9.?
pokazuje kako da dobijemo unos podatka od strane korisnika# prilikom startovanja
programa u konzoli.
Primer 1.3: Interaktivni Ulaz
// Deklaracija imenskog prostora.
using System;
// Naziv imenskog prostora u kome definisemo nas program.
namespace DemoAplikacija
{
// Program poinje deklarisanjem klase
class &nteraktivnaDo!rodoslica
{
// "etodom "ain poinje izvr#avanje programa
pu!lic static void "ain$%
{
// &spis i unos podataka na konzolnom ekranu
'onsole.(rite$*4ako se zove#56 *%;
'onsole.(rite)ine$*Do!ar dan2 {3.- *2 'onsole./ead)ine$%%;
.
.
.
( primeru 9.? .ain metoda nema nikakve parametre. "rilikom deklara'ije metode .ain
koristi se kljuna re publi, koja oznaava da se metodi mo0e pristupiti izvan klase u
kojoj je de)inisana. "odrazumevani nivo pristupa je private, $to bi znailo da samo
lanovi unutar iste klase mogu da pristupe metodi. Sa obzirom da je potrebno pokrenuti
metodu 8ain# odnosno pozvati je na izvr$avanje izvan klase u kojoj je de)inisana#
neophodno je da se ona uvek oznai publi. Kljune rei publi i private nazivaju se
modi)ikatorima pristupa# a detaljnije o njima &e biti rei kasnije.
+aredba za ispis ,onsole.3rite4ine$...% ispusuje tekst na konzolnom prozoru, posle
"ega se prelazi u drugi red. =a razliku od toga, naredba za ispis ,onsole.3rite$...%
ispusuje tekst na konzolnom prozoru, i ne prelazi u drugi red.
"rva naredba u primeru 9.? ispisuje na konzoli2 ;Kako se zove$V2;
4ruga naredba ne ispisuje ni$ta sve dok se ne unese linija teksta u konzolnom prozoru i
pritisne taster G-nterI. "ri tome )ormatirani string koji je argument ove naredbe uzima
unetu liniju teksta kao parametar i zamenjuje je na mesto parametra JQK.
4akle ako se sa konzole unese tekst W8arkoG # na ekranu se ispisuje2 G4obar dan#
8arkoG.
4rugi nain da se postigne isti izlaz bio bi slede&i. 8odi)ikova&emo metod 8ain na
slede&i nain2
pu!lic static void "ain$%
{
// &spis i unos podataka na konzolnom ekranu
'onsole.(rite$*4ako se zove#2 preziva#56 *%;
string ime 7 'onsole./ead)ine$%;
string prezime 7 'onsole./ead)ine$%;
string nadimak 7 'onsole./ead)ine$%;
'onsole.(rite)ine$*Do!ar dan2{3. {8.2zvani {9.-*2 ime2 prezime2
nadimak%;
'onsole.(rite)ine$*Do!ar dan2: ; ime ; * * ; prezime ; :zvani*
; nadimak ; *-*%;
.
6vde se koristi promenljiva tipa string# iji je naziv GimeI i u koju se sme$ta vrednost
imena unetog sa konzolnog ekrana. !ezultat izvr$avanja ovog programa je isti kao i u
prethodnom primeru.
Identi$ikatori u jeziku C#
Identi)ikatori programskog jezika su rei (tanije nizovi karaktera%# koji se koriste za
imenovanje pojedinih elemenata programa (promenljivih# klasa# itd%.
"ostoje pravila koja moraju zadovoljavati identi)ikatori u C# jeziku.
- identi)ikatori moraju poinjati slovom ili donjom 'rtom ( N %
- identi)ikator mo0e sadr0ati slova# 'i)re i3ili donje 'rte
- identi)ikator ne mo0e sadr0ati druge spe'ijalne znake# osim donje 'rte
- identi)ikator ne mo0e sadr0ati znak praznine
o ko se identi)ikator sastoji iz vi$e od jedne rei# one se mogu razdvajati
donjom 'rtom# ili pisati spojeno.
- identi)ikatori su osetljivi na razliku izmedju velikih i malih slova
o +a primer .ojaPromenljiva i mojapromenljiva su dva razliita
identi)ikatora.
- kljune rei koje imaju spe'ijalno znaenje u jeziku ne mogu biti identi)ikatori
Konven#ija imenovanja identi$ikatora
.okom ovog kursa pridr0ava&emo se slede&e standardne konven'ije imenovanja
identi)ikatora2
Imena promenljivih poinju malim slovom. (koliko se ime metode ili klase sastoji
od vi$e rei# svaka nova re u imenu promenljive poinje velikim slovom.
+a primer2 mojaPromenljiva , ceoBroj , nekiString , x, y, x1, y1,
ceoBroj1, nekoSlovo , ...
Imena metoda i klasa poinju velikim slovom. (koliko se ime promenljive sastoji
od vi$e rei# svaka nova re u imenu promenljive poinje velikim slovom.
+a primer2 8ojaMetoda , NekaKlasa, ac!nanjeKorena, K!ca, "grada,
Datoteka, #elicinaDatoteke , ...

Klju%ne re%i jezika C#
( tabeli 9.9 su prikazane sve kljune rei jezika C#. +eke od njih &emo obraditi u okviru
ovog kursa.
abstract const extern int o!t s$ort ty%eo&
as contin!e &alse inter&ace override si'eo& !int
base decimal &inally internal %arams stackalloc !long
bool de&a!lt &ixed is %rivate static !nc$ecked
break delegate &loat lock %rotected string !nsa&e
byte do &or long %!blic str!ct !s$ort
case do!ble &oreac$ names%ace readonly s(itc$ !sing
catc$ else goto ne( re& t$is virt!al
c$ar en!m i& n!ll ret!rn t$ro( void
c$ecked event im%licit object sbyte tr!e volatile
class ex%licit in o%erator sealed try ($ile
Promenljive& konstante i osnovni tipovi podataka
"ojam promenljive# konstante i osnovnih tipova podataka obradjen je u okviru predmeta
(vod u programiranje. ( ovom poglavlju dajemo kratak pregled osnovnih tipova
podataka u jeziku C#.
Integer i njegove varijante
o ( zavisnosti od veliine memorijskog prostora i naina prezenta'ije broja
postoje slede&i tipovi podataka za predstavljanje 'elih brojeva2
Na'iv De&inicija Broj bajtova
byte ceo broj i'medj! ) i *++ 1
sbyte ceo broj i'medj! ,1*- i 1*. 1
s$ort ceo broj i'medj! ,/*.0- i /*.0. *
!s$ort ceo broj i'medj! ) i 0++/+ *
int ceo broj i'medj! ,*11.1-/01- i 1
*11.1-/01.
!int ceo broj i'medj! ) i 1*2120.*2+ 1
long ceo broj i'medj! ,2**//.*)/0-+1..+-)- -
i 2**//.*)/0-+1..+-).
!long ceo broj i'medj! ) -
i 1-110.11)./.)2++101+
bool
o (zima vrednosti true ili )alse
)loat ( @ bajta % i double ( X bajtova %
o 4e'imalni brojevi u prezenta'iji sa pokretnim zarezom
o Yubi se na pre'iznosti kada se vr$e aritmetike opera'ije
de'imal ( 9> bajtova %
o 4e'imalni broj do >X znaajnih 'i)ara
o ritmetike opera'ije su pre'izne# tako da se mo0e koristiti za
predstavljanje novanih vrednosti
'har ( > bajta %
o Karakter u (ni'ode )ormatu

Вам также может понравиться