You are on page 1of 43

OOP – C#

 STATIC
 PROPERTIJI
 INDEKSERI
 OPERATORI I PREDEFINISANJE OPERATORA
OOP – C#

Ključna riječ static se može primjeniti na klasu,


promjenjive, metode, propertije, operatore,
konstruktore i drugo.
OOP – C#
Statička klasa je u osnovi isto što i klasa koja nije
statička ali sa tom razlikom što se statička klasa ne
može instancirati.
Drugim riječima, ne može se koristiti ključna riječ new
za stvaranje promenjive tipa klase.
Statička klasa, treba da sadrži samo statičke članove
klase (metode, svojsvta, operatore,...), jer ne bi bilo
smisla definisati statičku klasu sa nestatičkim
članovima.
OOP – C#
Kako definisati statičku klasu?
static class Ime_klase
{
///
}

Potrebno je dodati ključnu riječ static ispred


definicije klase.
OOP – C#
Statičko polje klase predstavlja polje koje je
zajedničko za sve objekte (instance) te klase.

Statičko polje postoji iako nije kreiran ni jedan


objekat.
OOP – C#
Kako definisati statičko polje klase?
class Student
{
static int br_studenata;
///
}

Potrebno je dodati ključnu riječ static ispred


polja/svojstva klase.
OOP – C#
Statička metoda, propertij neke klase, su takođe
zajednički za sve objekte te klase. Potrebno je voditi
računa da statičke metode i propertiji mogu samo
da pristupaju ostalim statičkim članovima klase.
OOP – C#

Kako definisati statičku metodu/propertij klase?

Potrebno je dodati ključnu riječ static ispred


modifikatora vidljivosti metode/propertija.
OOP – C#
Način pristupa statičkim članovima klase:

static void Main(string[] args)


{ int koef = 5, cijena;
cijena = Automobil.IzracunajOsiguranje(koef);
Automobil.Koeficijent = koef + 3 ;
}
OOP – C#
Način pristupa statičkim članovima klase:
Statička metoda
klase Automobil

static void Main(string[] args)


{ int koef = 5, cijena;
cijena = Automobil.IzracunajOsiguranje(koef);
Automobil.Koeficijent = koef + 3 ;
}
Statički propertij klase
Automobil
OOP – C#
Statički konstruktor se koristi za inicijalizaciju bilo kog
statičkog podatka ili za izvođenje određene akcije
koja se mora izvršiti samo jednom.

Poziva se automatski prije nego što se kreira prva


instanca ili se referenciraju svi statički članovi.
OOP – C#
Svojstva ili preciznije propertiji su članovi strukture,
klase, interfejsa koji obezbeđuju fleksibilan
mehanizam za čitanje, pisanje ili izračunavanje
vrijednosti nekog polja.

Propertiji liče na polja ali se ponašaju kao metode.


Propertiji posebne metode koje zovemo i Accessors –
pristupne metode.
OOP – C#
Propertije možemo koristiti samo za čitanje, samo za
pisanje, i za čitanje i pisanje. Kraće pisanje propertija
nazivamo auto propertiji.

Razlikujemo tipove propertija:


- Read and Write
- Read only
- Write only
OOP – C#
Sintaksa propertija:
vidljivosti tip_podatka Ime_propertija
{
get
{
return properti_vrijednost;
}
set
{
podešavanje_svojsta = value;
}
}
OOP – C#
Sintaksa propertija:
vidljivosti tip_podatka Ime_propertija
{
get
{
Vidljivost svojstva:
return properti_vrijednost;
public, protected,
private }
set
{
podešavanje_svojsta = value;
}
}
OOP – C#
Sintaksa propertija:
vidljivosti tip_podatka Ime_propertija Metoda za čitanje
{ READ
get Vraćanje vrijednosti
{
return properti_vrijednost;
}
set
{
podešavanje_svojsta = value;
}
}
OOP – C#
Sintaksa propertija:
vidljivosti tip_podatka Ime_propertija
{
get
{
return properti_vrijednost;
}
Metoda za upisvanje
set
{
WRITE
Postavljanje
podešavanje_svojsta = value; vrijednosti sa value
}
}
OOP – C#
Propertiji sadrži dvije metode:
- get (Read)
- set (Write)

Izostavljanjem get / set metode, propertij postaje


WriteOnly / ReadOnly, a ukoliko nijedna metoda nije
izostavljena, onda je ReadAndWrite propertij.
OOP – C#
Ukoliko dodjeljujemo neku vrijednost propertiju,ta
vrijednost mora biti tipa propertija. U slučaju dodjele
poziva se metoda SET, a kao parametar metode
koristi se value, čija je vrijednost jednaka vrijednosti
koju dodjeljujemo propertiju.

Ukoliko želimo čitati vrijednost propertija, tada se


poziva metoda GET, koja vraća vrijednost tipa
propertija.
OOP – C#
Podrazumjevana vidljivost metoda propertija (get i
set) je kao i vidljivost propertija kojeg metode čine.
Npr. ukoliko je vidljivost propertija definisan sa
public, get i set metode su takođe public.

Moguća je izmjena vidljivosti get i set metoda, ali


moramo voditi računa da vidljivost metoda nije
veća od vidljivosti propertija, tj. definisane vidljivosti
metoda moraju biti manje vidljive od propertija. (Npr.
properti private - metode propertija public/private)
OOP – C#
Primjer:
private string password;
public string Password
{
get
{
return this.password;
}
private set
{
this.password = value;
}
}
OOP – C#
Sintaksa auto propertija:

public tip_podatka ime_propertija


{ get; set; }
OOP – C#
Sintaksa auto propertija:

