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

[Dúvida] A bonificação do meu Gerente resulta em um valor menor.

Estou sem conseguir identificar o que ficou diferente no projeto do instrutor. A bonificação que deveria ser de 5000.0 + 250.0 está saindo apenas como 500.0

public class Funcionario {
    private String nome;
    private String cpf;
    private double salario;

    public double getBonificacao() {
        return this.salario = salario * 0.05;
    }
        //getters omitidos
    public class Gerente extends Funcionario {
        public double getBonificacao() {
        return super.getBonificacao() + super.getSalario(); 
    }
}
public class TestaGerente {
    public static void main(String[] args) {

        Gerente gerente = new Gerente();
        gerente.setSalario(5000.0);

        System.out.println("Salario: R$" + gerente.getSalario()); 
        //Salario: R$5000.0

        System.out.println("Bonificacao: R$" + gerente.getBonificacao()); 
        //Bonificacao: R$500.0
3 respostas

Boa noite André.

Você está somando o salário duas vezes nessa classe:

    public class Gerente extends Funcionario {
        public double getBonificacao() {
        //super.getBonificacao() já aplica 5% ao salário declarado e atualiza o valor para 5250
        return super.getBonificacao() + super.getSalario();  // aqui você soma mais 5000 e depois aplica 5%, o que dá 500.
    }
}

Para corrigir, remova a soma redundante.


public class Gerente extends Funcionario {
    public double getBonificacao() {

        return super.getBonificacao();
    }
}

Bons estudos!!

Fernanda Ribeiro, obrigado mas eu entendi o exercicio diferente. O salario é de 5000 e o gerente receberá mais um salario de 5000 e mais 5% = 10250. Mas pelo metodo que criamos ele só mostra a bonificação e nao o total, entao o resultado deveria aparecer 5250 e não apenas 250 ou 500.

O código está igual ao do professor mas o resultado sai diferente: Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

André.

Tem razão, me desculpe. Para retornar no mesmo modelo do professor. o getBonificação do Funcionário não deve reassociar o valor do salário como seu exemplo:

public class Funcionario {
    private String nome;
    private String cpf;
    private double salario;

    public double getBonificacao() {
        return this.salario = salario * 0.05;
    }
        //getters omitidos

Ficaria assim:

public class Funcionario {
    private String nome;
    private String cpf;
    private double salario;

    public double getBonificacao() {
        return  this.salario * 0.05;
    }
        //getters omitidos

O restante fica como você enviou.

Caso queira adicionar o dobro do salário para o gerente, basta ajustar o método na classe Gerente conforme abaixo:

package bonificacao;

public class Gerente extends Funcionario {
    public double getBonificacao() {

        return super.getBonificacao() + (super.getSalario() * 2);
        // output R$ 10250,00
    }
}