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

Não deveríamos ter usado uma variável do tipo Static para a soma de bonificação?

Pelo o que aprendemos nos vídeos passamos, se queremos uma variável a nível de classe, ou seja, que valha para todas as instâncias de um objeto, devemos criar atributos do tipo static. Na classe que fizemos em aula o atributo soma não foi declarado como static, porém foi efetivo na soma de bonificações. Fiquei na dúvida porque se funcionou, então o conceito de ser necessário atributo do tipo static para que valha para todas as instâncias de um objeto perde o sentido. Seque o código da Classe bonificação:

public class ControleBonificacao {

private double soma;

public void Registra(Funcionario f) {
    this.soma = this.soma + f.getBonificacao();
}

public double getSoma() {

Abaixo segue as classes que à chamam:

public class TestaBonificacao {

public static void main(String[] args) {

    Funcionario f1 = new Funcionario();
    EditorDeVideo ev1 = new EditorDeVideo();
    Gerente g1 = new Gerente();

    f1.setNome("Francisco");
    f1.setSalario(2000);

    ev1.setNome("Marcio");
    ev1.setSalario(2500);

    g1.setNome("Thiago");
    g1.setSalario(5000);

    ControleBonificacao controleBonificacao = new ControleBonificacao();
    controleBonificacao.Registra(f1);
    controleBonificacao.Registra(ev1);
    controleBonificacao.Registra(g1);

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

}

}

    return this.soma;
}

}

2 respostas
solução!

Oi Thiago, tudo bem?

Nesse caso, temos apenas uma única instância do ControleBonificacao:

ControleBonificacao controleBonificacao = new ControleBonificacao();
controleBonificacao.Registra(f1);
controleBonificacao.Registra(ev1);
controleBonificacao.Registra(g1);

Portanto o valor de soma permanece. O outro caso seria se criássemos uma nova instância de ControleBonificacao, já que aí sim teríamos problemas em continuar usando o valor do atributo soma.

Qualquer dúvida é só avisar!

Bons estudos!!

Verdade. Muito obrigado pela atenção!