You are on page 1of 7

Osnove C# programa

Ispisane linije koda predstavljaju strukturu C# aplikacije.

using System;
class HelloWorld
{
public static void Main()
{
System.Console.WriteLine("Hello, World");
}
}

Ključna reč using referiše .NET Frejmvork(Framework) biblioteku klasa. Izvršavanje koda počinje od Main metode. Klase u .NET
frejmvorku grupisane su u tzv. namespace-ove ili prostore imena. Prostor imena System obezbeđuje pristup resursima sistema u kome
se aplikacija izvršava.

Formatiranje koda u C#

Svaka C# aplikacija ima Main metodu definisanu u jednoj od svojih klasa. Main metoda je statička metoda što znači da ne pripada
objektima klase nego samoj klasi. Klasa se ne mora instancirati – da bi se pozvala Main metoda, drugim rečima 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 određeni
segment koda radi ili čemu služe pojedine promenljive, onda se koristi znak // ukoliko se želi komentar u jednoj liniji. Komentar koji
treba da se proteže na više linija počinje sa kombinacijom znakova /* a završava se sa kombinacijom */. Kompajler ignoriše komentar.

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 izvršavanja metode je prikazivanje teksta na
ekranu i prelazak kursora u novi red. Treba napomenuti da se klasa Console koristi samo kod tzv. konzolnih aplikacija kod kojih se
rezultat izvršavanja aplikacije prikazuje u konzoli tj. DOS promptu Windows operativnog sistema. Pored konzolnih aplikacija primenom
okruženja Microsoft Visual Studio.NET moguće 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 promenljivih. Promenljive mogu čuvati različite tipove podataka. Kada se promenljiva deklariše
treba imati na umu koju vrstu podataka će ona čuvati. Programski jezik C# i .NET frejmvork definišu tzv. sistemske ili ugrađene tipove
podataka. Često se za sistemske tipove podataka koristi i naziv “predefinisani”. Naravno moguće je definisati i sopstvene tipove
podataka.
Kontrola toka

Naredba if dozvoljava kontrolu toka izvršavanja aplikacije u zavisnosti od vrednosti logičkog izraza koji se testira. Postoji tri osnovne
verzije korišćenja 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 logički uslov označen oznakom “uslov”. Kod osnovne verzije if naredbe, ukoliko je logički
iskaz tačan tj. ima vrednost true izvršava se naredba 1. Umesto naredbe 1 može se zahtevati izvršavanje bloka naredbi koje se u tom
slučaju stavljaju između vitičastih zagrada. U drugoj i trećoj verziji predstavljena je sintaksa naredbe if else. Ako je logički uslov tačan
izvršava se naredba naredba1 a ukoliko nije izvršava se naredba naredba2. Slično je sa trećim primerom stim što se u ovom slučaju
izvršavaju odgovarajući blokovi naredbi u zavisnosti od toga da li je logočki uslov koji se testira tačan ili nije. U nastavku predstavljena
je i struktura naredbe if else if.

if (uslov1)
{
B1;
}
else if (uslov2)
{
B2;
}
else
{
B3;
}

Ako je uslov uslov1 istinit izvršava se blok naredbi simbolično označen sa B1, ukoliko uslov1 nije istinit proverava se da li je uslov2
istinit, ako jeste izvršava se blok naredbi B2. Ukoliko ni jedan ni drugi uslov nije istinit izvršava 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;
}

Izvršavanje switch naredbe sastoji se iz nekoliko koraka:


1. Izračunava se promenljiva broj
2. Ako je vrednost promenljive broj jednak jednoj od konstantnih vrednosti u case rečenici izvršava se kod koji se nalazi iza te
case konstante
3. Ako ni jedna od vrednosti case labela nije jednaka vrednosti promenljive broj izvršava se default case labela

U okviru svakog case bloka nalazi se break naredba da bi se izvršavanje koda zaustavilo a ne prešlo na sledeći 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 ključna reč class ispred imena klase. Preporuka je da ime klase počinje velikim slovom. Ako se ime
klase sastoji iz više reči tada svaka sledeća reč počinje velikim slovom. Klasa je korisnički definisani tip.

