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

Estou com dúvida no curso de Design Patterns para bons programadores, no exercício do capítulo Códigos parecidos e o Template Method.

No capitulo 3 do curso de Design Patterns, exercício 3 é pedido uma implementação de imposto nova, chamada IHIT. O meu problema não é quanto ao entendimento do problema, e sim o porque da minha solução não dar certo. Para dar o valor máximo de desconto, o meu orçamento precisa ter dois itens com o mesmo nome.

```public boolean darValorMaximo(Orcamento orcamento) { for (Item i : orcamento.getItens()) { if (orcamento.getItens().contains(i)) { return true; } } return false; }

Fiz desta forma. Como o contains da lista utiliza o equals, reescrevi o Equals da minha classe Item:

public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Item other = (Item) obj; if (nome == null) { if (other.nome != null) return false; } else if (!nome.equals(other.nome)) return false; return true; } ```

Quando eu crio um orçamento, com dois itens diferentes, com nome diferentes, este método retorna TRUE. Ele mê da o desconto máximo, sendo que não deveria. Alguem sabe porque?

1 resposta
solução!

Esqueçam por favor. Li o enunciado errado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software