<aside> ☝
Pokud máte problém pochopit programování, existuje technika, kterou lze vše pochopit jednoduše. Tato technika je vysvětlena na samostatné stránce zobrazené níže
</aside>
OOP neboli Objektově Orientované Programování (OBJECT-ORIENTED PROGRAMMING)
Objektově orientované programovací jazyky jsou mocným nástrojem, který vývojářům umožňuje vytvářet aplikace modelované podle reálných objektů (věcí co známe z reálného světa). Pomocí objektů (object), tříd (class) a datových struktur (int, bool, string, double, …) mohou vývojáři vytvářet robustní, efektivní a praktické aplikace. Vývojáři mohou vytvářet opakovaně použitelné a přizpůsobitelné programy pomocí nejlepších objektově orientovaných programovacích jazyků, jako jsou Java, C++ a Python. Pomocí těchto jazyků mohou vývojáři vytvářet svižnější a interaktivnější aplikace, které uživatelům umožňují příjemnější a produktivnější práci. Dalšími oblíbenými jazyky OOP jsou Ruby, C#, PHP, TypeScript a další.
OOP zjednodušuje vazby a závislosti proměnných a funkcí, které by byly roztříštěné uvnitř souborů do tříd, které “zapouzdří” ony funkce a proměnné a jsou vázány pouze k této třídě. Lze si to představit tak, že třída = předpis objektu reálného světa, například auto. Auto má vlastnosti a metody (proměnné a funkce). Proměnnou auta může být například weight, color, engine a funkcí například startEngine(), stopEngine(), turnRight() a podobně. Fantazii se zde meze nekladou, jen je nutné rozlišovat co je ona proměnná (vlastnost) a co je funkce (akce).
<aside>
☝ Ukázky kódu jsou demonstrovány v TypeScript. Pokud zvládáte libovolný C-Like jazyk třeba PHP, C, C# nebo další, nebude problém pochopit tento jazyk, jelikož 90% je většinou stejných.
</aside>
| funkcionální/procedurální | OOP | Vysvětlení |
|---|---|---|
function |
method |
Funkce uvnitř class |
variable |
property/prop/attribut |
Proměnná uvnitř class (jinak řečeno vlastnosti) |
| - | class |
Předpis jak má vypadat object, který se bude vytvářet v instanci |
| - | object |
Vytvořený objekt pomocí instance z class |
| - | instance | Proces vytvoření object z class |
| - | this |
Odkaz na class ve které aktuálně píšeme kód. |
| - | new |
Vytvoření instance |
| - | constructor |
První method, která se volá při vytvoření instance |
| - | desctructor |
method, která se volá při odebírání/ničení objektu. Při jeho zániku. |
| - | dědičnost | Možnost dědit property a method z jedné třídy do druhé. |
| - | public, protected, private |
Dodatečné označení property a method v rámci “zapozdření” a dedičnosti. |
| - | abstract |
Jedná se o abstraktní část, tedy nejčastěji class nebo jiní property a method, která/é musí být definována později (po dědění), nebo je určena pouze pro dědění (třeba abstract class). |
| - | interface |
Něco jako definice, jak má vypadat obsah class. Například jak bude vypadat method, co bude přijímat a co vracet. Většinou nelze definovat těla. |
| - | type |
Možnost definování vlastního datového typu. (Záleží na jazyku) |
| - | implements |
Používá se při implementaci interface do dané class |
extends |
Používá se při implementaci dědičnosti class do druhé class |
classTřída, neboli class je základem OOP. Třídu lze označit za předpis objektu z reálného světa nebo našeho co si vymyslíme. Ze třídy následně vzniká object, který vytvoříme skrze klíčové slovo new, tedy vytvoříme instanci třídy.
class může obsahovat následující:
methods - metody (funkce, procedury), syntakticky velmi podobné klasickým funkcímproperty/prop/attribut - proměnné (atributy) třídy
class znázorňující velmi primitivního psaclass Dog {
// ukázka property
name: string = "Hafík";
// ukázka metody
// vypisuje do konzole (volá další metodu nebo funkci)
// využívá property ze třídy
bark() {
// použití další logiky, funkce, procedury, metody, property, ...
console.log("Pes " + this.name + " štěkl.");
}
}
Ukázka výše je v jazyku Skriptování v jazyce TypeScript. Nezáleží však na jazyku, obecná deklarace tříd je ve všech jazycích velmi podobná, mnohdy až stejná.
<aside>
☝ Ve většině jazyků musíme k přístupu vnitřních částí třídy využívat klíčové slovo this. Toto slovo označuje třídu v jejímž obsahu se právě nacházíme. Tedy můžeme pracovat se vším, co tato třída má definované. Například this.name nebo this.bark(), jelikož oboje je součástí této třídy a je v ní definované.
</aside>
class