11-Preklapanje Operatora

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 17

Preklapanje operatora

(operator overloading)
Operatori
 Po broju operanada, postoje tri tipa operatora u C#-u:
Unarni – izvršavaju se nad jednim operatorom
Binarni – izvršavaju se nad dva operatora
Trenarni – zahtevaju tri operatora

 Po vrsti oreracije koji izvršavaju C# ima različite operatore:


matematičke operatore
operatore dodele
operatore poređenja
logičke operatore
operatore za rad sa bitovima
Matematički operatori
Operator Kategorija Primer izraza Rezultat
var1 = var2 + var1 je dodeljena vrednost zbira
+ binarni
var3; var2 i var3.
var1 = var2 – var1 je dodeljena vrednost razlike
- binarni
var3; var2 i var3.
var1 je dodeljena vrednost proizvoda
var1 = var2 *
* binarni
var3;
var2 i var3.
var1 je dodeljena vrednost količnika
/ binarni var1 = var2 / var3;
var2 i var3.
var1 = var2 % var1 je dodeljena vrednost ostatka
% binarni
var3; pri deljenju var2 sa var3.
var1 je dodeljena vrednost
+ unarni var1 = +var2; promenljive
var2
var1 je dodeljena vrednost
- unarni var1 = -var2 promenljive
var2 pomnožene sa -1
Matematički operatori
 Operator + se može primeniti i nad operandima koji nisu
numeričkog tipa. Npr:

Sabiranje dva karaktera (char) podatka rezultira sabiranjem


njihovih numeričkih ekvivalenata.

Operator + upotrebljen nad dva stringa, vrši konkatenaciju


(nadovezivanje) ta dva stringa u jedan.

“Dobar” + “Dan” = “DobarDan”


Matematički operatori
 Operatori inkrementiranja i dekrementiranja takođe spadaju u
matematičke operatore:

Operator Kategorija Primer izraza Rezultat


Unarni var2 je inkrementirana za 1.
++ var1 = ++var2;
(prefiksni) var1 je dodeljena vrednost var2.
Unarni var2 je dekrementirana za 1.
– var1 = --var2;
(prefiksni) var1 je dodeljena vrednost var2.
Unarni var1 je dodeljena vrednost var2.
++ var1 = var2++;
(postfiksni) var2 je inkrementirana za 1.
Unarni var1 je dodeljena vrednost var2.
– var1 = var2--;
(postfiksni) var2 je dekrementirana za 1.
Operatori dodele
 Operatori dodele menjaju vrednost operanda sa leve strane i dodeljuju
mu vrednost operanda (izraza) sa desne strane.

Operator Primer izraza Rezultat


= var1 = var2; var1 dobija vrednost var2.
var1 dobija vrednost zbira var1 + var2
+= var1 += var2;
var1=var1+var2
var1 dobija vrednost razlike var1 - var2
-= var1 -= var2;
var1=var1-var2
var1 dobija vrednost proizvoda var1 * var2
*= var1 *= var2;
var1=var1*var2
var1 dobija vrednost količnika var1 / var2
/= var1 /= var2;
var1=var1/var2
var1 dobija vrednost ostatka deljenja var1 sa
%= var1 %= var2; var2
var1=var1%var2
Operatori poređenja
 Operatori poređenja upoređuju vrednosti ili reference (adrese)
promenljivih i vraćaju logički (bool) rezultat – true ili false.
 (promenljiva var1 je logičkog tipa, var2 i var3 su numeričkog tipa)
Oper. Kat. Primer izraza Rezultat
bool var1 = var2 = = var1 dobija vrednost true ako je var2
== binarni
var3 jednako sa var3, u suprotnom false
var1 dobija vrednost true ako je var2
!= binarni bool var1 = var2 != var3
raszličito od var3, u suprotnom false
var1 dobija vrednost true ako je var2
< binarni bool var1 = var2 < var3
manje od var3, u suprotnom false
var1 dobija vrednost true ako je var2
> binarni bool var1 = var2 > var3
veće od var3, u suprotnom false
var1 dobija vrednost true ako je var2
bool var1 = var2 <=
<= binarni manje ili jednako sa var3, u suprotnom
var3
false
var1 dobija vrednost true ako je var2
bool var1 = var2 >=
>= binarni veće ili jednako sa var3, u suprotnom
var3
false
Logički operatori
 Logički operatori se izvršavaju nad logičkim operandima i daju
logički rezultat.
 (promenljive var1, var2 i var3 su logičkog tipa)

Oper. Kat. Primer izraza Rezultat

&& binarni var1 = var2 && var3; Logičko I

|| binarni var1 = var2 || var3; Logičko ILI

! unarni var1 = !var1; Logičko NE


Operator overload
 Operator + primenjen nad numeričkim vrednostima, vrši operaciju
sabiranja tih numeričkih vrednosti i vraća numerički rezultat
Operator overloading
 Operator overloading
dozvoljava da se prilagodi
ponašanje operatora u C#-u
u zavisnosti od tipa
operanada.

 U primeru na slici,
firstNumber i
secondNumber su objekti, a
ne brojevi i stoga se ne
mogu sabirati!!!
Operator overloading
 Morali bi da pišemo:
Overload Binarnih Operatora
 Drugi način je da u klasi MyNumber overload-ujemo, tj. predefinišemo
operator +

 Sintaksa overload-ovanja operatora:

public static povratnaVrednost operator simbolOperatora(type op1, type op2)


{
//kod
return rezultat;
}
Overload Binarnih Operatora
 Drugi način je da u klasi MyNumber overload-ujemo, tj. predefinišemo operator +
 Sintaksa overload-ovanja operatora:

public static povratnaVrednost operator simbolOperatora(type op1, type op2)


{
//kod
return rezultat;
}

public static MyNumber operator +(MyNumber n1, MyNumber n2)


{
MyNumber result = new MyNumber();
result.Number = n1.Number + n2.Number;
return result;
}
Overload Binarnih Operatora
Overload Binarnih Operatora
 Metod mora da bude static jer se odnosi na sve članove klase.
 Mora biti i javan da bi mu se pristupilo izvan klase.
 Binarni operator zahteva dva operanda, pa zato metod za overload ima
dva parametra.
 U metodu deklariše se još jedan objekat koji će sadržati rezultat
 Ne mogu svi operatori da se overload-uju.
 Npr: +=
kada se overload-uje +, automatski će se promena odraziti i na +=.
 Neki operatori moraju da se overload-uju u parovima.
Ne možemo da overload-ujemo samo <, već mora istovremeno i >
Overload Binarnih Operatora
 Neki operatori moraju da se overload-uju u parovima.
Ne možemo da overload-ujemo samo <, već mora istovremeno i >
Overload Unarnih Operatora
 Metod zahteva jedan parametar jer unarni operator ima jedan
operand.

You might also like