public tip_podatka ime_propertija


{ get; set; }

Tijela get i set metoda


su izostavljena.
OOP – C#
Podrazumjevana vrijednost auto propertija je
podrazumjevana vrijednost tipa podatka kojeg je
properti.
Npr za:

public int BrojGodina { get; set; }

Podrazumjenava vrijednost će biti 0 (nula), jer je za


int tip podatka 0 (nula).
OOP – C#
Moguće je auto propertiju podesiti podrazumjevanu
vrijednost na sledeći način (važi za verzije od C#6.0
pa nadalje (VS2015 - ...)):

public int BrojGodina { get; set; } = 20;


public string Ime { get; set; } = "N.N.";
OOP – C#
Indekser je jedna posebna vrsta propertija koja
omogućava da instanca klase tretirao kao niz.
Omogućavaju da objektu pristupa kao da je u
pitanju niz.
Kada se definiše indekser za klasu, klasa se ponaša
slično virtuelnom nizu. Tada možete pristupiti instanci
ove klase pomoću operatora pristupa nizu ([ ]).
OOP – C#
Sintaksa indeksera:
vidljivost tip_elementa this[tip index]
{
get
{
// vraćanje vrijednosti
}
set
{
// postavljanje vrijednosti
}
}
OOP – C#
Sintaksa indeksera:
vidljivost tip_elementa this[tip index]
{
get
{
Vidljivost indeksera:
public, protected, // vraćanje vrijednosti
private }
set
{
// postavljanje vrijednosti
}
}
OOP – C#
Sintaksa indeksera:
vidljivost tip_elementa this[tip index]
{
get
{
// vraćanje vrijednosti
} Tip elementa koji će
se dobijati pomoću
set get metode, i
{ postavljati pomoću set
// postavljanje vrijednosti metode.
}
}
OOP – C#
Sintaksa indeksera:
vidljivost tip_elementa this[tip index]
{
get
{
// vraćanje vrijednosti
} Tip indeksa može
biti bilo kojeg
set tipa (int, string, ...)
{
// postavljanje vrijednosti
}
}
OOP – C#
Sintaksa indeksera:
vidljivost tip_elementa this[tip index]
{
get
{
// vraćanje vrijednosti
} Metoda GET kao i
kod propertija,
set služi za dobijanje
{ vrijednosti.
// postavljanje vrijednosti
}
}
OOP – C#
Sintaksa indeksera:
vidljivost tip_elementa this[tip index]
{
get
{
// vraćanje vrijednosti
} Metoda SET kao i
kod propertija, služi
set za postavljanje
{ vrijednosti.
// postavljanje vrijednosti
}
}
OOP – C#
Operator je simbol koji govori kompajleru da izvodi
specifične matematičke ili logičke manipulacije. C# ima
bogat skup ugrađenih operatora i to su:

 Aritmetički operatori
 Operatori jednakosti
 Logički operatori
 Operatori za rad sa bitovima
 Operatori pridruživanja
 Ternarni operatori
 I drugi...
OOP – C#
Operatori u C#
OOP – C#
Predefinisanje operatora u C#
C# kao i jezik C++ ostavlja mogućnost programeru,
da predefiniše većinu ugrađenih operatora za
korisnički definisanim tipovima (klasame i strukture).

Moguće je samo određeni tip operatora


predefinisati.
OOP – C#
Operatori koji se mogu predefinisati:

 Unarni ( +, -, !, ~, ++, --, true, false) (jedan operand)


 Binarni (+, -, *, /, %, &, |, ^, <<, >>) (dva operanda)
 Operatori jednakosti( ==, !=, <, >, <=, >=) (dva
operanda)
OOP – C#
Specifično za predefinisanje operatora jednakosti je
to da postoje grupe operatora, tj. ukoliko
predefinišemo jedan operator jednakosti, on ima
svoj par, te je isti takođe potrebno predefinisati.
Npr.
Predefinisali smo operator „<”. Kompajler će prijavti
grešku, jer će od nas tražiti da predefinišemo
operator „>”.
OOP – C#
Sintaksa za predefinisanje operatora:

public static povratna_vrijednost operator op (arg)


{
// izraz
}
OOP – C#
Obično je povratni
Sintaksa za predefinisanje operatora: tip podatka za koji
predefinišemo
operator

public static povratna_vrijednost operator op (arg)


{
// izraz
}
Operator ( unarni, binarni, jednakosti..)

Argumenti, u zavisnosti od tipa


operatora, može biti jedan argument
(za unarne) i dva argumenta (za
binarne i operatore jednakosti)
OOP – C#
Obično je povratni
Predefinisanje unarnog operatora: tip podatka za koji
predefinišemo
operator

public static povratna_vrijednost operator op (Tip t)


{
// izraz
} Unarni operator zahtjeva samo jedan
Unarni operator (+,-,*,/, ~, ++, --, true,
operand, iz tih razloga, samo jedan
false)
argument je potreban.
OOP – C#
Obično je povratni
Predefinisanje binarnog i operatora jednkasoti: tip podatka za koji
predefinišemo
operator
public static povratna_vrijednost operator op (Tip t1, Tip t2)
{
// izraz
} Binarni operator i operator jednakosti
Binarni operator, operator jednakosti
zahtjeva dva operanda, iz tih razloga,
dva argumenta.
OOP – C#

C# omogućuje predefinisanje operatora implicitne i


eksplicitne (kastovanje) konverzije.
OOP – C#
Sintaksa:

public static explicit/implicit operator tip_rez_konv(Tip_konv t)


{
return //tip_konverzije;
}

You might also like