Cursos / Informática para Internet / Desenvolvimento Web I / Aula

arrow_back Aula 12 - Desenvolvendo uma livraria virtual – Parte 1

Modelagem do negócio III

x
1
package livraria.negocio;
2
3
import java.util.*;
4
5
public class CarrinhoCompras {
6
    Map<String, ItemCompra> itens;
7
8
    public CarrinhoCompras() {
9
        itens = new HashMap<String, ItemCompra>();
10
    }
11
12
    public synchronized void adicionar(Livro book) {
13
        if (itens.containsKey(book.getIdLivro())) {
14
            ItemCompra item = itens.get(book.getIdLivro());
15
            item.incrementaQuantidade();
16
        } else {
17
            ItemCompra novoItem = new ItemCompra(book);
18
            itens.put(book.getIdLivro(), novoItem);
19
        }
20
    }
21
22
    public synchronized void remover(String idLivro) {
23
        if (itens.containsKey(idLivro)) {
24
            ItemCompra item = itens.get(idLivro);
25
            item.decrementaQuantidade();
26
            if (item.getQuantidade() <= 0) {
27
                itens.remove(idLivro);
28
            }
29
30
        }
31
    }
32
33
    public synchronized List<ItemCompra> getItens() {
34
        List<ItemCompra> resultado = new ArrayList<ItemCompra>();
35
        resultado.addAll(this.itens.values());
36
        return resultado;
37
    }
38
39
    protected void finalize() throws Throwable {
40
        itens.clear();
41
    }
42
43
    public synchronized int getNumeroItens() {
44
        int numeroItens = 0;
45
        for (ItemCompra item : getItens()) {
46
            numeroItens += item.getQuantidade();
47
        }
48
        return numeroItens;
49
    }
50
51
    public synchronized double getTotal() {
52
        double total = 0.0;
53
        for (ItemCompra item : getItens()) {
54
            Livro book = item.getItem();
55
            total = total + (item.getQuantidade() * book.getPreco());
56
        }
57
        return total;
58
    }
59
60
    public void limpar() {
61
        itens.clear();
62
    }
63
}
Listagem 3 - Classe que representa um carrinho de compras virtual

O método remover(), na linha 22, só vai fazer algo caso exista uma entrada no mapeamento para o código do livro passado como parâmetro. Se esse for o caso, basta recuperar o objeto ItemCompra mapeado (linha 24) e decrementar, em uma unidade, a quantidade de livros a ser comprada (método decrementaQuantidade()).

play_circle_filled
Vídeo 03 - Mapas

Por fim, caso a quantidade de livros restante a ser comprada seja menor ou igual a zero, isso quer dizer que nenhum livro daquele tipo será comprado. Sendo assim, removemos do mapeamento a entrada relativa a esse livro (linha 27), fazendo com que esse item saia do carrinho de compras.

É interessante destacar alguns outros métodos, como o getItens(), da linha 33, o qual retorna o conteúdo do carrinho de compras, ou seja, todos os itens a serem comprados. Para isso, criamos uma nova lista de objetos ItemCompra e adicionamos nessa lista todo os itens existentes no carrinho de compras. Isso é feito por meio do método addAll(), o qual recebe uma coleção de objetos (conteúdo do carrinho) e adiciona todos esses elementos na lista criada.

Outro método do carrinho de compras é o getTotal(), linha 51, o qual percorre todos os elementos do carrinho de compras e contabiliza o valor total a ser gasto com a compra desses produtos. Para isso, o método leva em conta a quantidade de livros a serem comprados e o preço unitário. A variável total é utilizada como acumulador (linha 55) durante o cálculo do valor total a ser gasto na compra dos livros selecionados.

Por fim, vale a pena também ressaltar que o método limpar(), definido na linha 60, tem como objetivo remover todos os itens selecionados do carrinho de compra. Isso é feito acionando-se o método clear() da interface Map, que vai eliminar todas as entradas existentes no mapeamento.

Versão 5.3 - Todos os Direitos reservados