Lekce 3 - Atributy a metody v Javě
V minulé lekci, První objektová aplikace v Javě - Hello object world, jsme si ukázali jak OOP funguje, vysvětlili jsme si pojmy třída a metoda. Naprogramovali jsme si naši první objektovou aplikaci.
V dnešní lekci Javy si uvedeme parametry metod, naučíme se používat atributy a tím dokončíme naši první objektovou aplikaci. Nakonec si ukážeme využití komentářů.
Parametry metody
Dejme nyní naší metodě pozdrav() parametr
jmeno, aby dokázala pozdravit konkrétního uživatele. Přejdeme
do souboru Zdravic.java a takto kód upravme:
public void pozdrav(String jmeno) { System.out.printf("Ahoj uživateli %s%n", jmeno); }
Vidíme, že syntaxe parametru metody je stejná, jako syntaxe proměnné.
Kdybychom chtěli parametrů více, oddělujeme je čárkou. Upravíme nyní
naši metodu main() v souboru Main.java:
{JAVA_OOP} {JAVA_MAIN_BLOCK} Zdravic zdravic = new Zdravic(); zdravic.pozdrav("Karel"); zdravic.pozdrav("Petr"); {/JAVA_MAIN_BLOCK} {/JAVA_OOP}{JAVA_OOP} public class Zdravic { public void pozdrav(String jmeno) { System.out.printf("Ahoj uživateli %s%n", jmeno); } } {/JAVA_OOP}
A výsledek:
Konzolová aplikace
Ahoj uživateli Karel
Ahoj uživateli Petr
Náš kód je nyní v metodě a my ho můžeme jednoduše pomocí parametrů volat znovu s různými parametry. Nemusíme 2x opisovat "Ahoj uživateli...". Kód budeme odteď dělit logicky do metod.
Atributy třídy
Třídě přidáme nějaký atribut, nabízí se atribut text,
kde bude uložen text pozdravu. Atributy se definují stejně, jako proměnné.
Jako u metod platí, že před ně píšeme modifikátor přístupu. Pokud
modifikátor nenapíšeme, bude atribut přístupný v rámci daného balíčku
(package), ale mimo něj už nikoliv. K čemu přesně
modifikátory přístupu slouží si řekneme dále v kurzu. Upravme naši
třídu Zdravic:
public class Zdravic { public String text; public void pozdrav(String jmeno) { System.out.printf("%s %s%n", text, jmeno); } }
Text nyní musíme pochopitelně nastavit vytvořené instanci v
Main.java:
{JAVA_OOP} {JAVA_MAIN_BLOCK} Zdravic zdravic = new Zdravic(); zdravic.text = "Ahoj uživateli"; zdravic.pozdrav("Karel"); zdravic.pozdrav("Petr"); zdravic.text = "Vítám tě tu programátore"; zdravic.pozdrav("Richard"); {/JAVA_MAIN_BLOCK} {/JAVA_OOP}{JAVA_OOP} public class Zdravic { public String text; public void pozdrav(String jmeno) { System.out.printf("%s %s%n", text, jmeno); } } {/JAVA_OOP}
Výsledek:
Konzolová aplikace
Ahoj uživateli Karel
Ahoj uživateli Petr
Vítám tě tu programátore Richard
Návratová hodnota metody
Vzhledem k objektovému návrhu není nejvhodnější, aby si každý objekt
ovlivňoval vstup a výstup, jak se mu zachce. Pochopitelně narážíme na
naše vypisování do konzole. Každý objekt by měl mít určitou kompetenci a
tu by neměl překračovat. Pověřme náš objekt pouze sestavením pozdravu a
jeho výpis si zpracujeme již mimo, v našem případě v metodě
main(). Výhodou takto navrženého objektu je vysoká
univerzálnost a znovupoužitelnost. Objekt doposud umí jen psát do konzole,
my ho však přizpůsobíme tak, aby daná metoda text pouze vracela a bylo na
jeho příjemci, jak s ním naloží. Takto můžeme pozdravy ukládat do
souborů, psát na webové stránky nebo dále zpracovávat.
Jelikož chceme, aby metoda vracela hodnotu String, změníme
její dosavadní typ void na String. K návratu
hodnoty použijeme příkaz return. Příkaz return
metodu ukončí a navrátí hodnotu. Jakýkoli kód v těle metody po příkazu
return se již neprovede! Upravme obě třídy:
Metoda pozdrav() v souboru Zdravic.java:
public String pozdrav(String jmeno) { return String.format("%s %s", text, jmeno); }
Tělo metody main() v souboru Main.java:
{JAVA_OOP} {JAVA_MAIN_BLOCK} Zdravic zdravic = new Zdravic(); zdravic.text = "Ahoj uživateli"; System.out.println(zdravic.pozdrav("Karel")); System.out.println(zdravic.pozdrav("Petr")); zdravic.text = "Vítám tě tu programátore"; System.out.println(zdravic.pozdrav("Richard")); {/JAVA_MAIN_BLOCK} {/JAVA_OOP}{JAVA_OOP} public class Zdravic { public String text; public String pozdrav(String jmeno) { return String.format("%s %s", text, jmeno); } } {/JAVA_OOP}
Nyní je náš kód dle dobrých praktik.
Komentáře
Ještě naši třídu okomentujme, jak se sluší a patří. Komentáře
budeme psát nad název třídy a nad název každého atributu a metody. K
jejich zápisu použijeme /** Popisek */. Vyplatí se nám
to ve chvíli, když na třídě používáme nějakou metodu, její popis se
nám zobrazí v našeptávači. Zdokumentovaná třída může vypadat např.
takto:
/** * Třída reprezentuje zdravič, který slouží ke zdravení uživatelů */ public class Zdravic { /** * Text pozdravu */ public String text; /** * Pozdraví uživatele textem pozdravu a jeho jménem * @param jmeno Jméno uživatele * @return Text s pozdravem */ public String pozdrav(String jmeno) { return String.format("%s %s", text, jmeno); } }
Znaky /* začíná víceřádkový komentář a končí
opačnými znaky */, syntaxe popisků se nazývá
Javadoc.
Nad místem, kde chceme vytvořit dokumentaci (např. nad metodou/atributem)
napíšeme /** a stiskneme klávesu Enter:

Metodu, atribut či třídu tak jednoduše a rychle popíšeme. Alternativně
můžeme kliknout například metodu pozd|rav() (|
značí kurzor v názvu metody) a stiskneme klávesy Alt a
Enter:

Kurzorem najedeme na metodu pozdrav() v metodě
main() a IDE nám opravdu popisky zobrazí:

Pokud budete své třídy dobře popisovat, programátorskou dokumentaci k aplikaci vytvoříte poté jediným kliknutím. Z Javadoc umí IntelliJ generovat dokumentaci i ve formátu HTML. Kliknete pravým na třídu v záložce Project a zvolíte z hlavního menu položku Tools -> Generate Javadoc....
U metody pozdrav() nám to vygenerovalo klíčové slovo
@param, za ním hned název parametru jmeno. To
značí, že následující popisek bude patřit parametru jmeno
(popisek může pokračovat i na dalším řádku pro větší přehlednost).
Metoda může mít totiž více parametrů a tím se zajistí, že bude mít
každý parametr vlastní popisek. Dále nám IDE vygenerovalo ještě
klíčové slovo @return, to značí popisek toho, co nám metoda
vrátí.
A jsme u konce. Námi napsaný program má již nějakou úroveň, i když vlastně nic nedělá. Za úkol máte předělat si naši konzolovou kalkulačku do objektů. A teď už můžeme začít pracovat na naší aréně.
V následujícím cvičení, Řešené úlohy k 3. lekci OOP v Javě, si procvičíme nabyté zkušenosti z předchozích lekcí.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 53x (15.59 kB)
Aplikace je včetně zdrojových kódů v jazyce Java

David se informační technologie naučil na