Exercícios: coleções de Objetos com ArrayList
Assunto principal: ArrayList
Padrão pedagógico: read before write.
Baixe este projeto, descompacte-o e abra pelo BlueJ.
Leia o código-fonte da classe BancoDeDados (é parecido com o que foi produzido em aulas anteriores) e considere as seguintes questões, observações e exercícios.
- A classe BancoDeDados usa duas abordagens diferentes para armazenar as coleções de objetos CD e Video, a primeira com vetores comuns (declarados com []), a última com o uso de um objeto da classe ArrayList (importada do pacote java.util). Qual é a diferença entre as duas abordagens? Qual é a abordagem mais adequada para esta classe específica, e por quê?
- Como acessamos objetos específicos de um ArrayList?
- Implemente um método acessador (get) para o atributo videos.
- Implemente a abordagem com ArrayList para o vetor de cds, fazendo as alterações necessárias.
- No BlueJ, crie um novo objeto da classe CD e um novo objeto da classe BancoDeDados. Pelo painel de objetos do BlueJ, chame o método setTitulo do objeto CD, passando "X" como parâmetro. Adicione esse mesmo CD 5 vezes ao objeto banco de dados. Verifique o preenchimento de 5 posições no vetor de cds do objeto BancoDeDados. Verifique, também, que todos têm o mesmo título. Através do painel de objetos do BlueJ, chame o método setTitulo do cd que você criou no primeiro passo, desta vez passando "Y" como parâmetro. Observe os títulos dos objetos do vetor de cds do objeto BancoDeDados. O que você pôde perceber e por que isso aconteceu?
- Implemente em seu programa a funcionalidade de pesquisar cd's por título (pode considerar que não há títulos repetidos)
- Implemente em seu programa a funcionalidade de pesquisar vídeos por título (pode considerar que não há títulos repetidos)
- Implemente em seu programa a funcionalidade de pesquisar vídeos por um dado intervalo de duração
- Implemente em seu programa a funcionalidade de pesquisar todos os cd's que você possui
- Implemente em seu programa a funcionalidade de pesquisar vídeos por palavra chave no título (você pode precisar ler a documentação da classe String, método indexOf). Por exemplo, a pesquisa pela palavra "liberdade" poderia retornar os vídeos com os títulos "Sonho de Liberdade" e "A Liberdade é Azul"
- Para reflexão: se fosse alterar a classe BancoDeDados, com o que você sabe até agora, de forma que cds e videos sejam armazenados num único ArrayList. Em que ponto do programa você encontraria dificuldades?
- Utilizando os conceitos desta aula, crie um banco, que tem uma coleção de contas correntes
Desafio 1:
Implemente uma classe Vetor, que deve funcionar da mesma forma que funciona a classe ArrayList. Um objeto Vetor deve ser capaz de armazenar qualquer objeto em suas estruturas internas, e em quantidade arbitrária. As operações que um objeto Vetor deve oferecer são:
- adicionar - esta operação adiciona um dado objeto ao final do Vetor
- adicionarEm - esta operação adiciona um dado objeto numa dada posição
- primeiro - retorna o primeiro elemento armaznado na coleção
- ultimo - retorna o último elemento armazenado na coleção
- obterObjetoEm - retorna um objeto numa dada posição
- remover - remove o objeto de uma dada posição
OBS: NÃO é permitido o uso de ArrayList ou de qualquer classe java que faça o serviço pra você.
Desafio 2:
Implemente uma pilha, em java, utilizando vetores
Implemente uma pilha, em java, utilizando listas encadeadas