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

Variavel soma

Eu entendi a questão do polimorfismo, mas não entendi aquela variável soma, a qual não foi atribuido nenhum valor. Sei que pode parecer meio idiota a pergunta, mas quando se coloca:

this.soma += boni;

se não foi atribuido o valor soma, o estou somando com a variavel boni.

5 respostas

Oie Erick, tudo bem contigo?

Quando declamos uma variável como atributo de uma classe ela automaticamente recebe um valor padrão, no caso do atributo soma por ser um double, o valor é "0.0"

Por isso que ao fazer this.soma = this.soma + boni; na primeira vez, seria algo como this.soma = 0.0 + boni;.

Importante ressaltar que as variáveis só são inicializadas automaticamente se forem declaradas nesse escopo de atributo de classe, se for em qualquer outro escopo, por exemplo se for declarada dentro do método main ou outro método, a variável precisará ser inicializada manualmente.

Essa inicialização automatica coloca valores padrões, no caso de "double" é "0.0", "int" é "0", "String" é "null" e assim por diante.

Espero que tenha ficado claro, se não, é só mandar por aqui que iremos ajudar :)

Bons estudos!

Opa Igor, tranquilo e você??

Primeiramente, muito obrigado pela sua resposta

Então isso eu entendi, eu não entendi o que a variável soma está fazendo ali se o valor dela é 0 entende??

qual a diferenção só de declarar this.boni = getBonificacao(), para this.boni = getBonificacao() return this.soma = this.soma + boni, já que this soma = 0.0... matemáticamente eu não estou entendendo a necessidade desta variável, afinal 0.0 + boni == boni.

solução!

Tudo ótimo comigo!

Então, essa classe "ControleBonificacao" serve para devolver a soma de todas as bonificações, por isso toda vez que o método "registra" é chamado ocorre o incremento do valor de soma, ou seja, se na classe teste temos:

ControleBonificacao controle = new ControleBonificacao();
        controle.registra(g1); // método registra vai armazenar o valor da bonificação do objeto g1 no atributo soma, com a lógica this.soma = this.soma + boni;
        controle.registra(ev); // método registra vai somar o valor que está dentro do atributo soma (que é a bonificação do objeto g1) com a bonificação desse objeto ev e vai armazenar novamente dentro do atributo soma.
        controle.registra(d); // método registra vai somar o valor que está dentro do atributo soma (que é a bonificação do objeto g1 + bonificação do objeto ev) com a bonificação desse objeto d e vai armazenar novamente dentro do atributo soma.

O método soma sempre vai guardar o cálculo da bonificação que entrou anteriormente com o que está entrando no momento, e no final irá devolver a soma de todas as bonificações.

Espero que agora tenha ficado mais fácil de entender, qualquer coisa estou aqui!

Entendi sim meu querido. Muito obrigado pela força aí.

Também tive essa dúvida. Valeu pela solução