4
respostas

desfecho do projeto inacabado

Professor,

Penso que o parte final do projeto não teve um desfecho conclusivo para o problema, já que, de acordo com a solução apresentada, o cliente, independentemente de fornecer uma senha válida ou não, terá a mesma sempre validada como verdadeira..

Cliente.js

autenticar(){
        return true;
    }

Penso que a implementação deveria contemplar a validação da senha do cliente (assim como o ocorre na classe Funcionario)..

autenticar(senha){
        return this._senha == senha;
    }

Na sua visão, qual seria uma solução elegante para o problema, sem repetição de código? (mesmo método ('autenticar(senha)') nas classes 'Cliente' e 'Funcionario';) ?

Grato, Hugo

4 respostas

Professor,

Não sei se seria a melhor solução, mas pensei algo do tipo..

1) abstrair os métodos abaixo, da classe 'Funcionario' para a classe 'SistemaDeAutenticacao':

SistemaDeAutenticacao.js

...
   constructor(){
        this._senha;
    }

   autenticar(senha){
        return this._senha == senha;
    }

    cadastrarSenha(senha){
        this._senha = senha;
    }

2) herdar a classe 'SistemaDeAutenticacao' em 'Funcionario' e 'Cliente' :

Funcionario.js

import { SistemaDeAutenticacao } from '../SistemaDeAutenticacao.js';

export class Funcionario extends SistemaDeAutenticacao {
    constructor(nome, salario, cpf){
        super();
        this._nome = nome;
        this._salario = salario;
        this._cpf = cpf;

        this._bonificacao = 1;
    }
}

Cliente.js

import { SistemaDeAutenticacao } from './SistemaDeAutenticacao.js';

export class Cliente extends SistemaDeAutenticacao {
    get cpf() { return this._cpf; }

    constructor(nome, cpf, senha){
        super();
        this.nome = nome;
        this._cpf = cpf;
        this._senha = senha;
    }
}
  • não sei se seria a melhor solução ou a mais correta, por isso gostaria do teu poto vista sobre o que seriaa solução mais indicada nesse caso..

Um forte abraço,

Hugo

Fala ai Hugo, tudo bem? Eu gostei de solução proposta, está muito boa, envolve vários conceitos, como: Herança, Polimorfismo, Acoplamento, Responsabilidade, Abstração, Reuso, etc...

Muito bem, parabéns.

Sobre "melhor" solução, isso não existe, cada cenário e contexto muda, não tem essa de melhor ou pior e certo ou errado, tente desapegar de termos como esses.

Espero ter ajudado.

Ajudou sim Matheus.. muito obrigado pela atenção e rápido retorno!

Uma boa semana!

Magina Hugo, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software