MVOP WBF
Bc. Matěj Cajthaml — SSPŠ
©
OOP není jediný správný způsob programování.
My se budeme zabírat OOP.
K pochopení ostatních typů programování je potřeba tyto základy znát.
Můžeme mít v objektu funkci?
Jak se taková funkce bude volat?
Třídy jsou tedy takové objekty, ne? Proč tedy třídy používáme?
Třídy nám zaručí jakousi konzistenci dat.
Kód rozdělujeme do více celků, které se lépe zpracovávájí.
Nemusíme opakovat ten samý kód.
Vytvořte třídu, která bude uchovávat informace o kruhu. Konstruktor bude brát jedno číslo reprezentujicí poloměr. Bude obsahovat dvě metody, které vypočítají obsah a obvod.
Funkčnost této třídy na nějakých instancí otestujte.
Vytvořte třídu Student, která bude v konstruktoru přijímat jméno, přijmení a věk studenta. Tato třída bude obsahovat metodu print, která do konzole vypíše veškeré informace o studentovi do konzole.
Vytvořte třídu Trida, která bude obsahovat seznam studentů. Bude obsahovat metodu addStudent, která z parametru přidá do třídy studenta, a printStudents, která vypíše veškeré studenty ze třídy do konzole.
static
K čemu se nám hodí statické vlastnosti?
K čemu se nám hodí statické metody?
Všechny vlastnosti a metody, které jsme si doteď ukázali byly veřejné — public.
K čemu se nám hodí neveřejné vlastnosti?
K čemu se nám hodí privátní metody?
Mohou být statické vlastnosti / metody neveřejné?
Co je to třída?
Co je to instance?
Co je to vlastnost?
Jak zapíšeme neveřejnou vlastnost?
Co je to metoda?
Jak zapíšeme neveřejnou metodu?
Co je to konstruktor?
Co jsou to statické proměnné / metody?
Funguje OOP v prohlížeči?
Proč místo tříd nepoužíváme objekty?
get
Na co se to hodí?
set
Na co se to hodí?
Vytvořte třídu User. Tato třída bude reprezentovat uživatele v aplikaci a bude obsahovat vlastnost name, id a score, reprezentující přezdívku uživatele resp. jeho identifikátor a skóre.
Každý uživatel si bude držet vlastní historii — záznamy všech jeho skóre. Skóre budeme nastavovat pomocí vlastnosti score.
Použijte gettery pro získání posledního skóre a pole všech záznamů se skóre. Použijte setter pro přidání a nastavení skóre.
K čemu se nám to hodí?
a co kdybychom chtěli něco přidat do prvního řešení?
Tohle fungovat nebude. Proč?
K čemuže nám slouží třídy?
Lze dědit jen z jedné třídy.
Všechny třídy na konci dědí z třídy Object.
Super volá nadřazenou třídu, která může volat její nadřazenou třídu, ...
Co je to třída?
Co je to instance?
Co je to vlastnost?
Jak zapíšeme neveřejnou vlastnost?
Co je to metoda?
Jak zapíšeme neveřejnou metodu?
Co je to konstruktor?
Co jsou to statické proměnné / metody?
Funguje OOP v prohlížeči?
Proč místo tříd nepoužíváme objekty?
Co jsou to nepovinné parametry?
Co je to getter?
Co je to setter?
Proč používáme gettery a settery?
K čemu slouží dědičnost?
Co je to abstakce dědičnosti?
Co platí pro konstruktory v dědičnosti?
Co to znamená promise?
Na co na webových stránkách musíme čekat v kódu?
then
Jak si myslíte, že bude implementovaná funkce generateCatName
?
Vytvořte funkci, která Vám vrátí promise, která po 1 vteřině vrátí objekt s náhodným jménem kočky, náhodným věkem kočky a náhodnou barvou.
Funkci zavolejte a vypište obsah objektu, který Vám přijde.
Někdy se může stát, že se operace neprovede.
Co se závislostmi Promise stane?
.catch
, která zachytí všechny chyby.then
po zavoláni .catch
se zavolají i
přes chybu.catch
až na konec
.then
budou volány v přesném pořadí a až
potom (a jen když) bude předchozí funkce úspěšně splněna.then
budou zavolány i po tom, co byly
přidány již na vyřešenou promise.all
— zavolání všech najednou a najednou získá jejich data.race
— zavolání všech najednou, vrátí první
Již máme vytvořenou funkci s promise na vrácení náhodné kočky.
Nyní pomocí promise udělejte, že se vrátí jedna kočka a po získání kočky se získá druha kočka (bude trvat sekundu) a takto desetkrát.
syntax sugar
pro asynchronní funkceasync
a await
async
await
await
https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html
Proč bychom potřebovali propojovat soubory?
require(path)
data.js
require.js
Zjistěte, jestli můžeme exportovat funkce, třídy či další objekty. Případně na ukázce předveďte jak.
Co je to Node.js?
package.json
npm init
npm init
package.json
npm run compile
npm run run
npm install <jmeno balíčku>
node_modules
, obsahující dané knihovnypackage.json
— bude obsahovat knihovnu a její verzipackage-lock.json
, který obsahuje přesnější informace o nainstalovaných knihovnáchSoubor package-lock.json
a node_modules
nikdy nedáváme na verzovací systém (git).
Každý balíček / knihovna se chová různě. Vždy je potřeba číst dokumentaci.
entoli
npm
Prohledejte internet a nalezněte zajimavé (možná i zvláštní) npm balíčky.