3
respostas

Dúvida no método getSoma()

Senhores, ótima noite.

Estou com um desafio na chamada do método getSoma() da classe ControleBonificacao(), os valores aparetemente não batem, segue exemplo.


public class TestePolimorfismo {

    public static void main(String[] args) {

        Tecnico tecnico = new Tecnico();
        Especialista especialista = new Especialista();
        Gerente gerente = new Gerente();

        tecnico.setSalario(1000.00);
        especialista.setSalario(2000.00);
        gerente.setSalario(3000.00);

        ControleBonificacao controle = new ControleBonificacao();
        controle.registra(tecnico);
        controle.registra(especialista);
        controle.registra(gerente);

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

public class Gerente extends Funcionario{

private int senha;


public boolean autenticacao(int senha) {
    if (this.senha == senha) {
        return true;
    } else {
        return false;
    }
}

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

public double getBonificacao() {
    return super.getSalario() + super.getBonificacao();
}

}


public class Especialista extends Funcionario {

    public double getBonificacao() {
        return super.getSalario() + super.getSalario() * 0.5

public class Tecnico extends Funcionario {

    public double getBonificacao() {
        return super.getSalario() + (super.getSalario() * 0.25);
    }

}


public class ControleBonificacao {

        private double soma;

        public void registra(Funcionario funcionario) {
            double bonificacao = funcionario.getBonificacao();
            this.soma = this.soma + bonificacao;
        }

        public double getSoma() {
            return this.soma;
        }

}
3 respostas

Oi Eduardo, tudo bom?

Pelo que vi, você está somando o salário mais uma porcentagem dele. Exemplo:

public class Especialista extends Funcionario {

public double getBonificacao() {
    return super.getSalario() + super.getSalario() * 0.5
}

}

Neste caso, você está somando o salário (super.getSalario()) + metade do salário (super.getSalario() * 0.5). Se for essa mesma sua intenção, tudo bem. Mas creio que você tenha tentado dar metade do salário de bonificação ao Especialista. Neste caso, o código seria:

public double getBonificacao() { return super.getSalario() * 0.5; } }

Me diz se eu entendi certo sua dúvida! Abraço!

Oi Wagner, a intenção seria realizar o teste com o técnico recebendo 1.25 de bonificação, o especialista 1.5 e o gerente 2.0 ou seja R$1.250,00 + R$3.000,00 + R$6.000,00 respectivamente mas o retorno ficou em R$7.400,00, fiquei com dúvida nessa parte.

Olá amigo! Agora entendi. Mas creio que o erro esteja no método getBonificacao() do Gerente, pois me parece que ele não está somando o getSalario() ao getBonificacao(). Qual é a implementação desse método na classe Funcionario? Ele retorna algo?