You are on page 1of 28

Osnove C# programa

Ispisane linije koda predstavljaju strukturu C# aplikacije.

using System;

class HelloWorld

public static void Main()

System.Console.WriteLine("Hello, World");

Kljuna re

using

referie .NET Frejmvork(Framework) biblioteku klasa. Izvravanje koda poinje od

Main
metode. Klase u .NET frejmvorku grupisane su u tzv. namespaceove ili prostore imena. Prostor imena System obezbeuje pristup resursima sistema
u kome se aplikacija izvrava.

Formatiranje koda u C#

Svaka C# aplikacija ima


Main

metodu definisanu u jednoj od svojih klasa. Main metoda je statika metoda to


znai da ne pripada
objektima klase nego samoj klasi. Klasa se ne mora instancirati

da bi se pozvala Main metoda, drugim reim


a svi objekti(primerci,instance) klase dele istu Main metodu. Main metoda je javna.

Kod pisan u C#u je osetljiv na mala i velika slova. Ukoliko je potrebno pisati komentare npr. kao
podsetnik programeru ta odreeni segment koda radi ili emu slue pojedine
promenljive, onda se koristi znak // ukoliko se eli komentar u jednoj liniji. Komentar
koji treba da se protee na vie linija poinje sa kombinacijom znakova /* a zavrava
se sa kombinacijom */. Kompajler ignorie ko
mentar.

Metoda WriteLine

Ovo je metoda klase

Console
koja se nalazi u prostoru imena
System
. Koristi se za prikazivanje jedne linije teksta na standardnom
izlazu. Ulazni parametar metode je string tj. tekst napisan pod znacima navoda.
Rezultat izvravanja metode je prikazivanje t
eksta na ekranu i prelazak kursora u novi red. Treba napomenuti da se klasa
Console koristi samo kod tzv. konzolnih aplikacija kod kojih se
rezultat izvravanja aplikacije prikazuje u konzoli tj. DOS promptu Windows
operativnog sistema. Pored konzolnih aplikaci
ja primenom
okruenja Microsoft Visual Studio.NET mogue je kreirati i druge tipove aplikacija
kao to su Windows aplikacije, ASP.NET web
aplikace ASP.NET web servisi itd.

Ugra
eni tipovi podataka

Tipovi podataka se koriste za definisanje promenljivi


h. Promenljive mogu uvati razliite tipove podataka. Kada se promenljiva deklarie
treba imati na umu koju vrstu podataka e ona uvati. Programski jezik C# i .NET

frejmvork definiu tzv. sistemske ili ugraene tipove podataka. esto se za


sistemske tipo
ve podataka koristi i naziv
predefinisani. Naravno mogue je definisati i sopstvene tipove
podataka.

Kontrola toka

Naredba if dozvoljava kontrolu toka izvravanja aplikacije u zavisnosti od vrednosti


logikog izraza koji se testira. Postoji
tri osnovne
verzije korienja if naredbe :

if
,
if else
i
if else if
.

Verzija 1:

if(uslov)

naredba1;

Verzija 2:

if (uslov)

naredba1;

else naredba2;

Verzija 3:

if(uslov)

naredba1;

naredba2;

else

naredba3;

naredba4;

Kod sve tri verzije naredbe if testira se neki logiki uslov oznaen oznakom uslov.
Kod osnovne verzije if naredbe, ukoliko

je logiki iskaz taan tj. ima vrednost true izvrava se naredba 1. Umesto naredbe 1
moe se zahtevati izvravanje
bloka naredbi koje se u tom
sluaju stavljaju izmeu vitiastih zagrada.

U drugoj i treoj verziji predstavljena je sintaksa naredbe

if

else.
Ako je logiki uslov taan izvrava se naredba naredba1 a ukoliko nije izvrava se
naredba naredba2. Slino je sa treim primerom stim to se u ovom sluaju
izvravaju odgovarajui blokovi naredbi u zavisnosti od toga da li je logoki uslov
koji se testira taan ili nije. U nastavk
u predstavljena je i struktura naredbe
if else if.

if (uslov1)

B1; }

else if (uslov2)

B2; }

else

B3; }

Ako je uslov uslov1 istinit izvrava se blok naredbi simbolino oznaen sa B1,
ukoliko uslov1 nije istinit proverava se da li
je uslov2
istinit, ako jeste izvrava se blok naredbi B2. Ukoliko ni jedan ni drugi uslov nije
istinit izvrava se blok naredbi B3.

Naredba switch

