Obsah štvrtej lekcie:
- Definovanie metód
- Konštantné premenné
- Polia
- Úloha č. 4
Definovanie metód
Metóda je pomenovaný samostatný blok kódu, slúžiaci na viacnásobné použitie a rozdelenie rozsiahleho kódu na lepšie spracovateľné časti.
- › Návratový typ
Typ hodnoty (hociktorý dátový typ alebo trieda), ktorá bude vrátená metódou. Pokiaľ je tento typ uvedený ako void (prázdny), metóda nevracia žiadnu hodnotu.
- › Názov metódy
Pomenovanie, pod ktorým sa bude k metóde pristupovať cez objekt.
- › Parametre metódy
Do zátvoriek za názvom metódy sa uvádza zoznam parametrov, s ktorými bude metóda pracovať. Pokiaľ metóda neprijíma žiadne parametre, zátvorky sú prázdne.
- › Návratová hodnota
Hodnota, ktorú metóda vracia po svojom ukončení.
Rozdelenie kódu do viacerých metód napomáha k ľahšiemu pochopeniu zámeru a všeobecne môže viesť k prehľadnému kódu. Pri pomenovávaní metód sa volia názvy, ktoré popisujú to, čo daná metóda robí a spravidla sa jej názov začína malým písmenom, pričom každé ďalšie začiatočné písmeno nejakého slova je písané veľkým písmenom.
int nasobenieDvochCisel(int a, int b) { return a * b; }
Konštantné premenné
Premenná označená ako konštantná zabraňuje akejkoľvek zmene jej hodnoty. To znamená, že ak raz inicializujeme premennú na nejakú hodnotu a označíme ju ako konštatnú pomocou kľúčového slova final, tak jej hodnota je nemenná. Akýkoľvek pokus o zmenu hodnoty konštantnej premennej je považovaný za chybu, a teda nemožný. Takúto premennú môžeme inicializovať rovno pri jej deklarácii v triede
alebo ju najskôr deklarujeme a neskôr (v konštruktore alebo v inicializačnom bloku) jej priradíme hodnotu, ktorá už ostane nemennáfinal int mojaPremenna = 10;
final int mojaPremenna; ... mojaPremenna = 10;
Samozrejme, že lepšie je použiť prvý spôsob, kvôli prehľadnosti a jednoduchosti.
Polia
Predstavme si, že by sme chceli vytvoriť 100 premenných toho istého dátového typu. Namiesto toho, aby sme každú premennú samostatne deklarovali,
int prvaPremenna; int druhaPremenna; ... int staPremenna;
vytvoríme pole
int[] mojePole = new int[100];
Pole je pomenovaná sada premenných toho istého typu.
Deklarácia pola
Pole deklarujeme pomocou hranatých zátvoriek:
int[] mojePole; // zatvorky pri datovom type int tvojePole[]; // aj takyto zapis je povoleny
Premenné mojePole a tvojePole sú odkazy na celočíselné polia, ale ešte im nieje priradená žiadna pamäť.
Definícia pola
Akonáhle je premenná pre pole deklarovaná, môže sa definovať pole, na ktoré bude táto premenná odkazovať:
mojePole = new int[100]; // pole 100 celych cisel
Kľúčové slovo new hovorí, že vyhradzujeme novú pamäť pre toto pole a int[100] určuje, aby táto pamäť mala kapacitu pre 100 premenných typu int.
Inicializácia pola
Pole sa môže pri deklarácii inicializovať na požadované hodnoty (tieto hodnoty sú uzavreté v zložených zátvorkách) a zároveň určiť, koľko prvkov bude mať:
int[] mojePole = {2, 8, 15, 22, 34}; // pole s piatimi prvkami
V tomto prípade je veľkosť pola určená počtom počiatočných hodnôt, takže pre definíciu pola nie je potrebná žiadna ďalšia informácia. Pokiaľ sa zadajú inicializačné hodnoty pre pole, tak musia byť uvedené hodnoty všetkých prvkov. Pre nastavenie iba niektorých prvkov pola na určitú hodnotu je nutné použiť priraďovacie príkazy.
int[] mojePole = new int[2]; mojePole[0] = 25; mojePole[1] = 50;
Na určitý prvok pola sa odkazuje pomocou jeho názvu a celého čísla (indexu) v hranatých zátvorkách. Pole sa začína od nulového indexu a posledný prvok má index n&divis;1, kde n je počet prvkov v poli. Vo vyššie uvedenom príklade je vytvorené pole dvoch prvkov, ktoré sú následne nastavené na určitú hodnotu.
Všetky polia, o ktorých bola doteraz reč, sú jednorozmerné. Ďalej existujú dvojrozmerné a viacrozmerné polia. V dvojrozmerných poliach je prechádzanie v smere prvého indexu pri nemennej hodnote druhého indexu často brané ako pristupovanie k stĺpcom pola. Podobne pri nemennej prvej a meniacej sa druhej hodnote sa berie ako pristupovanie k riadkom pola. Výsledkom nasledujúceho zápisu je dvojrozmerné pole 3×3 prvkov (matica).
int[][] mojeDvojrozmernePole = new int[3][3];
Vo väčšine prípadoch sa používajú jedno alebo dvojrozmerné polia, ale dajú sa spraviť aj viacrozmerné polia, ktorých deklarácia pozostáva z troch a viac indexov v hranatých zátvorkách.
Použítie polí
Polia sa používajú tým istým spôsobom ako premenné toho istého dátového typu. Nasledujúci príklad deklaruje a definuje nové pole, ktoré následne naplní v cykle hodnotami a vypíše ich.
public class Test { private int[] mojePole = new int[10]; public static void main(String[] args) { Test mojTest = new Test(); for(int i = 0; i < 10; i++) { mojTest.mojePole[i] = i; System.out.println(mojTest.mojePole[i]); } } }
Vyššie spomínané dvojrozmerné pole 3×3 prvkov by sa dalo naplniť napr. takto:
public class Test { // deklaracia a definicia pola private int[][] mojeDvojrozmernePole = new int[3][3]; public static void main(String[] args) { // vytvorenie objektu Test mojTest = new Test(); // dva cykly pre stlpce a riadky for(int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { // naplnenie prvku pola hodnotou mojTest.mojeDvojrozmernePole[i][j] = 0; // vypis hodnoty pola System.out.print(mojTest.mojeDvojrozmernePole[i][j]); } // novy riadok System.out.println(); } } }
Dodatočné informácie k poliam
› http://www.linuxsoft.cz/article.php?id_article=384
› http://www.linuxsoft.cz/article.php?id_article=693
Úloha č. 4
Napíšte metódu, ktorá bude prijímať dve celočíselné hodnoty, pomocou ktorých vypíše na obrazovku dvojrozmerné pole.