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:
- 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:
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.
- .<>
- .<>
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: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ódemain()
a IDE nám naozaj popisky zobrazia: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ódemain()
a IDE nám naozaj popisky zobrazia:
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