4.1 Metódy a operátory

Metódy

Metóda patrí medzi najčastejšie používané nástroje takmer každého programovacieho jazyka. Predstavuje samostatnú časť programu vykonávajúcu nejakú špecializovanú funkciu. Metódy sú umiestnené mimo hlavný program, ktorý je ale tiež vlastne metódou. Metódu väčšinou voláme so zoznamom parametrov, ktorým odovzdávame hodnoty potrebné pre výpočet. Metóda väčšinou vracia nejaký výsledok. Existujú aj metódy, ktorým neodovzdávame žiadne údaje alebo naopak žiadne výsledky nevracajú. Výhodou používania metód je zjednodušenie štruktúry programu, či možnosť opakovaného vykonávania výpočtov. Nemusíme teda písať znovu celý kód, stačí zavolať príslušnú metódu. [14]


Použitie metód v programoch v Jave:

Deklarácia metódy v jazyku Java má nasledovný tvar:


modifikátor typ_návratovej_hodnoty meno_metódy (deklarácia_premenných)
  {
    telo_metódy
  }


Návratové hodnoty metód sú vždy typu typ_návratovej_hodnoty. Hodnota je z funkcie (metódy) predaná pomocou príkazu return (hodnota).


Príklad deklarácie metódy pre zistenie väčšieho z dvoch prvkov:


int maximum (int a, int b)
  {
    if (a > b)
	return a;
    else
	return b;
  }


Volanie metódy v Jave sa uskutočňuje príkazom:


premenná = meno_metódy (argumenty);


Príklad volania metódy maximum:


výsledok = maximum (10, 20); // funkcia vráti hodnotu 20
[12]



Rozsah platnosti metódy:

Rozsah platnosti metódy, definuje oblasť programu, v ktorej je metóda prístupná (je ju možné volať). Ako náhle vytvoríme v Jave metódu, je táto metóda prístupná iba v triede, kde bola definovaná. To znamená, že program nemôže volať metódy z inej triedy.

Rozsah platnosti funkcií je možné meniť (určovať) pomocou modifikátorov:

  • public – metóda je viditeľná všade, kde je viditeľná trieda, v ktorej je metóda definovaná
  • private – metóda je viditeľná iba vo svojej triede
  • protected – metóda je viditeľná iba vo svojej triede a v jej podtriedach alebo v danom balíku [12]

Operátory

Manipuláciu s premennými robíme pomocou operátorov. Delíme ich do niekoľkých skupín:


Priradenie hodnoty do premennej dosiahneme pomocou operátora =.


int a; int b;
a = 6;
b = a + 5;
[13]

Matematické operátory pre prácu s číslami sú štandardné, teda: +, -, *, /% (modulo, t.j. zvyšok po delení). Napríklad:


a = a * b;


Dá sa použiť aj skrátený formát pre priradenie v tvare: premenná += hodnota; namiesto premenná = premenná + hodnota; [13]


Častejšie než skrátený formát sa používajú operátory inkrementácie (++) a dekrementácie (--). V spojení s premennými číselných typov majú význam – pripočítaj, resp. odpočítaj 1.


a++; // zodpovedá a = a + 1;



Používajú sa postfixovo (a++), ale niekedy aj prefixovo (++a). Rozdiel sa prejaví pokiaľ v jednom príkaze súčasne vykonávame s premennou inú operáciu, prefixový (++a) sa vykoná ešte pred touto operáciou, postfixový až po nej.


a = 1; b = a++; // b je 1,a je 2

a = 1; b = ++a; // b je 2,a je 2

[13]



Relačné operátory porovnávajú hodnoty primitívnych premenných. Patria medzi ne < (menší než), > (väčší než), <=, >= (menší, či väčší alebo rovný), == (rovná sa), != (nerovná sa). Pre porovnanie sa používa znak == (dve rovná sa).


if (a == 4) System.out.println("OK") // ak hodnota premennej a = 4, vypíš OK
[13]



Logické operátory spájajú pravdivostné výsledky viacerých relačných operácií porovnania. && (a, súčasne), || (alebo), ! (negácia).


if (a == 0 && b > 5) a = 1 // ak a je 0 a zároveň b > 5, bude sa a rovnať 1
[13]



Špeciálnu skupinu tvoria bitové operátory, ktoré dokážu porovnávať (&, |, ^, ~) , alebo posúvať (<<, >>) jednotlivé bity v bytoch premenných. [13]


Pretypovanie alebo zmenu dátového typu (napr. pri priradení do premennej iného primitívneho typu) vykonáva Java väčšinou automaticky. Iba v určitých prípadoch je potrebné použiť operátor pretypovanie (výstupný typ v zátvorke) pred premennou.


int i = 100;
long l = (long)i;
[13]



Niekedy sa operátory môžu takzvane spájať a celý ich zápis sa tým zjednoduší. Nasledujúci obrázok ukazuje v prvom stĺpci znak operátora. V druhom stĺpci jeho použitie v programe v treťom stĺpci sa nachádza ekvivalent zápisu, ktorý veľmi jasne vysvetľuje, čo daný operátor znamená.


Úlohy na precvičenie:

Definuj objekty v OOP:


Na čo slúži metóda a ako ju definujeme v Jave?


Aké hodnoty budú mať premenné a, b po vykonaní: a = 10; b = ++a; ?


Ako funguje "premenná -= x" ?