Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

2. diel - Prvá objektová aplikácia v Jave - Hello object world

Minulá lekcia, Úvod do objektovo orientovaného programovania v Jave , nás uviedla do objektovo orientovaného programovania.

Už vieme, že objekty majú atribúty a metódy. Tiež vieme, že na vytvorenie objektu vytvoríme najprv triedu. Tá je vzorom, podľa ktorého následne tvoríme jej inštancie.

Na začiatku kurzu so základnými štruktúrami jazyka Javy sme si vytvorili program Hello world. Urobme si teraz podobný program ako úvod do objektovo orientovaného programovania. Naprogramujme si aplikáciu Hello object world !

Založme si novú Java aplikáciu tak, ako sme to robili doteraz.

  • V záložke Project klikneme pravým tlačidlom myši na balík (package) nášho projektu a vyberieme z menu položku New -> Java Class:

    Pridanie novej triedy class kJava projektu vIntelliJ - Objektovo orientované programovanie v Jave - Objektovo orientované programovanie v Jave
  • V záložke Projects klikneme pravým tlačidlom myši na balík (package) nášho projektu a vyberieme z menu položku New -> Java Class: Pridanie novej triedy class kJava projektu vNetBeans - Objektovo orientované programovanie v Jave - Objektovo orientované programovanie v Jave
Vytvoríme triedu HelloObjects, v ktorej obvyklým spôsobom vytvoríme hlavnú metódu main().

Potom vytvoríme ďalšiu triedu Zdravic a potvrdíme. Názov triedy píšeme vždy notáciou PascalCase, teda bez medzier a na rozdiel od premenných (tie používajú camelCase) má každé slovo veľké prvé písmeno, teda aj prvé. Názov je samozrejme tiež bez diakritiky, tú v programe používame maximálne vo vnútri textových reťazcov, nie v identifikátoroch.

  • .<> Vytvorenie novej triedy v Jave v IntelliJ - Objektovo orientované programovanie v Jave - Objektovo orientované programovanie v Jave
  • .<> Vytvorenie novej triedy v Jave v NetBeans - Objektovo orientované programovanie v Jave - Objektovo orientované programovanie v Jave
Podľa tejto triedy neskôr vytvoríme objekt zdravic, ktorý nás bude vedieť pozdraviť. Vidíme, že sa na program už pozeráme úplne inak, za každú akciu je zodpovedný nejaký objekt, nestačí iba niečo "nabúšiť" do metódy main(). V našom prípade vám to môže prísť zbytočné, pri zložitejších aplikáciách si to budete pochvaľovať:)

V našom package pribudne ďalší súbor .java a IDE nám ho otvorí. K pôvodnému súboru HelloObjects.java s metódou main() sa môžeme vrátiť pomocou záložky alebo cez záložku Projects.

Pozrime sa, čo nám IDE vygenerovalo a kód si popíšme. Následne si do triedy pridáme vlastnú metódu na pozdravenie.

Kľúčové slovo package nám označuje tzv. balíček. Rovnako, ako sa metódy združujú do tried, tak sa triedy združujú do balíčkov. Ak chceme, aby bola naša trieda viditeľná aj vo východiskovej triede, kde máme metódu main(), musíme ju mať v rovnakom balíčku. To tu platí, IDE samo novú triedu vloží do toho istého balíčka, vy namiesto helloobjects budete mať názov svojej aplikácie, ak ste ju nepomenovali, bude tam pravdepodobne untitled1.

V package je teda umiestnená samotná trieda, ktorá sa deklaruje kľúčovým slovom class. Trieda sa volá Zdravic a je prázdna.

Všimnite si, že kód je takmer rovnaký, ako ten v HelloObjects.java, už teda rozumieme tomu, čo sme predtým ignorovali. Náš konzolový program bola vlastne trieda umiestnená v package, ktorá obsahovala jednu metódu main(). Vidíme, že v Jave sa v podstate neobjektovo programovať ani nedá, čo je len dobre:)

Teraz si do triedy Zdravic pridáme metódu pozdrav(), bude verejne viditeľná a nebude mať žiadnu návratovú hodnotu ani atribúty.

Deklarácia metódy v Jave je teda nasledujúca:

Pred metódou bude tzv. modifikátor prístupu, v našom prípade public (verejná). Metóda nebude vracať žiadnu hodnotu, to docielime kľúčovým slovom void. Ďalej bude nasledovať samotný názov metódy. Metódy píšeme rovnako ako premenné ťavie notácií s malým počiatočným písmenom. Zátvorka s parametrami je povinná, my ju necháme prázdnu, pretože metóda žiadne parametre mať nebude. Do tela metódy zapíšeme kód pre výpis na konzole:

Naša trieda bude teraz vyzerať takto:

Tu sme zatiaľ skončili, prejdeme do súboru HelloObjects.java.

Teraz si v tele metódy main() vytvoríme inštanciu triedy Zdravic. Bude to teda ten objekt zdravic, s ktorým budeme pracovať. Objekty sa ukladajú do premenných, názov triedy slúži ako dátový typ. Inštancia má spravidla názov triedy, len má prvé písmeno malé. Deklarujme si premennú a následne v nej založme novú inštanciu triedy Zdravic:

Tieto riadky hovoria: "Chcem premennú zdravic, v ktorej bude inštancia triedy Zdravic.". S premennými sme vlastne už takto pracovali.

Na druhom riadku je kľúčové slovo new, ktoré nám vytvorí novú inštanciu triedy Zdravic. Túto inštanciu priradíme do našej premennej.

Pri vytvorení novej inštancie sa zavolá tzv. konštruktor. To je špeciálna metóda na triede, preto pri vytvorení inštancie píšeme tie prázdne zátvorky, pretože voláme túto "vytváraciu" metódu. Konštruktor spravidla obsahuje nejakú inicializáciu vnútorného stavu inštancie (napr. dosadí východiskové hodnoty do premenných). My sme v kóde žiadny konštruktor nedeklarovali, Java si preto vytvorila tzv. implicitný bezparametrický konštruktor. Vytvorenie inštancie objektu je teda podobné volanie metódy. Deklaráciu môžeme samozrejme skrátiť na:

Keďže v premennej teraz máme naozaj inštanciu triedy Zdravic, môžeme inštanciu nechať pozdraviť. Zavoláme na ňu metódu pozdrav() a to ako zdravic.pozdrav(). Kód metódy main() bude teda teraz vyzerať nasledovne:

Program spustíme av konzole sa nám zobrazí:

Máme teda svoju prvú objektovú aplikáciu!

Dajme teraz našej metóde pozdrav() parameter jmeno, aby dokázala pozdraviť konkrétneho užívateľa. Prejdeme do súboru Zdravic.java:

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 HelloObjects.java:

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ť "Ahoj užívateľovi...". Kód budeme odteraz deliť logicky do metód.

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 Zdravic:

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

Výsledok:

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ážam 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 pozdrav() v súbore Zdravic.java:

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

Teraz je náš kód podľa dobrých praktík. 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 /** Popisok */. 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:

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 - 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 pozd|rav() (| značí kurzor v názve metódy) a stlačíme klávesy Alt a Enter.

    Klikneme kurzorom na metódu pozdrav() v metóde main() a IDE nám naozaj popisky zobrazia:

    Metódy objektu zdravotníc v IntelliJ - Objektovo orientované programovanie v Jave - 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....

  • NetBeans vie Javadoc sám pridať do vášho kódu, stačí ho potom iba vyplniť. Kliknite pravým na triedu v záložke Project a zvolíte položku Tools -> Analyze Javadoc, zaškrtáte chýbajúce políčka a potvrdíte. Z Javadoc vie IDE NetBeans generovať dokumentáciu aj vo formáte HTML. Pokiaľ budete svoje triedy dobre popisovať, programátorskú dokumentáciu k aplikácii vytvoríte potom jediným kliknutím.

    Klikneme kurzorom na metódu pozdrav() v metóde main() a IDE nám naozaj popisky zobrazia:

    Metódy objektu zdravotníc v NetBeans - Objektovo orientované programovanie v Jave - Objektovo orientované programovanie v Jave
Pri metóde pozdrav() nám to vygenerovalo kľúčové slovo @param, za ním hneď názov parametra jmeno. To značí, že nasledujúci popis bude patriť parametru jmeno (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.

V nasledujúcom cvičení, Riešené úlohy k 2. 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é 1995x (11.25 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Predchádzajúci článok
Úvod do objektovo orientovaného programovania v Jave
Všetky články v sekcii
Objektovo orientované programovanie v Jave
Preskočiť článok
(neodporúčame)
Riešené úlohy k 2. lekcii OOP v Jave
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
6 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