Ovde je prikazan primer upotrebe switch naredbe.

switch(broj)

case 1:

Console.WriteLine("Uneli ste broj jedan");

break;

case 2:

Console.WriteLine("Uneli ste broj 2");

break;

default:

Console.WriteLine("Uneli ste broj koji nije niti 1 niti 2");

break;

Izvravanje switch naredbe sastoji se iz nekoliko koraka:

1.
Izraunava se promenljiva broj

2.
Ako je vrednost promenljive broj jednak jednoj od konstantnih vrednosti u case
reenici izvrava se kod koji se nalazi iza te
case konstante

3. Ako ni jedna od vrednosti case labela nije jednaka vrednosti prome


nljive broj izvrava se default case labela

U okviru svakog case bloka nalazi se break naredba da bi se izvravanje koda


zaustavilo a ne prelo na sledei case blok.

Definisanje klase

Klasa predstavlja apstraktnu predstavu skupa objekata koji imaju iste osobine.
Sastoji se od atributa i metoda. Atributi i metode se nazivaju
lanice klase. Objekat predstavlja konkretan primerak
instancu klase. Klasu treba shvatiti kao skicu na osnovu koje e kasnije
biti kreirani objekti. U nastavku je prikazana klasa AutomatNovca koja ima dva javna
atributa imePrezime i stanje.

public class AutomatNovca

public string imePrezime;

public double stanje;

Da bi se klasa definisala koristi se


kljuna re

class

ispred imena klase. Preporuka je da ime klase poinje velikim slovom. Ako se ime
klase sastoji iz vie rei tada svaka sledea re poinje velikim slovom. Klasa je
korisniki definisani tip.

Instanciranje klase, tj. kreiranje objekata


klase vri se upotrebom slubene rei

new
. Funkcija koja se nalazi iza kljune rei new naziva se podrazumevani konstruktor i
kao to joj samo ime kae slui za konstruisanje objekata. Atributima objekta
pristupa se prek
o
operatora .(taka). Ovde je kreiran objekat oznaen sa an.

AutomatNovca an = new AutomatNovca();

an.imePrezime = Pera Peric;

