4
respostas

Limitação de uma aplicação de desconto em cada estado ou para o orçamento como um todo?

Boa tarde,

Havia entendido que a limitação de aplicação de desconto extra seria de, no máximo, um desconto por Orçamento (independente do estado em que se encontra).

O código solução de vocês implementa um limite de uma aplicação de desconto extra POR ESTADO (EmAprovacao e Aprovado).

Qual a interpretação correta? Talvez exista oportunidade para melhorar a descrição do quesito.

Desde já grato,

João Sampaio

4 respostas

Boa noite,

Tive essa mesma dúvida. Pela resposta, parece que é para se limitar apenas o desconto para aquele mesmo estado mais de uma vez, porém isso não fica claro no texto do exercício. Dá a impressão que é para se limitar uma única vez independente do estado, uma vez que já tenha sido concedido.

Seria bom deixar isso claro no texto do exercício, pois existem muitas dúvidas aqui justamente por conta disso.

Boa noite.

Eu sei que já tem bastante tempo desde que essa pergunta foi feita, mas eu gostaria de compartilhar minha solução.

Eu pensei na mesma coisa que vocês e, acredito, muita gente.

Como no exercício não ficou muito claro, eu optei por fazer o que fazia mais sentido parar mim: uma variável de controle por orçamento, ao invés de por estado.

Para isso, basta transferirmos a variável "descontoAplicado" para a classe "Orcamento". Será necessário, no entanto, mudar seu modificador de acesso para "protected", assim permitindo que os estados a manipulem.

protected boolean descontoAplicado;

(não esqueça de inicializar a variável no construtor)

Nas classes de estado, basta acessarmos a variável diretamente:

if ( !orcamento.descontoAplicado ) {
    orcamento.valor -= orcamento.valor * 0.05;
    orcamento.descontoAplicado = true;
}

Ou então, opcionalmente, você pode colocar o modificador de acesso como "private" e usar getters/setters, fica à seu critério.

Espero ter ajudado. Um abraço.

Boa noite!

Também fiquei com dúvida se era por orçamento ou por estado. Acabei fazendo por orçamento, já que o exercício não explicitava que era por estado. Mas minha solução acabou ficando diferente, utilizei estado (padrão State) também para o desconto aplicado. Seria adicionar complexidade desnecessária utilizar o padrão State para essa solução?

Oi João dois estados possuem uma regra de desconto, são eles em aprovação (5%) e Aprovado(2%), os outros estados não aplicam, perceba que a aplicação de desconto está atrelada ao estado do objeto e não ao orçamento, na própria aula vemos a aplicação de dois descontos para um mesmo orçamento, acontece que como esse método é publico eu poderia aplicar esse desconto infinitamente por isso esse exercício propõe que implementemos uma lógica para restringir a plicação do desconto apenas uma vez por estado.

Espero ter ajudado e bons estudos.