Instanciranje klase, tj. kreiranje objekata klase vrši se upotrebom službene reči new. Funkcija koja se nalazi iza ključne reči new naziva
se podrazumevani konstruktor i kao što joj samo ime kaže služi za konstruisanje objekata. Atributima objekta pristupa se preko
operatora .(“tačka”). Ovde je kreiran objekat označen 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 definiše tip podataka koji vraća ili ukoliko metoda ne vraća ništa onda
se povratni tip metode označava sa void. Ukolika metoda vrća neku vrednost onda se unutar tela metode koristi službena reč return.
Svaka metoda ima svoje ime. Uobičajeno da ime metode počinje malim slovom. Metoda može imati listu parametara ili može biti bez
parametara. Metoda prikazana u primeru ima imepodizanjeNovca, ima jedan ulzni parametar tipa double i vraća 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 računu se samnjuje za podignuti iznos.
Primer klase

Data je definicija klase AutomatNovca koja služi za rad sa nekim tekućim računom. Klasa ima dva atributa imePrezime i stanje, gde
atribut stanje predstavlja stanje na računu korisnika čije je ime i prezime sadržano u atributu imePrezime. Klasa ima dve metode uplata
i podizanjeNovca. Svakom uplatom povećava se stanje na računu korisnika za određeni iznos a svakim podizanjem novca vrednost na
računu 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 korišćenjem operatora .(“tačka”).
Ovo važi za tzv. javne metode klase, odnosno metode uz koje stoji službena reč public. Ovde je kreiran tekući račun tj. objekat klase
AutomatNovca za korisnika pod imenom “Mika Mikic” . Zatim su izvršene dve uplate na račun korisnika pozivanjem metode uplata.
Obratiti pažnju da metoda uplata ima ulazni parametar tipa double i da ne vraća nikakvu vrednost. Na kraju je izvršeno jedno podizanje
novca korišćenjem metode podizanjeNovca. Ova metoda ima ulazni parametar tipa double i vraća rezultat tipa double. Rezultat
izvršavanja metode je prihvaćen 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);
Nasleđivanje

Nasleđivanje je jedan od osnovnih koncepata objektno orijentisanog programiranja. Klasa koja je izvedena iz osnovne klase nasleđuje
sve atribute i metode te klase. Za osnovnu klasu se u literaturi često sreće i naziv bazna klasa, natklasa ili superklasa. Često korišćeni
termin za izvedenu klasu je podklasa. U programskom jeziku C# izvedena klasa može da nasledi samo jednu baznu klasu. Koncept
višestrukog nasleđivanja prisutan u jeziku C++ je izbačen. Da bi se neka klasa definisala kao izvedena klasa neke druge klase koristi se
operator: (“dve tačke”). Oznaka public class B : A označava da je klasa B izvedena iz klase A. Posle ovakve oznake dolazi definicija
tela klase izvedene klase B unutar litičastih zagrada. U nekim situacijama će korisnik želeti da zabrani nasleđivanje svoje klase. To se
postiže korišćenjem ključne reči final. Klasa koja u svojoj definiciji ima reč final ne može se naslediti.

Osnovna klasa
Da bi se ilustrovao koncept nasleđivanja u nastavku je definisana klasa A koja će se kasnije iskoristiti kao bazna klasa. Radi ilustracije
prava pristupa i uticaja na nasleđivanje, u klasi su definisana 3 atributa od kojih je jedan public, drugi private, a treći protected. U
konstruktoru klase se ovi atributi označeni sa a1, a2 i a3 inicijalizuju na vrednosti 1, 2 i 3 respektivno. Klasa ima metodu stampajA()
koja služi 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 označen sa b. Konstruktor klase B inicijalizuje atribut b na vrednost 100. Prilikom konstruisanja objekta izvedene
klase ukoliko se eksplicitno ne naznači najpre se poziva podrazumevani konstruktor bazne klase a tek onda pozvani konstruktor
izvedene klase. Objekat klase B označen sa objB je nasledio atribute a1, a2 i a3 bazne klase kao i metodu stampajA. Iako je objekat B
nasledio atribut a2 unutar klase B ne može da mu se pristupi korišćenjem operatora . (“tačka”). To je zbog činjenice da je atribut a2
privatan. Atributu a1 se može pristupiti preko operatora . (“tačka”) jer je javan. Vrednost atributa a1 se može pročitati korišćenjem
javne metode stampajA koju je objekat objB nasledio. Takođe se može pristupiti i atributu a2 jer je protected, a kao što je poznato
protected atribut se za članove izvedene klase ponaša 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 karakteristična samo za izvedenu klasu. Unutar izvedene metode moguće je pozvati metodu
osnovne klase korišćenjem ključne reči 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