Download - Objektové programování
![Page 1: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/1.jpg)
Štěpán Šípal
![Page 2: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/2.jpg)
Obsah cvičeníObjekty
Co to jsou objektyRozdíl strukturálního a objektového
programováníZapouzdřeníPolymorfismusDědičnost
OOP programováníTřídy, inicializaceMetody a proměnné
![Page 3: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/3.jpg)
ObjektyObjekty můžeme vidět všude kolem nás.Objekty v sobě mají uložené své vlastnosti.Objekty mají metody, které mohou ovlivňovat
jejich vnitřní stav (vlastnosti).Objekty mezi sebou vzájemně komunikují
pomocí zasílání zpráv.
![Page 4: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/4.jpg)
Strukturální vs. OOPStrukturální programování odděluje data a
algoritmy.V objektovém programování jsou data
zapouzdřena v objektech a jejich manipulace je umožněna s pomocí metod objektu.
V objektovém programování tedy nemusíme znát a psát přesné algoritmy uložené uvnitř objektu (co se děje když dupneme na plyn v motoru), ale stačí nám znát metodu objektu, která zajistí požadovanou změnu stavu (zrychlení auta).
![Page 5: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/5.jpg)
Strukturální vs. OOPObjekty jsou znovupoužitelné.Změny uvnitř algoritmů objektu (výměna
motoru) neovlivní funkčnost ostatních objektů (po sešlápnutí plynu bude pořád zrychlovat).
Objektové programování dává lepší předpoklady pro kvalitní rozdělení práce.
![Page 6: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/6.jpg)
Zapouzdření objektůZapouzdření objektů nám umožňuje skrývat před
okolím vlastnosti a některé metody objektu. Díky zapouzdření tak můžeme omezit možnost
zadání chybné vlastnosti stran jiného objektu.Také díky němu můžeme objekty upravovat
nezávisle na ostatních (pokud ponecháme stejné metody rozhraní pro komunikaci s okolím). V objektu tak můžeme například změnit zdroj dat z DB na XML soubor a podobně.
![Page 7: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/7.jpg)
Třídy v JAVATřídy v jazyce JAVA jsou v podstatě šablonami
objektů.Jejich vlastnosti jsou charakterizovány proměnnými.Operace se na nich provádějí pomocí metod.Při inicializaci třídy vytvoříme objekt – každý objekt
vytvořený na základě třídy je samostatný, má samostatné vlastnosti a metody.
V Javě inicializujeme třídy pomocí:NázevTřídy JménoProměnné = new NázevTřídy();Metody objektu budou poté dostupné pod proměnnou
„JménoProměnné“.
![Page 8: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/8.jpg)
Třídy v JAVAObjekty v Javě spolu komunikují pomocí
zasílání zpráv – volání metod.Vždy musíme mít odkaz na instanci objektu
dostupný v některé proměnné:Kruh novy = new Kruh();
Pokud chceme na objektu vykonat nějakou metodu, zavoláme jej jménem proměnné a metody takto:novy.Vykresli();
Pokud potřebujeme získat hodnotu:Int hodnota = novy.VypoctiObsah();
![Page 9: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/9.jpg)
Proměnné v JAVAProměnné v jazyce JAVA je nutné před použitím
inicializovat – určit jak se budou jmenovat a jakého budou typu.
int vek; //inicializace celočíselné proměnné věkV Javě existují primitivní proměnné,
obsahující jednoduchou hodnotu – číslo či text, tak proměnné sloužící jako odkaz na jiný objekt.
vek je primitivní proměnnáZamestnanec bude proměnná odkazující na
instanci třídy zaměstnance
![Page 10: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/10.jpg)
Základní datové typy pro Javaint = celé čísloString = textboolean = TRUE/FALSE hodnota...U referenčních proměnných se jako jejich
datový typ používá název odkazované třídy.
![Page 11: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/11.jpg)
Proměnné v Java IIProměnné se inicializují jako lokální, nebo
jako proměnné třídyLokální proměnné se inicializují uvnitř
jednotlivých metod a nejsou dostupné pro ostatní metody stejné třídy
Lokální proměnné se po provedení metody „zapomenou“
Třídní proměnné = proměnné inicializované ihned za definicí třídy jsou dostupné všem metodám dané třídy
![Page 12: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/12.jpg)
![Page 13: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/13.jpg)
Metody JAVAMetody ve třídách Java jsou jednotlivé
činnosti, které daný objekt může vykonávat.Metoda je základní jednotkou pro komunikaci
mezi třídami.Metoda může vracet hodnoty a může
požadovat proměnné jako parametr.Deklarace metody vracející číslo:
public int vydel(){…….}Deklarace třídy nevracející nic:
public void posunSe(){…….}
![Page 14: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/14.jpg)
Třídy v JAVAMetody a proměnné objektů zapisujeme s
modifikátory private, public a protected.Private = nebude dostupná mimo objekt, tedy
budou ji moci změnit pouze metody objektu.Public = bude dostupná mimo objekt – obvykle
se public nechávají pouze metody rozhraní. V OOP by měly být všechny proměnné private.
Protected = nebude dostupná mimo objekt, bude však dostupná potomkům třídy.
![Page 15: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/15.jpg)
Dědičnost třídDědičnost umožňuje určité rozšiřování
možností tříd.Nově vytvořená třída – potomek bude mít
vlastnosti a metody svého předka + jí můžeme přidat vlastní metody a vlastnosti.
Pokud tedy budeme mít například třídu Kruh(), která bude mít metodu vykresli() kreslící kruh na daný výstup, můžeme jí vytvořit potomka KruhPlus(), kterému přidáme ještě metodu vypočtiObsah() vracející obsah kruhu.
![Page 16: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/16.jpg)
PolymorfismusDíky polymorfismu se u jednoho objektu
může vyskytovat více stejně pojmenovaných metod, odlišených na základě počtu, či typu parametru – tzv. přetížené metody.
Dále polymorfismus znamená možnost existence stejných metod požadujících stejné parametry u různých tříd, což umožňuje jejich případné zaměňování.
![Page 17: Objektové programování](https://reader035.vdocuments.pub/reader035/viewer/2022062222/5681579c550346895dc5328b/html5/thumbnails/17.jpg)
Abstraktní třídyZ abstraktní třídy není možné vytvořit
instanci.Jedná se o jakousi „šablonu tříd“, je určena
pro dědění a instancovat lze pouze její potomky.
Sama může mít některé metody prázdné – musíme je v potomku přepsat.
Jsou to pouze základní kameny pro stavbu složitějších tříd objektů.