Programação Orientada a Objetos: ArrayList lista de objetos

porLuis Augusto Moretto

Programação Orientada a Objetos: ArrayList lista de objetos

Programação orientada a objetos

ArrayList: Motivação

O problema com os arrays é que eles são de comprimento fixo. Se estiver cheio, você não pode adicionar mais elementos a ele. 

Da mesma forma se houver um número de elementos removidos, o consumo de memória seria o mesmo que não encolher. 

Por outro lado, o java.utilArrayList pode crescer e diminuir dinamicamente após a adição e remoção de elementos. 

Além desses benefícios, a classe java.utilArrayList nos permite usar métodos pré-definidos que facilitam nossa tarefa.  Por exemplo implementar critérios de ordenação com poucas linhas de código.

Arraylist: Exemplo

Na figura abaixo exemplo do encapsulamento de uma classe java.utilArrayList. A classe encapsula o controle para adicionar, remover e recuperar o numero de contatos.

  1. Pode conter elementos duplicados.
  2. Mantém a ordem de inserção.
  3. Não está sincronizada (threads).
  4. Permite o acesso aleatório porque a matriz funciona na base do índice.
  5. A manipulação é lenta, porque internamente, uma grande número de operações ocorre se qualquer elemento for removido da lista.

No examplo abaixo, a classe PessoaController usa a estratégia de overload nos métodos addContato e removeContato. Como pode-se observar o nome do métodos é o mesmo. Entretanto a assinatura do mesmo é distinta (tipo do parâmetro).

A classe java.util.ArrayList tem métodos para:

  • add: Adiciona um objeto ao fim da lista
  • remove: remove um objeto pela posição ou objeto
  • size: retorna um valor inteiro com o tamanho da listar
arraylist - Java estrutura de dados
ArrayList

Exercícios

Crie um programa para gerenciar um restaurante. O programa deve permitir cadastrar as mesas que estão ocupadas por clientes.

Cada mesa deve ter as seguintes informações: número, nome do cliente, e uma lista dos itens pedidos.

O pedido deve ter o nome do produto e o valor.

Crie programa principal (PSVM) para controlar o funcionamento do sistema. Armazene as mesas ocupadas em uma lista.

Cada cliente que chega, adicione uma nova mesa na lista. Cada cliente que sai, remova a mesa da lista. 

O valor da conta da mesa removida deve ser acumulada numa variável “faturamento”, para saber quando foi apurado no dia.

Crie os métodos e construtores necessários para o funcionamento do sistema.

Classe Mesa
– numero : int
– cliente : String
– pedidos : java.util.ArrayList<Pedido>

Classe Pedido
– nome: String
– valor: double

Restaurante (PSVM / JInput..)
– mesas :  java.util.ArrayList<Mesa>
– faturamento : double