tcc-ifpr-armarios / armarios-ifpr-electron

Base aplication with authentication on SUAP ( Unified Public Administration System )
1 stars 0 forks source link

DOCS: abstração de classe em javascript #21

Closed OAllanFernando closed 1 month ago

OAllanFernando commented 1 month ago

Em JavaScript, você pode criar uma "interface" semelhante à que você tem em Java utilizando classes abstratas ou utilizando TypeScript para definir interfaces formalmente. Como o JavaScript puro não tem suporte nativo para interfaces como Java, você pode criar uma classe base que lança exceções para os métodos que devem ser implementados pelas classes concretas. Vou te mostrar duas abordagens: uma usando JavaScript puro e outra usando TypeScript.

  1. Usando JavaScript Puro com Classes Abstratas Aqui está uma maneira de criar uma "interface" em JavaScript puro:

javascript Copiar código class LocalizacaoDao { // Os métodos são definidos, mas lançam exceções para garantir que sejam implementados atualizar(localizacao) { throw new Error('Método atualizar() deve ser implementado'); }

buscarAtivos() { throw new Error('Método buscarAtivos() deve ser implementado'); }

buscarTodos() { throw new Error('Método buscarTodos() deve ser implementado'); }

buscarUnicoPorId(idLocalizacao) { throw new Error('Método buscarUnicoPorId() deve ser implementado'); }

buscarUnicoPorDescricaoExata(descricao) { throw new Error('Método buscarUnicoPorDescricaoExata() deve ser implementado'); }

buscarUnicoPorDescricaoExataComIdDiferente(descricao, idLocalizacao) { throw new Error('Método buscarUnicoPorDescricaoExataComIdDiferente() deve ser implementado'); }

excluir(localizacao) { throw new Error('Método excluir() deve ser implementado'); }

inserir(localizacao) { throw new Error('Método inserir() deve ser implementado'); } }

module.exports = LocalizacaoDao; Implementando a Interface em uma Classe Concreta Você pode criar uma classe concreta que herda de LocalizacaoDao e implementa os métodos:

javascript Copiar código const LocalizacaoDao = require('./LocalizacaoDao');

class LocalizacaoDaoImpl extends LocalizacaoDao { atualizar(localizacao) { // Implementação do método }

buscarAtivos() { // Implementação do método }

buscarTodos() { // Implementação do método }

buscarUnicoPorId(idLocalizacao) { // Implementação do método }

buscarUnicoPorDescricaoExata(descricao) { // Implementação do método }

buscarUnicoPorDescricaoExataComIdDiferente(descricao, idLocalizacao) { // Implementação do método }

excluir(localizacao) { // Implementação do método }

inserir(localizacao) { // Implementação do método } }

module.exports = LocalizacaoDaoImpl;