Študijné materiály

Vitaj v Objektovo-Orientovanom-Programovaní (OOP). Triedy sú základným stavebným kameňom OOP. Predtým, než sa pozrieme na syntax v Kotline, poďme si vysvetliť, prečo OOP vôbec existuje a aké problémy rieši.

6.1.1 Prečo OOP?

V procedurálnom programovaní píšeme funkcie a premenné na úrovni celého programu. Keď program narastie, začneme strácať prehľad - nevieme, ktorá funkcia pracuje s akými dátami. OOP nám umožňuje zabaliť dáta a funkcie, ktoré s nimi pracujú, do jedného celku - triedy.

6.1.2 Základné pojmy

  • Trieda (Class) - šablóna/popis. Definuje atribúty (dáta) a metódy (funkcie), ktoré trieda má.
  • Objekt (Object) - inštancia triedy. Konkrétny záznam vytvorený podľa šablóny.
  • Atribút - premenná, ktorá patrí triede (napr. meno, vek).
  • Metóda - funkcia, ktorá patrí triede (napr. zdravSa(), pocitajVek()).

6.1.3 Príklad z reálneho sveta

Predstav si triedu Auto:

Atribúty (dáta) Metódy (správanie)
značka naštartuj()
farba zastav()
rýchlosť zrýchli()
palivo uberiPalivo()

Trieda Auto je šablóna - popisuje, čo auto vie a aké má vlastnosti. Z tejto triedy môžeme vytvoriť viacero objektov:

Auto1: značka="Škoda", farba="červená", rýchlosť=0
Auto2: značka="BMW", farba="čierna", rýchlosť=0

Každý objekt má rovnaké atribúty a metódy, ale hodnoty atribútov sú rôzne.

6.1.4 Encapsulácia

Jeden z hlavných princípov OOP je encapsulácia - skryjeme interné údaje a poskytneme len verejné rozhranie. Auto má motor, ktorý nevidíme, ale vieme ho naštartovať kľúčom. Rovnako v programe - atribúty budú private a k nim sa dostaneme len cez metódy.

6.1.5 Dedičnosť

Triedy môžu dediť z iných tried. Trieda OsobneAuto môže dediť z Auto a pridať vlastné atribúty ako pocetDveri alebo metódy ako otvorKufor(). Dedičnosť nám umožňuje znova použiť kód a vytvárať hierarchie tried.

6.1.6 Prečo nie sú len funkcie?

Funkcie sú skvelé, ale keď má program stovky premenných a funkcií, ťažko sa udržiava poriadok. Triedy nám dávajú štruktúru - vieme, že dáta patria k sebe a vieme, aké operácie s nymi môžeme vykonať.

V ďalšej lekcii si ukážeme, ako sa triedy zapisujú v jazyku Kotlin.

Úlohy

Úloha 1

Navrhni triedu Kniha: vypíš jej aspoň tri atribúty a dve metódy, ktoré by mali patriť do tejto triedy.

Úloha 2

Pre triedu BankovyUcet rozhodni, ktoré údaje majú byť skryté a ktoré operácie majú tvoriť verejné rozhranie.

Úloha 3

Navrhni rodičovskú triedu Vozidlo a dve podtriedy; pri každej uveď spoločné a vlastné atribúty.