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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?
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?