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.
V dnešnom tutoriáli sa budeme venovať tomu, ako OOP funguje a vytvoríme si svoju prvú objektovú aplikáciu v Jave.
Ako OOP funguje
Snažíme sa nasimulovať realitu tak, ako ju sme zvyknutí vnímať. Môžeme teda povedať, že sa odpútavame od toho, ako program vidí počítač (stroj) a píšeme program skôr z pohľadu programátora (človeka). Tak ako sme kedysi nahradili assembler človeku čitateľnými matematickými zápismi, teraz ideme ešte ďalej a nahradíme aj tie. Ide teda o určitú úroveň abstrakcie nad programom. To má značné výhody už len v tom, že je to pre nás prirodzenejšie a prehľadnejšie.
Základnou jednotkou je objekt, ktorý zodpovedá nejakému objektu z reálneho sveta (napr. objekt human alebo database).

Objekt má svoje atribúty a metódy.
Atribúty
Atribúty objektu sú vlastnosti čiže dáta, ktoré uchováva (napr. u človeka meno a vek, u databázy heslo). Ide o prosté premenné, s ktorými sme už stokrát pracovali. Niekedy o nich hovoríme ako o vnútornom stave objektu.
Metódy
Metódy sú schopnosti, ktoré objekt dokáže vykonávať.
U človeka by to mohli byť metódy: goToWork(),
greet() alebo blink(). U databázy
addEntry() alebo search(). Metódy môžu mať
parametre a môžu tiež vracať nejakú hodnotu. Veľmi dobre ich poznáme,
používali sme napr. metódu split() na objekte
String. String je vlastne objekt, ktorý reprezentuje
v realite nejaký text. Vidíte, že si môžeme jednoducho predstaviť, že
jednáme s reťazcom textu, niečo mu prikazujeme alebo na ňom niečo
nastavujeme. Obsahuje metódy, ktoré reťazec vie vykonávať (kopírovanie,
mazanie, delenie na časti...). Pole má napríklad atribút
length, ktorý udáva jeho dĺžku.

V tejto lekcii si vysvetlíme len úplné základy, teda ako objekty vytvárať. Ďalším témam OOP sa budú venovať ďalšie lekcie, aby toho nebolo naraz priveľa 🙂
Trieda
S pojmom trieda sme sa už tiež stretli, chápali sme ju ako súbor príkazov. Trieda však umožňuje omnoho viac. Trieda je vzor, podľa ktorého sa objekty vytvárajú. Definuje ich vlastnosti a schopnosti.
Objekt, ktorý sa vytvorí podľa triedy, sa nazýva
inštancia. Inštancie majú rovnaké
rozhranie ako trieda, podľa ktorej sa vytvárajú, ale
navzájom sa líšia svojimi dátami (atribútmi). Majme napríklad triedu
Human a od nej si vytvorme inštancie charles
a john. Obe inštancie majú iste tie isté metódy a atribúty
ako trieda (napr. name a age) a metódy
(goToWork() a greet()). Hodnoty v nich sa však
líšia (prvá inštancia má v atribúte name hodnotu
Charles a v atribúte age hodnotu 22,
druhá John a 45).
Komunikácia medzi objektmi prebieha pomocou volania metód, vďaka čomu je
syntax prehľadná. Volanie zvyčajne vyzerá takto:
receiver.methodName(parameters). Napr.
charles.greet(neighbor) by mohlo spôsobiť, že inštancia
charles pozdraví inštanciu neighbor.
Prvá objektová aplikácia
Už vieme, že objekty majú atribúty a metódy. Tiež vieme, že na vytvorenie objektu najprv vytvoríme 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 Java 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!
Vytvorenie triedy
Založme si novú Java aplikáciu s názvom HelloObjects tak,
ako sme to robili doteraz. Vďaka možnosti Add sample code máme v
projekte už vytvorenú triedu Main, v ktorej nájdeme hlavnú
metódu main(). My si teraz vytvoríme ďalšiu triedu
Greeter.
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:

Vyplníme názov triedy Greeter 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.
Podľa tejto triedy neskôr vytvoríme objekt greeter, 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
"nabuš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 Main.java s metódou
main() sa môžeme vrátiť pomocou záložky alebo cez panel
Project.
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.
package com.ictdemy; public class Greeter { }
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. Pokiaľ 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.
V package je teda umiestnená samotná trieda, ktorá sa deklaruje
kľúčovým slovom class. Trieda sa volá Greeter a
je prázdna.
Všimnite si, že kód je takmer rovnaký ako ten v Main.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 
Metódy
Teraz si do triedy Greeter pridáme metódu
greet(), bude verejne viditeľná a nebude mať žiadnu návratovú
hodnotu ani parametre.
Deklarácia metódy v Jave je teda nasledovná:
[accessModifier] [returnType] [methodName]([parameters])
Pred metódou bude tzv. modifikátor prístupu, v našom prípade
public (verejná). Metóda nebude vracať žiadnu hodnotu, to
dosiahneme 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 nebude mať parametre. Do tela metódy
zapíšeme kód na výpis do konzoly.
Naša trieda bude teraz vyzerať takto:
public class Greeter { public void greet() { System.out.println("Hello object world!"); } }
Tu sme zatiaľ skončili, prejdeme do súboru Main.java.
Teraz si v tele metódy main() vytvoríme
inštanciu triedy Greeter. Bude to teda ten objekt
greeter, 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 Greeter:
Greeter greeter;
greeter = new Greeter();
Tieto riadky hovoria: "Chcem premennú greeter, v ktorej bude
inštancia triedy Greeter." S premennými sme vlastne už takto
pracovali.
Na druhom riadku je kľúčové slovo new, ktoré nám
vytvorí novú inštanciu triedy Greeter. 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, keďž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 žiaden konštruktor nedeklarovali, Java si preto vytvorila tzv. implicitný bezparametrický konštruktor. Vytvorenie inštancie objektu je teda podobné volaniu metódy. Deklaráciu môžeme samozrejme skrátiť na:
Greeter greeter = new Greeter();
Keďže v premennej máme teraz naozaj inštanciu triedy
Greeter, môžeme inštanciu nechať pozdraviť. Zavoláme na ňu
metódu greet() a to ako greeter.greet(). Kód metódy
main() bude teda teraz vyzerať nasledovne:
{JAVA_OOP} {JAVA_MAIN_BLOCK} Greeter greeter = new Greeter(); greeter.greet(); {/JAVA_MAIN_BLOCK} {/JAVA_OOP}{JAVA_OOP} public class Greeter { public void greet() { System.out.println("Hello object world!"); } } {/JAVA_OOP}
Program spustíme a v konzole sa nám zobrazí:
Konzolová aplikácia
Hello object world!
Máme teda svoju prvú objektovú aplikáciu!
V nasledujúcej lekcii, Atribúty a metódy v Jave, si vysvetlíme ako pridávať objektom atribúty a metódam parametre. Dokončíme svoju prvú objektovú aplikáciu.
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é 119x (6.18 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

David sa informačné technológie naučil na