Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

3. diel - Atribúty a metódy v Jave

V minulej lekcii, Prvá objektová aplikácia v Jave - Hello object world, sme si ukázali, ako OOP funguje, vysvetlili sme si pojmy trieda a metóda. Naprogramovali sme si našu prvú objektovú aplikáciu.

V dnešnej lekcii Javy si uvedieme parametre metód, naučíme sa používať atribúty a tým dokončíme našu prvú objektovú aplikáciu. Nakoniec si ukážeme využitie komentárov.

Parametre metódy

Dajme teraz našej metóde greet() parameter name, aby dokázala pozdraviť konkrétneho používateľa. Prejdeme do súboru Greeter.java a takto kód upravme:

public void greet(String name) {
    System.out.printf("Hello user %s%n", name);
}

Vidíme, že syntax parametra metódy je rovnaká, ako syntax premennej. Keby sme chceli parametrov viac, oddeľujeme ich čiarkou. Upravíme teraz našu metódu main() v súbore Main.java:

        Greeter greeter = new Greeter();
        greeter.greet("Carl");
        greeter.greet("Peter");

A výsledok:

Konzolová aplikácia
Hello user Carl
Hello user Peter

Náš kód je teraz v metóde a my ho môžeme jednoducho pomocou parametrov volať znova s rôznymi parametrami. Nemusíme 2x opisovať "Hello user...". Kód budeme odteraz deliť logicky do metód.

Atribúty triedy

Triede pridáme nejaký atribút, ponúka sa atribút text, kde bude uložený text pozdravu. Atribúty sa definujú rovnako ako premenné. Ako pri metódach platí, že pred nich píšeme modifikátor prístupu. Pokiaľ modifikátor nenapíšeme, bude atribút prístupný v rámci daného balíčka (package), ale mimo neho už nie. Na čo presne modifikátory prístupu slúžia si povieme ďalej v kurze. Upravme našu triedu Greeter:

public class Greeter {

    public String text;

    public void greet(String name) {
        System.out.printf("%s %s%n", text, name);
    }

}

Text teraz musíme pochopiteľne nastaviť vytvorené inštancii v Main.java:

        Greeter greeter = new Greeter();
        greeter.text = "Hello user";
        greeter.greet("Carl");
        greeter.greet("Peter");
        greeter.text = "Hello programmer";
        greeter.greet("Richard");

Výsledok:

Konzolová aplikácia
Hello user Carl
Hello user Peter
Hello programmer Richard

Návratová hodnota metódy

Vzhľadom k objektovému návrhu nie je najvhodnejšie, aby si každý objekt ovplyvňoval vstup a výstup, ako sa mu zachce. Pochopiteľne narážame na naše vypisovanie do konzoly. Každý objekt by mal mať určitú kompetenciu a tú by nemal prekračovať. Poverme náš objekt iba zostavením pozdravu a jeho výpis si spracujeme už mimo, v našom prípade v metóde main(). Výhodou takto navrhnutého objektu je vysoká univerzálnosť a znovupoužiteľnosť. Objekt doteraz vie len písať do konzoly, my ho však prispôsobíme tak, aby daná metóda text iba vracala a bolo na jeho príjemcovi, ako s ním naložia. Takto môžeme pozdravy ukladať do súborov, písať na webové stránky alebo ďalej spracovávať.

Keďže chceme, aby metóda vracala hodnotu String, zmeníme jej doterajší typ void na String. Na návrat hodnoty použijeme príkaz return. Príkaz return metódu ukončí a vráti hodnotu. Akýkoľvek kód v tele metódy po príkaze return sa už nevykoná! Upravme obe triedy:

Metóda greet() v súbore Greeter.java:

public String greet(String name) {
    return String.format("%s %s", text, name);
}

Telo metódy main() v súbore Main.java:

        Greeter greeter = new Greeter();
        greeter.text = "Hello user";
        System.out.println(greeter.greet("Carl"));
        System.out.println(greeter.greet("Peter"));
        greeter.text = "Hello programmer";
        System.out.println(greeter.greet("Richard"));

Teraz je náš kód podľa dobrých praktík.

Komentáre

Ešte našu triedu okomentujme, ako sa pristane a patrí. Komentáre budeme písať nad názov triedy a nad názov každého atribútu a metódy. Na ich zápis použijeme /** Description */. Oplatí sa nám to vo chvíli, keď na triede používame nejakú metódu, jej popis sa nám zobrazí v našepkávači. Zdokumentovaná trieda môže vyzerať napr. takto:

/**
 * The class represents the greeter, which serves to greet users
 */
public class Greeter {

    /**
     * Greeting text
     */
    public String text;

    /**
    * Greets the user with a greeting text and their name
    * @param name User name
    * @return Text with greeting
    */
    public String greet(String name) {
        return String.format("%s %s", text, name);
    }

}

Znaky /* začína viacriadkový komentár a končí opačnými znakmi */, syntax popisov sa nazýva Javadoc.

Nad miestom, kde chceme vytvoriť dokumentáciu (napr. nad metódou/atribútom) napíšeme /** a stlačíme klávesu Enter:

Skratka pre vygenerovanie Javadocu - Objektovo orientované programovanie v Jave

Metódu, atribút či triedu tak jednoducho a rýchlo popíšeme. Alternatívne môžeme kliknúť napríklad metódu gr|eet() (| značí kurzor v názve metódy) a stlačíme klávesy Alt a Enter.

Metódy objektu greeter v IntelliJ - Objektovo orientované programovanie v Jave

Kurzorom prídeme na metódu greet() v metóde main() a IDE nám naozaj popisky zobrazia:

Metódy objektu greeter v IntelliJ - Objektovo orientované programovanie v Jave

Pokiaľ budete svoje triedy dobre popisovať, programátorskú dokumentáciu k aplikácii vytvoríte potom jediným kliknutím. Z Javadoc vie IntelliJ generovať dokumentáciu aj vo formáte HTML. Kliknite pravým na triedu v záložke Project a zvolíte z hlavného menu položku Tools -> Generate Javadoc....

Pri metóde greet() nám to vygenerovalo kľúčové slovo @param, za ním hneď názov parametra name. To značí, že nasledujúci popis bude patriť parametru name (popis môže pokračovať aj na ďalšom riadku pre väčšiu prehľadnosť). Metóda môže mať totiž viac parametrov a tým sa zaistí, že bude mať každý parameter vlastný popis. Ďalej nám IDE vygenerovalo ešte kľúčové slovo @return, to značí popis toho, čo nám metóda vráti.

A sme na konci. Nami napísaný program má už nejakú úroveň, aj keď vlastne nič nerobí. Za úlohu máte prerobiť si našu konzolovú kalkulačku do objektov. A teraz už môžeme začať pracovať na našej aréne.

V nasledujúcom cvičení, Riešené úlohy k 3. lekcii OOP v Jave, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 20x (6.33 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Predchádzajúci článok
Prvá objektová aplikácia v Jave - Hello object world
Všetky články v sekcii
Objektovo orientované programovanie v Jave
Preskočiť článok
(neodporúčame)
Riešené úlohy k 3. lekcii OOP v Jave
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
91 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity