Introdução às Classes Abstratas em JavaScript

JavaScript é uma linguagem orientada a objetos, pois a maioria dos elementos em javascript são objetos que esperam os tipos de dados primitivos.

Na Programação Orientada a Objetos (OOP), o conceito de abstração é ocultar os detalhes da implementação e mostrar os recursos essenciais do objeto aos seus usuários. Esse recurso de abstração do OOP aprimora a compreensibilidade e a manutenção do código que escrevemos e reduz a duplicação do código. Como a abstração é usada na maioria das vezes em linguagens de programação como Java, aplicaremos esse recurso em JavaScript.

Nas postagens de blog Classes abstratas em JavaScript, discutiremos Classes abstratas em JavaScript. Antes de mergulharmos na implementação da classe abstrata em JavaScript, vamos entender o que são classes abstratas.

O que são Classes Abstratas?

  • Classes abstratas podem ser definidas como classes que não podem ser instanciadas, ou seja, cuja referência de objeto não pode ser criada e contém nela, um ou mais métodos abstratos.
  • Um método abstrato é um método que só pode ser declarado, mas não possui implementação. As classes abstratas precisam ser herdadas e requerem subclasses para fornecer implementações para o método declarado na classe abstrata.
  • Como em Java, temos a palavra-chave abstract para tornar uma classe uma classe abstrata, não existem palavras-chave de reserva no JavaScript para declarar uma classe como uma classe abstrata.
  • No exemplo abaixo, codificaremos algumas linhas em JavaScript para verificar se podemos criar uma classe abstrata e se podemos satisfazer suas propriedades ou não.

Exemplos de classe abstrata em JavaScript

Vamos ver alguns dos exemplos com a ajuda do código do programa

Exemplo # 1: Criação de Classe Abstrata

Código:



//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();

Resultado -

Explicação do código acima

No cenário de código acima, criamos uma função construtora Employee que atua como uma classe abstrata. Também criamos uma função de exibição para verificar o nome do funcionário. Na última linha do JavaScript, criamos uma referência de objeto ou uma instância (funcionário) de nossa classe abstrata Employee para verificar se o objeto está sendo criado ou se um erro é exibido através da função de exibição.

Agora, estendendo o exemplo acima, criaremos outra função que estende as propriedades e métodos de nossa classe abstrata Employee. Em termos de Java, criaremos uma subclasse e nosso Funcionário será a superclasse.

Exemplo # 2: Estendendo a Classe Abstrata

Código:



//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());

Resultado

Explicação do código acima

No exemplo de código acima, alcançamos a abstração criando um gerente de função / classe que estende nossa classe abstrata Employee pela cadeia de protótipos (um conceito importante em JavaScript, através do qual a herança é obtida). Os detalhes de implementação estão ocultos do usuário e acessam apenas os recursos que atendem a seus requisitos.

Nos exemplos 1 e 2 acima, conseguimos obter abstração, embora não tenhamos realmente satisfeito todas as propriedades da classe abstrata. De acordo com a definição de classes abstratas, seu objeto não pode ser criado e deve ter um ou mais métodos abstratos.

Com o lançamento do ES6, o JavaScript se tornou muito mais simples e introduziu novos recursos nas classes, como no Java e em seus recursos adicionais. Vamos ver um exemplo abaixo, onde implementamos uma classe em JavaScript, juntamente com propriedades de abstração.

Exemplo # 3: Classe abstrata - o código completo

Código:



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();

Saída 1 - Saída correta

Resultado 2 - Comente super.display ()

Resultado 3 - Comentário var emp = new Employee ()

Explicação do código acima

O trecho de código acima quase se parece com um código java com classes, construtores, métodos e objetos sendo definidos; isso é a mágica da liberação do ES6. Agora voltando ao código, podemos ver que a classe Employee é uma classe abstrata e exibe erro quando seu objeto é criado (Saída 3) e contém um método abstrato display () cuja implementação é definida no método display () do Manager classe que estende as propriedades e métodos da classe Employee.

Conclusão

Precisamos ter em mente que, ao lidar com a abstração, não se pode criar uma instância de uma classe abstrata. Concluindo, aprendemos como a abstração de um conceito de OOP pode ser implementada em JavaScript e capaz de implementar uma classe abstrata com todas as suas propriedades satisfeitas.

Artigos recomendados

Este é um guia para Classes abstratas em JavaScript. Aqui discutimos a introdução às Classes abstratas em JavaScript, O que são Classes abstratas, juntamente com exemplos apropriados. Você também pode consultar nossos outros artigos sugeridos para saber mais:

  1. O que há de novo no Java 8?
  2. Substituindo em OOPs
  3. Alternativas em Python
  4. Tipos de diagramas UML
  5. Palavras-chave PHP
  6. Tipos de dados PL / SQL
  7. Jogue vs Joga | As 5 principais diferenças que você deve saber
  8. Diferentes 36 principais palavras-chave no SQL com exemplos
  9. Guia para diferentes tipos de dados C #
  10. Diferentes tipos de dados SQL com exemplos