Cursos / Informática para Internet / Desenvolvimento Web I / Aula
Para modelar o armazenamento dos livros disponíveis na livraria virtual, iremos utilizar uma abordagem em memória. Isso porque o foco do curso é ensinar as tecnologias web. Entretanto, é fortemente recomendado para os alunos que concluíram o módulo Banco de Dados, como atividade opcional, que usem banco de dados ao invés da abordagem em memória. Entretanto, essa implementação em banco de dados não pode interferir seu rendimento no curso, se possível, sendo realizada apenas ao final deste módulo.
Utilizaremos uma classe chamada Livraria para representar tanto as operações na livraria como o meio de armazenamento.
A primeira parte da implementação dessa classe é mostrada na Listagem 4.1 e é uma simplificação do que um sistema desenvolvido para o mercado pode possuir. A nossa implementação possui uma lista de objetos do tipo Livro (linha 18), representando o estoque existente na livraria virtual.
Como a nossa implementação é em memória, toda vez que o servidor é reiniciado, o estoque deve ser carregado na memória. Isso é feito pelo método popularLivros(), definido na linha 20. Esse método, executado logo quando o objeto Livraria é criado (linha 17), tem como objetivo criar alguns livros e inseri-los no estoque.
Listagem 4.1 - Implementação da classe Livraria – Parte 1Além disso, a classe Livraria deve possuir métodos de consulta aos livros disponíveis. Esses métodos são vistos na Listagem 4.2. O método getLivros() retorna todos os livros disponíveis.
Note que a implementação desse método faz uso da operação Collections.unmodifiableList().
Essa operação pega uma lista como parâmetro e retorna uma lista com os mesmos elementos, porém, seus métodos de modificação da lista (adicionar e remover) irão levantar uma exceção se executados. Isso é opcional, mas garante que apenas a lista original, guardada pela classe Livraria, poderá ser modificada. Essa garantia nos permite saber que apenas métodos da classe Livraria podem adicionar ou remover livros da lista, evitando que essas operações sejam executadas “sem querer” por outras partes do código que tiveram acesso a ela pelo método getLivros().
Outro método de busca disponível é o getLivro(), o qual recebe um código e retorna o livro relacionado àquele código (linhas 48 a 50) ou levanta a exceção LivroNaoEncontradoException (linhas 53 a 56), caso não exista no estoque nenhum livro com o código passado. Essa exceção foi definida por nós e seu código é visto mais adiante, na Listagem 5.
Versão 5.3 - Todos os Direitos reservados