Když jíte burrito, každý z vašich chuťových receptorů zazpívá radostí. Každé sousto přináší kombinaci různých typů chutí, jako je slaná, sladká, kořeněná a umami. Každé sousto poté chutná trochu jinak, protože nová kolekce ingrediencí spojuje jejich chutě dohromady.

Možná jste četli ingredience z jídelního lístku, ale nevíte, jak přesně se salsa vyrábí. Koření, které používají na své zelenině, může být tajnou směsí. Nemusíte však znát každou přesnou ingredienci. Stačí vědět, že je to chutné.

Ingredience, které znáte, jako obyčejná bílá rýže, jsou konkrétní. Ostatní prvky jsou abstraktní. Víte, že je to salsa, ale jakou? Nebo, když vám někdo jen tak z ničeho nic podá burrito, pak je celé burrito abstraktní.

Abstrakce v abstraktu

Spolu s dědictvímabstrakce je důležitým pojmem v objektově orientovaném programování. Teorie říká, že každý objekt by měl poskytovat jednoduché a předvídatelné výsledky. Objekty by také měly sdílet pouze to, co je třeba sdílet.

Burrito si můžete představit jako předmět. Uvnitř burrita máte několik dalších předmětů, jako jsou fazole, rýže, sýr a pálivá omáčka. Fazole mohly být kořeněné. Sýr může být směs. A pálivá omáčka může být kombinací paprik stařených v octě.

instagram viewer

Nemusíte vědět, jak byly všechny ingredience v burritu vyrobeny. A v případě párků v rohlíku to asi vědět nechcete. Důležité je jen to, aby se to při konzumaci nerozpadlo a aby to bylo super chutné.

Abstrakce je úzce svázána se zapouzdřením

Je to stejné jako s programováním objektů. Když vytvoříte instanci objektu (vytvoříte jej ze třídy), je to jako objednat si burrito z pultu food trucku. Máte přístup k některým datům, ale ne ke všem. Nemusíte vědět, jak objekt funguje, pokud funkce vrátí správná data. Zde je burrito v JavaScriptu/Typescriptu:

Zadaný jazyk: tsx neexistuje'
Generování kódu se nezdařilo!!
'

Můžeš hrát s tímto kódem na pískovišti TypeScript.

Ve výše uvedeném příkladu jsou složky salsy a sýra abstrahovány. Nejprve jsou zapouzdřené, aby skryly speciální přísady. Poté se přidají getry, aby se získaly ingredience. Ale ingredience pouze vracejí abstraktní reprezentaci toho, čím skutečně jsou.

Abstrakce v betonu

Abstrakce je však více než jen koncept. Třídy mohou být také abstraktní. To znamená, že mohou definovat další třídy. Ale nemohou být samy instancí.

Proč by hodiny měly být někdy abstraktní

Představte si, že jdete do restaurace a posadíte se. Číšník vám podá jídelní lístek. Otevřete ji a zjistíte, že je tam jen jedna věc: jídlo.

To je dost abstraktní. Objednali byste si to? Jedl bys to? To bys asi ne. Říct něco jako jídlo nestačí. Je potřeba to rozdělit na něco konkrétnějšího.

A co těstoviny? No, to je specifičtější druh jídla. A víme, že má pravděpodobně nudle a omáčku. Ale existuje spousta různých druhů těstovin, takže je to stále abstraktní.

Co je abstraktní a co je beton?

Fettuccine Alfredo je konkrétním příkladem jídla i těstovin. Totéž platí pro třídy. Ne každá třída by měla být instancí. Některé třídy by měly pouze definovat strukturu jiných tříd.

Zde je příklad s abstraktem Jídlo třída a dítě Makadamové ořechy třída:

Zadaný jazyk: tsx neexistuje'
Generování kódu se nezdařilo!!
'

Tady je kód.

Abstraktní třídy říkají ostatním třídám, jak se mají chovat. Ve výše uvedeném příkladu, pokud budete třídou jídla, musíte mít funkce, které umožní přístup k vašemu jménu, chuti, popisu a kaloriím.

Všimněte si, že Makadamové ořechy třída rozšiřujeJídlo. Tím se to říká Makadamové ořechy souhlasí s dodržováním pravidel Jídlo. Všimněte si také volání konstruktoru super. Tento příkaz vytvoří instanci nadřazené třídy před vytvořením instance konstruktoru Makadamové ořechy.

Pokud se učíte programovat, můžete užijte si více zábavy s těmito programovacími hrami.

Abstrakce praxe

  • Navštivte výše uvedený odkaz a použijte sandbox k vytvoření abstraktní třídy s názvem Polévka.
  • Vytvořte konkrétní dítě Polévka třídy, tzv Obiloviny.
  • Použití konzole.log otestovat svůj kód. Co se stane, když vaše Obiloviny třídě chybí jedna z funkcí definovaných v Polévka?

Ale jaký je smysl třídy, kterou nemůžete vytvořit?

Zpočátku se abstraktní třídy mohou zdát zbytečné. Koneckonců, nemůžete je vlastně použít k výrobě předmětu. A není to tak, že by předávali své funkce. Funkce musí být přepsány v každé dětské třídě.

Existují dva hlavní důvody, proč potřebujete abstraktní třídy. Udržují váš kód konzistentní a zajišťují, aby konzistentní kód psali i ostatní vývojáři. Nebudete vždy pracovat sami. Celý tým musí dodržovat stejná pravidla. Můžete se dozvědět více z dokumentaci TypeScript o abstraktních třídách.

Jak uspořádat objektově orientovaný kód s dědičností

Přečtěte si další

PodíltweetPodílE-mailem

Související témata

  • Programování
  • Programování
  • Objektově orientované programování

O autorovi

Lee Nathan (19 zveřejněných článků)

Lee je nomád na plný úvazek a polyhistor s mnoha vášněmi a zájmy. Některé z těchto vášní se točí kolem produktivity, osobního rozvoje a psaní.

Více od Lee Nathana

Přihlaste se k odběru našeho newsletteru

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!

Chcete-li se přihlásit k odběru, klikněte sem