2
respostas

Sobre o getQuantidade

Na aula 11, Expondo atributos no JSP, não ficou claro pra mim a diferença dos métodos getQuantidade na classe CarrinhoCompras, pois vc fala que os dois são para pegar a quantidade de itens. Poderia esclarecer?

2 respostas

Fala ai Danila, tudo bem ?

private int getQuantidade(CarrinhoItem item) {
    if(!itens.containsKey(item)){
        itens.put(item, 0);
    }
    return itens.get(item);
}

Perceba que estamos usando o método containsKey que verifica se a lista tem a chave, que no caso é o item do carrinho. Estamos usando ! que é o sinal de negação da expressão lógica. Ou seja, se a lista não tiver o item, este será adicionado com o valor 0 na mesma. E então o método get usado no return retorna o valor que está associado aquela chave.

Explicando melhor... Caso o item não exista na lista, colocamos o item e retornamos o valor 0, que será incrementado pelo metódo add. Mas caso o item já exista, retornamos apenas o valor que representa a quantidade de vezes que o produto foi adicionado na lista.

Apesar de usar o método containsKey não é o suficiente. Ele usa o método equals disponível na classe Object. Para que o método containsKey consiga comparar corretamente os itens da lista, devemos sobrescrever dois métodos na classe CarrinhoItem e depois, na classe Produto.

Me referia aos dois getQuantidade da classe CarrinhoCompras. Mas encontrei isso: "A classe CarrinhoCompras já tem um método getQuantidade, mas ele só retorna a quantidade de um produto especifico. Criaremos um novo método getQuantidade que irá iterar entre todos os itens do carrinho e contar quantos produtos estão na lista de itens. " Acho que ainda não entendi o motivo. Entendi que um é para saber qual a qtde do mesmo produto e outro é a qtde total de produtos. Então, se o produto já existir no carrinho não deverá ser adicionado mais um?