Úvod do abstraktních tříd v JavaScriptu

JavaScript je objektově orientovaný jazyk, protože většina prvků v javascriptu jsou objekty, které očekávají primitivní datové typy.

V Object-Oriented Programming (OOP) je koncept abstrakce skrývat implementační detaily a ukázat uživatelům základní rysy objektu. Tato abstrakční funkce OOP zvyšuje srozumitelnost a udržovatelnost kódu, který píšeme, a snižuje duplicitu kódu. Protože abstrakce je většinou používána v programovacích jazycích, jako je Java, použijeme tuto funkci v JavaScriptu.

V příspěvku Abstrakt tříd v blogu JavaScript budeme diskutovat o abstraktních třídách v JavaScriptu. Než se pustíme do implementace abstraktní třídy v JavaScriptu, můžeme pochopit, jaké jsou abstraktní třídy.

Co jsou abstraktní třídy?

  • Abstraktní třídy lze definovat jako třídy, které nelze vytvořit, tj. Jejichž odkaz na objekt nelze vytvořit a obsahuje v něm jednu nebo více abstraktních metod.
  • Abstraktní metoda je metoda, která může být deklarována, ale nemá implementaci. Abstraktní třídy musí být zděděny a vyžadují podtřídy, aby zajistily implementaci metody deklarované v abstraktní třídě.
  • Stejně jako v Javě máme abstraktní klíčové slovo, abychom z třídy učinili abstraktní třídu, v JavaScriptu neexistují žádná taková rezervovaná klíčová slova, která by třídě označila za abstraktní třídu.
  • V níže uvedeném příkladu kódujeme několik řádků v JavaScriptu, abychom zjistili, zda můžeme vytvořit abstraktní třídu a zjistit, zda můžeme uspokojit její vlastnosti nebo ne.

Příklady abstraktní třídy v JavaScriptu

Podívejme se na některé příklady pomocí programového kódu

Příklad č. 1: Vytvoření abstraktní třídy

Kód:



//Created an abstract class (constructor function)
function Employee()
(
this.empName= "empName";
if(this.constructor === Employee)(
throw new Error("FYI: Instance of Abstract class cannot be instantiated");
)
) ;
// Method (function) of our abstract class
Employee.prototype.display=function()
( return this.empName; )
var employee = new Employee();

Výstup -

Vysvětlení výše uvedeného kódu

Ve výše uvedeném scénáři kódu jsme vytvořili jednu konstruktorovou funkci Zaměstnanec, která funguje jako abstraktní třída. Vytvořili jsme také funkci zobrazení pro kontrolu jména zaměstnance. V posledním řádku JavaScriptu vytvoříme odkaz na objekt nebo instanci (zaměstnance) naší abstraktní třídy Zaměstnanec, abychom zkontrolovali, zda je objekt vytvářen nebo zda je pomocí funkce zobrazení zobrazena chyba.

Nyní rozšířením výše uvedeného příkladu vytvoříme další funkci, která rozšíří vlastnosti a metody naší abstraktní třídy Zaměstnanec. Pokud jde o Javu, vytvoříme podtřídu a náš zaměstnanec bude nadřazenou třídou.

Příklad č. 2: Rozšíření abstraktní třídy

Kód:



//Created an abstract class (constructor function)
function Employee()
(
this.empName="empName";
if(this.constructor === Employee)(
throw new Error("You cannot create an instance of Abstract Class");
)
);
// Method (function) of our abstract class
Employee.prototype.display=function()
(
return "Employee name is: "+this.empName;
)
//Created a subclass (constructor function)
function Manager(fullName)
(
this.empName=fullName;
)
//Created an object of subclass (extending abstract class)
Manager.prototype=Object.create(Employee.prototype);
var mang=new Manager("Aniket Davda");
console.log(mang.display());

Výstup

Vysvětlení výše uvedeného kódu

Ve výše uvedeném příkladu kódu jsme dosáhli abstrakce vytvořením manažera funkce / třídy, který rozšiřuje našeho abstraktního zaměstnance třídy prostřednictvím prototypového řetězce (důležitý koncept v JavaScriptu, jehož prostřednictvím se dosáhne dědičnosti). Implementace podrobně popisuje naši skrytou před uživatelem a přistupuje pouze k funkcím, které splňují jeho požadavky.

Ve výše uvedených příkladech 1 a 2 se nám podařilo dosáhnout abstrakce, i když jsme opravdu nesplnili všechny vlastnosti abstraktní třídy. Podle definice abstraktních tříd nemůže být jeho objekt vytvořen a měl by mít jednu nebo více abstraktních metod.

S vydáním ES6 se JavaScript stal mnohem jednodušší a zavedl do něj nové funkce tříd jako v Javě a jeho další funkce. Podívejme se na příklad níže, kde implementujeme třídu do JavaScriptu spolu s abstrakčními vlastnostmi.

Příklad č. 3: Abstraktní třída - úplný kód

Kód:



class Employee
(
constructor() (
if(this.constructor == Employee)(
throw new Error(" Object of Abstract Class cannot be created");
)
)
display()(
throw new Error("Abstract Method has no implementation");
)
)
class Manager extends Employee
(
display()(
//super.display();
console.log("I am a Manager");
)
)
//var emp = new Employee;
var mang=new Manager();
mang.display();

Výstup 1 - správný výstup

Výstup 2 - Komentář mimo super.display ()

Výstup 3 - Komentář out var emp = new Employee ()

Vysvětlení výše uvedeného kódu

Výše uvedený fragment kódu téměř vypadá jako java kód s definovanými třídami, konstruktory, metodami a objekty, jedná se o kouzlo vydání ES6. Nyní se vracíme zpět k kódu, vidíme, že třída Zaměstnanec je abstraktní třída a zobrazuje chybu, když je vytvořen její objekt (Výstup 3) a obsahuje abstraktní zobrazení metody (), jehož implementace je definována v metodě display () správce třída, která rozšiřuje vlastnosti a metody třídy Zaměstnanec.

Závěr

Při řešení abstrakce je třeba mít na paměti, že člověk nemůže vytvořit instanci abstraktní třídy. Na závěr jsme se dozvěděli, jak lze abstrakci konceptu OOP implementovat do JavaScriptu a jak implementovat abstraktní třídu se všemi jeho vlastnostmi uspokojenými.

Doporučené články

Toto je průvodce abstraktními třídami v JavaScriptu. Zde diskutujeme úvod do abstraktních tříd v JavaScriptu, Co jsou abstraktní třídy spolu s příslušnými příklady. Další informace naleznete také v dalších navrhovaných článcích -

  1. Co je nového v Java 8?
  2. Převažující v OOP
  3. Pythonovy alternativy
  4. Typy diagramů UML
  5. Klíčová slova PHP
  6. Datové typy PL / SQL
  7. Throw vs Throw | 5 hlavních rozdílů, které byste měli vědět
  8. Různé Top 36 klíčových slov v SQL s příklady
  9. Průvodce různými typy dat C #
  10. Různé typy dat SQL s příklady

Kategorie: