3
respostas

Dúvida no Ex. 3 da Aula 3 - Códigos parecidos e o Template Method

No trecho de código abaixou, caso exista apenas um item no orcamento, será retornado true, porém pelo que entendi do exercício, deve-se retornar true apenas se existir dois igual com o mesmo nome, correto?

 public boolean deveUsarMaximaTaxacao(Orcamento orcamento) {
        List<String> noOrcamento = new ArrayList<String>();

        for(Item item : orcamento.getItens()) {
          if(noOrcamento.contains(item.getNome())) return true;
          else noOrcamento.add(item.getNome());
        }

        return false;
      }
(
3 respostas

Entendi o algorítmo, se "noOrcamento.contains" for "true" é por que o item já existe na noOrcamento.

Resolvido.

Confesso que eu não entendi, ainda! Fiz o meu, mas acabou ficando com 2 if´s

Lendo a lógica do prefessor para entender.

public class IHIT extends TemplateDeImpostoCondicional {

    private String nomeItem;

    @Override
    public boolean deveUsarMaximaTaxacao(Orcamento orcamento) {

        return temDoisOuMaisItensNo(orcamento);
    }

    @Override
    public double maximaTaxacao(Orcamento orcamento) {

        return orcamento.getValor()*0.13 + 100;
    }

    @Override
    public double minimaTaxacao(Orcamento orcamento) {
        return orcamento.getValor()*0.01 + orcamento.getItens().size();
    }

    public boolean temDoisOuMaisItensNo(Orcamento orcamento){
        if (orcamento.getItens().size()>=2) {
            for (Item item : orcamento.getItens()) {
                if(item.getNome().equals(nomeItem))
                    return true;    
            }
        }
        return false;
    }

    public IHIT(String nomeItem){
        this.nomeItem = nomeItem;

    }
}

Oi Júlio o contains Retorna true se esta coleção contiver o elemento especificado. Mais formalmente, retorna true se e somente se essa coleção contiver pelo menos um elemento, então se esse elemento já existe eu vou aplicar a taxaçao maxima de 13% mas se ele não existe ele é unico ainda então retorno false.

Espero ter ajudado e bons estudos.