an.stanje = 12345.67;`
Metode klase

Metoda klase je funkcija

lanica klase. Svaka metoda treba da definie tip podataka koji vraa ili ukoliko
metoda

ne vraa nita onda se povratni tip metode oznaava sa void. Ukolika metoda vra
neku vrednost onda se unutar tela metode koristi slubena re

return
.

Svaka metoda ima svoje ime. Uobiajeno da ime metode poinje malim slovom.
Metoda moe imati listu parametara ili moe biti bez
parametara. Metoda prikazana u primeru ima ime
podizanjeNovca, ima jedan ulzni parametar tipa double i vraa rezultat tipa double.

public double podizanjeNovca(double iznos)

stanje -= iznos ; // stanje = stanje - iznos

return stanje ;

Metoda se koristi za postavljanje vrednosti atributa stanje (koji se nalazi unutar iste
klase kojoj pripada i metoda podizanjeNovca).
Prevedeno na poslovnu terminologiju stanje na raunu se samnjuje za podignuti
iznos
.

Primer klase

Data je definicija klase


AutomatNovca koja slui za rad sa nekim tekuim raunom. Klasa ima dva atributa
imePrezime i stanje, gde atribut stanje predstavlja stanje na raunu korisnika ije je
ime i prezime sadrano u atributu
imePrezime. Klasa ima dve metode uplata
i podizanjeNovca. Svakom uplatom poveava se stanje na raunu korisnika za
odreeni iznos a svakim podizanjem novca vrednost
na
raunu se smanjuje.

public class AutomatNovca

public string imePrezime;

public double stanje;

// metoda uplata

public void uplata(double iznos)

stanje += iznos;

// metoda podizanjeNovca

public double podizanjeNovca(double iznos)

stanje -= iznos ; // stanje = stanje - iznos

return stanje ;

Pozivanje metode

Da bi se metoda klase pozvala potrebno je napraviti


objekte te klase a zatim se metodi klase pristupa korienjem operatora .(taka).
Ovo vai za tzv. javne metode klase, odnosno metode uz koje stoji slubena re
public. Ovde je kreiran tekui raun tj. objek
at klase AutomatNovca za korisnika pod imenom

Mika Mikic
. Zatim su izvrene dve uplate na raun korisnika pozivanjem metode uplata.
Obratiti panju da metoda uplata ima ulazni parametar tipa double i da ne vraa
nikakvu vrednost. Na kraju je izvreno jedno
podizanje
novca korienjem metode
podizanjeNovca.
Ova metoda ima ulazni parametar tipa double i vraa rezultat tipa double. Rezultat
izvravanja metode je prihvaen u promenljivoj tipa double pod nazivom
trenutniIznos.

AutomatNovca an1 = new AutomatNovca();

an1.imePrezime = "Mika Mikic";

// uplate na racun

an1.uplata(12345.23);

an1.uplata(1000);

// podizanje novca i racunanje preostalog iznosa

double trenutniIznos = an1.podizanjeNovca(456);

Nasleivanje

Nasleivanje je jedan od osnovnih koncepata objektno orijentisanog programiranja.


Klasa koja je izvedena iz osnovne klase nasleuje sve atribute i metode te klase. Za
osnovnu klasu se u literaturi esto sree i naziv bazna klasa, natklasa ili superklasa.
esto korieni
termin za izvedenu klasu je podklasa. U programskom jeziku C# izvedena kl
asa moe da nasledi samo jednu baznu klasu. Koncept viestrukog nasleivanja
prisutan u jeziku C++ je izbaen. Da bi se neka klasa definisala kao izvedena klasa
neke druge klase
koristi se
operator: (dve take). Oznaka

public class B : A

oznaava da je
klasa B izvedena iz klase A. Posle ovakve oznake dolazi definicija
tela klase izvedene klase B unutar litiastih zagrada. U nekim situacijama e
korisnik eleti da zabrani nasleivanje svoje k
lase. To se
postie korienjem kljune rei final. Klasa koja u

svojoj definiciji ima re final ne moe se naslediti.

Osnovna klasa

Da bi se ilustrovao koncept nasleivanja u nastavku je definisana klasa A koja e se


kasnije iskoristiti kao bazna klasa.
Radi ilustracije
prava pristupa i uticaja na nasleivanje, u klasi su definisana 3 atributa od kojih je
jedan public, drugi private, a trei protected. U konstruktoru klase se ovi atributi
oznaeni sa a1, a2 i a3 inicijalizuju na vrednosti 1, 2 i 3 respektivno. Klasa ima
metodu
stampajA()
koja slui za tampanje
vrednosti svojih atributa.

public class A

public int a1;

private int a2;

protected int a3;

public A()

a1 = 1;

a2 = 2 ;

a3 = 3;

public void stampajA()

Console.WriteLine("Vrednosti a1 a2 i a3 su {0} {1} {2}",a1,a2,a3);

Izvedena klasa

U primeru je realizovana klasa B koja je izvedena iz klase A. Klasa B pored atributa


a1, a2 i a3 koje je nasledila od klase A
uvodi jo jedan dodatni atribut oznaen sa b. Konstruktor klase B inicijalizuje atribut
b na vrednost 100. P
rilikom konstruisanja objekta izvedene
klase ukoliko se eksplicitno ne naznai najpre se poziva podrazumevani konstruktor
bazne klase a tek onda pozvani konstruktor
izvedene klase.

Objekat klase B oznaen sa objB je nasledio atribute a1, a2 i a3 bazne klas


e kao i metodu stampajA. Iako je objekat B
nasledio atribut a2 unutar klase B ne moe da mu se pristupi korienjem operatora
. (taka). To je zbog injenice da je atribut a2 privatan. Atributu a1 se moe
pristupiti preko operatora . (taka) jer je javan. Vrednost atributa a1 se moe
proitati korienjem javne metode stampajA koju je objekat objB nasledio. Takoe
se moe pristupiti i atributu a2 jer je protected, a kao to je p
oznato
protected atribut se za lanove izvedene klase ponaa kao public.

public class B : A

public int b ;

public B()

b= 100; }

[STAThread]

static void Main(string[] args)

B objB = new B();

// objB je nasledio a1,a2 i a3

Console.WriteLine("Pre setovanja vrednosti su : " );

objB.stampajA(); objB.a1 = 11;

objB.a3 = 13;

Console.WriteLine("Posle setovanja vrednosti su : " );

objB.stampajB();

Console.ReadLine();

U primeru je definisana i metoda stampajB karakteristina samo za izvedenu klasu.


Unutar izvedene metode mogue je pozvati metodu osnovne klase korienjem
kljune rei

base
, npr. base.stampajA().

public void stampajB()

// mogu da pozovem funkciju osnovne klase

base.stampajA();

Console.WriteLine(" Vrednost b je {0} ",b);

You might also like