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:

1. diel - Úvod do objektovo orientovaného programovania v Jave

Vitajte pri prvej lekcii kurzu o objektovo orientovanom programovaní v Jave. V tomto kurze sa naučíme objektovo programovať a najmä objektovo rozmýšľať. Je to niečo trochu iné, než sme robili doteraz, a samotný program už nebudeme chápať ako niekoľko riadkov príkazov, ktoré interpret vykonáva zhora nadol. Počas kurzu vytvoríme množstvo praktických aplikácií :)

Minimálne požiadavky

Potrebujete ovládať Základné konštrukcie jazyka Java.

Vznik objektovo‑ori­entovaného programovania

Objektovo orientované programovanie (ďalej len OOP) nevzniklo náhodou, ale je dôsledkom vývoja, ktorý k nemu smeroval. Ide o modernú metodiku vývoja softvéru, ktorú podporuje väčšina programovacích jazykov. Častou chybou je, že sa ľudia domnievajú, že OOP sa využíva len pri písaní určitého druhu programov a inak je na škodu. Opak je pravdou – OOP je filozofia, nový pohľad na funkciu programu a komunikáciu medzi jeho jednotlivými časťami. Malo by sa používať vždy, či už robíme malú utilitku alebo zložitý databázový systém. OOP nie je len technika alebo odporúčaná štruktúra programu, je to predovšetkým nový spôsob myslenia, nový pohľad na problémy a nová éra vo vývoji softvéru.

Najprv sa pozrieme do histórie, ako sa programovalo skôr a ktoré konkrétne problémy OOP rieši. Je to dôležité na pochopenie, prečo OOP vzniklo.

Evolúcia metodík

Medzi tým, ako sa programovalo pred 40 rokmi a ako sa programuje dnes, je veľký rozdiel. Prvé počítače neoplývali veľkým výkonom a ich softvér nebol nijak zložitý. Vývoj hardvéru je však natoľko rýchly, že sa počet tranzistorov v mikroprocesoroch každý rok zdvojnásobí (Moorov zákon). Bohužiaľ, ľudia sa nedokážu rozvíjať tak rýchlo ako hardvér. Stále výkonnejšie počítače si vyžadujú stále zložitejší softvér (resp. ľudia chcú od počítačov stále viac a viac). Keď sa zistilo, že okolo 90 % softvéru je vytvorených s oneskorením, s dodatočnými nákladmi alebo úplne zlyhalo, hľadali sa nové cesty, ako programy písať. Vystriedalo sa tak niekoľko prístupov, presnejšie sa im hovorí paradigma (chápte ako smer myslenia). My si ich tu popíšeme.

1. Strojový kód

Program bol len súborom inštrukcií, kde sme nemali žiadnu možnosť pomenúvať premenné alebo zadávať matematické výrazy. Zdrojový kód bol samozrejme špecifický pre daný hardvér (procesor). Toto paradigma bolo čoskoro nahradené.

Program sčitajúci dve čísla (83 a ‑2) by vyzeral napr. takto:

2104
1105
3106
7001
0053
FFFE
0000

Ako vidíte, programovať v strojovom kóde určite nie je to pravé a aj taká banalita má mnoho riadkov.

2. Nestruktúrované paradigma

Neštruktúrovaný prístup je podobný strojovému kódu, ale je ľudsky čitateľný.

Prístup na istý čas umožnil vytvárať komplexnejšie programy. Stále tu však bolo mnoho úskalí: jedinou možnosťou, ako niečo urobiť viackrát alebo sa v kóde vetviť, bol príkaz GOTO. Príkaz GOTO nám umožňoval "skákať" na jednotlivé miesta v programe. Takýto spôsob písania programov je, samozrejme, veľmi neprehľadný a čoskoro prestal postačovať na vývoj zložitejších programov.

Náš príklad by vyzeral v ASM takto:

ORG 100
LDA A
ADD B
STA C
HLT
DEC 83
DEC –2
DEC 0
END

Uvedomme si, že obrovské rozšírenie počítačov za posledné desaťročia má na svedomí rast dopytu po softvéri a logicky aj rast dopytu po programátoroch. Iste existujú ľudia, ktorí dokážu bez chyby písať programy v ASM alebo iných nízkych jazykoch, ale koľko ich je? A koľko si asi za takú nadľudskú prácu účtujú? Je potrebné písať programy tak, aby aj menej skúsení programátori dokázali vytvárať kvalitné programy a nepotrebovali k tvorbe jednoduchej utilitky 5 rokov praxe.

3. Štruktúrované programovanie

Štruktúrované programovanie je prvé paradigma, ktoré sa udržalo dlhšie a naozaj chvíľu postačovalo pre vývoj nových programov. Programujeme pomocou cyklov a vetvenia. To je v podstate to, kam sme sa doteraz dostali.

Program možno rozložiť do funkcií (metód), tomu sme sa nevenovali, pretože to v Jave (ktorá je objektová) ani veľmi dobre nejde a radšej sme dali prednosť tento medzikrok preskočiť a začať rovno s OOP. Pri štruktúrovanom programovaní hovoríme o tzv. funkcionálnej dekompozícii. Problém sa rozloží na niekoľko podproblémov a každý podproblém potom rieši určitá funkcia s parametrami. Nevýhodou je, že funkcia vie len jednu činnosť, keď chceme niečo iné, musíme napísať novú. Túto nevýhodu možno čiastočne obísť pomocou parametrizácie funkcií (počet parametrov potom však rýchlo narastá) alebo použitím nebezpečných globálnych premenných. Zástupcami tohto prístupu sú napríklad jazyky C a Pascal.

Sčítanie dvoch čísel by v jazyku C vyzeralo takto:

int add(int a, int b) {
    return a + b;
}

int main(void) {
    int sum = add(83, -2);
    return 0;
}

Všetci asi tušíme, čo program robí: sčíta čísla 83 a ‑2 a výsledok uloží do premennej sum. U všetkých jazykov tretej generácie je samozrejme výhodou vysoká čitateľnosť.

Ako som spomenul na začiatku článku, niekedy sa uvádza, že jednoduché programy sa majú písať neobjektovo, teda štruktúrovane. Nie je to však pravda. Keď opomenieme fakt, že porušujeme filozofiu OOP ako takú, nikdy nemôžeme vedieť, či sa tento program neuchytí a z malej utilitky sa nestane niečo vážnejšie. Potom opäť nutne dospejeme do stavu, keď program nebude možné ďalej rozširovať a budeme ho buď musieť zahodiť, alebo celý prepísať s pomocou OOP.

Neobjektovým metódam písania kódu sa prezýva spaghetti code pre ich neprehľadnosť (pretože špagety sú zamotané).

Objektovo orientovaný prístup

Ide o filozofiu a spôsob myslenia, dizajnu a implementácie, kde kladieme dôraz na znovupoužiteľnos­ť. Prístup nachádza inšpiráciu v priemyselnej revolúcii – vynález základných komponentov, ktoré budeme ďalej využívať (napr. keď staviame dom, nebudeme si páliť tehly a sústružiť skrutky, jednoducho ich už máme hotové).

Poskladanie programu z komponentov je výhodnejšie a lacnejšie. Môžeme mu veriť, je otestovaný (o komponentoch sa vie, že fungujú, sú testované a udržiavané). Ak sa niekde vyskytne chyba, stačí ju opraviť na jednom mieste. Sme motivovaní písať kód prehľadne a dobre, pretože ho po nás používajú druhí alebo my sami v ďalších projektoch (priznajme si, že človek je od prírody lenivý a keby nevedel, že sa jeho kód bude znovu využívať, nesnažil by sa ho písať kvalitne 🙂).

Znalosti, ktoré sme sa doteraz naučili, samozrejme budeme používať ďalej. Náš kód budeme iba inak štruktúrovať, a to do komunikujúcich objektov.

Ešte si len pre ilustráciu ukážme opäť náš príklad, tentoraz v objektoch. Aplikácia je teraz rozdelená na dva súbory, medzi ktorými si môžete preklikávať. Funkcia add() už nikde voľne nepoletuje, ale patrí objektu Calculator, ktorý je jednou z komponentov našej aplikácie. Kód nám teraz, samozrejme, slúži len ako náhľad princípu a ako funguje si vysvetlíme v ďalších lekciách:

    Calculator calculator = new Calculator();
    calculator.add(83, -2);

public class Calculator {

    private int a;
    private int b;
    private int sum;

    public void add(int a, int b) {
        sum = a + b;
        System.out.println("Sum is: " + sum);
}
}

V nasledujúcej lekcii, Prvá objektová aplikácia v Jave - Hello object world, si vytvoríme prvý objektový program.


 

Všetky články v sekcii
Objektovo orientované programovanie v Jave
Preskočiť článok
(neodporúčame)
Prvá objektová aplikácia v Jave - Hello object world
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
165 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