Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Meu código é viável ?

Como o resultado aparecendo no console do instrutor estava somando todas as bonificações, decidi fazer um código que mostre o nome do funcionário + a soma da bonificação. Para não ficar com dúvidas de qual bonificação estava sendo usada. Acredito que o único problema seria caso o funcionário não tivesse um nome atribuído.

public class ControleBonificacao {

    private double soma;

    public void registraEAparece(Funcionario f) { // utiliza do polimorfismo aproveitando que todos os funcionarios
                                                    // registrados
                                                    // sendo eles gerente, etc. continuam sendo funcionarios

        double boni = f.getBonificacao();
        this.soma = this.soma + boni;
        System.out.println("A bonificação do " + f.getNome() + " é de " + soma);
        soma = 0; // depois que imprime o nome do funcionario + a soma. A soma é zerada para que o
                    // proximo funcionario possa chamar o metodo
    }

    public double getSoma() {
        return soma;
    }

}

Gostaria de saber se este código é bem estruturado.

1 resposta
solução!

Oie Lucas, tudo bem contigo?

Seu código funciona perfeitamente, entretanto a variável soma seria desnecessária já que você não irá mostrar a soma das bonificações mas sim o nome do funcionário e o quanto de bonificação ele vai receber. Tanto é que se você colocar o seguinte código na classe funcionário e fazer a chamada dele na classe "TesteReferencias" você terá o mesmo resultado. Veja abaixo:

Na classe funcionário:

@Override
public String toString() {
    return "A bonificação do " + this.getNome() + " é de " + this.getBonificacao();
} 

Na classe teste referência:

System.out.println(g1);
System.out.println(ev);
System.out.println(d);

Por isso, o seu código compila mas existem maneiras mais faceis para se chegar nesse mesmo resultado como a que eu mostrei acima, usando o "toString" com os conceitos da "herança".

Mais para frente no curso falando sobre "java.lang" você entenderá melhor sobre o funcionamento do "toString" mas se tiver curiosidade na apostila de Orientação Objeto da Caelum temos um capitulo que fala sobre isso, clique aqui para ver.

Espero ter ajudado, qualquer coisa fico a disposição :)

Bons estudos!