Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

EXIBIR MENSAGEM DE UMA COMPOSIÇÃO

Olá, estou tentando exibir uma mensagem utilizando o conceito de composição mas não estou obtendo sucesso

public class Gerente extends Funcionario{

private AutenticacaoUtil autenticador;

public Gerente() {
    this.autenticador = new AutenticacaoUtil();
}



public void setSenha(int senha) {
    this.autenticador.setSenha(senha);

}

public boolean autentica(int senha) {
    return this.autentica(senha);

}



@Override
public double getBonificacao() {
    // TODO Auto-generated method stub
    return 0;
}

public class AutenticacaoUtil {

private int senha;

public void setSenha(int senha) {
    this.senha = senha;

}

public boolean autentica(int senha) {
    if(this.senha == senha) {
        System.out.println("Bem vindo ao sistema");
        return true;

    } else {
        return false;
    }

}

}


public class TesteReferencias {

public static void main(String[] args) {

    Gerente g1 = new Gerente();
    g1.setNome("Marcos");
    g1.setSalario(5000.0);
    g1.setSenha(123);
    g1.setSenha(11);
    EditorVideo ev = new EditorVideo();
    ev.setSalario(2500.0);

    Designer d = new Designer();
    d.setSalario(2000.0);

    ControleBonificacao controle = new ControleBonificacao();
    controle.registra(g1);
    controle.registra(ev);
    controle.registra(d);

    System.out.println(controle.getSoma());

}

}

Obs: quero exibir a mensagem Bem vindo ao Sistema se caso a senha corresponder, mas não estou conseguindo

4 respostas
solução!

Olá Samuel, pelo o que eu vi no seu código, na classe Gerente, o método autentica está da seguinte forma:

public boolean autentica(int senha) {
    return this.autentica(senha);
}

Isso faz com que o seu código entre em um loop infinito, pois assim que você chamar o método autentica do Gerente, ele vai chamar ele mesmo e assim por diante. Pelo o que eu entendi, você quer chamar o método autentica do autenticador:

public boolean autentica(int senha) {
    return this.autenticador.autentica(senha);
}

Só que além disso, dentro do main, da classe TesteReferencias, quando você dá uma senha pro gerente, que será a mesma senha no autenticador, falta você autenticá-la, chamando o método autentica do Gerente, por exemplo:

Gerente g1 = new Gerente();
g1.setNome("Marcos");
g1.setSalario(5000.0);
g1.setSenha(123);
g1.autentica(123);

Olá Samuel, a sua dúvida foi resolvida? Era disso mesmo que você precisava?

Muito Bom! Obrigado!

De nada, Samuel!

Como a sua dúvida foi resolvida, eu vou fechar esse tópico, tudo bem?

Para qualquer outra dúvida ou problema, não hesite em recorrer ao nosso fórum! 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