Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS



Documentos relacionados
Lógica de Programação

Roteiro do Programa e Entrada/Saída

Orientação a Objetos

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Programação Orientada a Objetos. Encapsulamento

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Projeto de sistemas em Java. Algoritmos e Programação I. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario

JSP - ORIENTADO A OBJETOS

Orientação a Objetos

Herança. Algoritmos e Programação II. Aula 5 Herança

Como usar o bluej. Laboratório I Prof.ª Vera Alves

Técnicas de Programação II

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

5 Caso de estudo O cartão fidelidade

Noções sobre Objetos e Classes

Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade

Banco de Dados Modelo Conceitual, Lógico, Físico, Entidade- Relacionamento (ER) Hélder Nunes

Encapsulamento de Dados

Aula Inicial. c Professores de ALPRO I 08/2010. Faculdade de Informática PUCRS. ALPRO I (FACIN) Aula Inicial 08/ / 23

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Implementando uma Classe e Criando Objetos a partir dela

POO Programação Orientada a Objetos. Classes em Java

Árvores Binárias de Busca

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

Guia de Fatores de Qualidade de OO e Java

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Reuso com Herança a e Composiçã

UFG - Instituto de Informática

Exercícios de Revisão Java Básico

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Introdução a Java. Hélder Nunes

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

BSI UFRPE Prof. Gustavo Callou

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Templates e Pilhas. 1. Introdução

INSTITUTO DE COMPUTAÇÃO UNICAMP 1o. SEMESTRE DE Profa. Cecília M. F. Rubira

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Implementação de Classe e Auto-Relacionamento em Java

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Busca. Pesquisa sequencial

Hashing. Rafael Nunes LABSCI-UFMG

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

DEFINIÇÃO DE MÉTODOS

Módulo 06 Desenho de Classes

Capítulo 4. Packages e interfaces

Coleções Avançadas. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

Algoritmos e Programação II. Sobrecarga

Modulo IIa Extra: Object

INF 1007 Programação II

AULA 12 CLASSES DA API JAVA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes alba.lopes@ifrn.edu.br

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Rock In Rio - Lisboa

Unidade IV: Ponteiros, Referências e Arrays

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

2 Orientação a objetos na prática

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Java na WEB Componentes Bean

Programação de Computadores - I. Profª Beatriz Profº Israel

Árvores Binárias de Busca

UML Aspectos de projetos em Diagramas de classes

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Programação Visual TIC - 3PA. Lista de Exercícios 02

Linguagem de Programação III

Linguagem de Programação I. Orientação a Objetos em Java

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

Gerencie a sala de espera e garanta a satisfação dos pacientes

GUIA DE INTEGRAÇÃO APP2APP APLICATIVO PAGSEGURO 1. Guia de Integração App2App Aplicativo PagSeguro VERSÃO 1.0.0

O Processo Unificado: Captura de requisitos

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Conteúdo: Introdução à Orientação a Objetos

Programação para Android. Aula 07: Persistência de dados Shared Preferences, Internal e External Storage

Tipos agregados. Tipos estruturados

BC0501 Linguagens de Programação

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Algoritmos e Estruturas de Dados I

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Android e Bancos de Dados

Padrões de Projeto. Singleton

Manual do Programa de Caixa1

Linguagem C: Árvores Binarias

DAS5102 Fundamentos da Estrutura da Informação

Módulo Publicações Publicações On Line. Módulo Publicações

Transcrição:

Coleções Conceitos e Utilização Básica c Professores de ALPRO I Faculdade de Informática PUCRS 05/2012 ALPRO I (FACIN) Coleções: Básico 05/2012 1 / 41

Nota Este material não pode ser reproduzido ou utilizado de forma parcial sem a permissão dos autores. $Id: aula32_arraylist.lyx 94 2009-05-18 20:03:02Z flash $ ALPRO I (FACIN) Coleções: Básico 05/2012 2 / 41

Sumário 1 Coleções Definição Modelando com coleções 2 ArrayList Visão geral Criando uma coleção Adicionando um elemento Acessando um elemento Localizando um elemento Removendo um elemento Utilizando a classe Cadastro 3 Exercícios ALPRO I (FACIN) Coleções: Básico 05/2012 3 / 41

Coleções Coleções Em diversos problemas, é necessário representar uma coleção de objetos. Cadastro: coleção de funcionários. Chamada: coleção de alunos. ALPRO I (FACIN) Coleções: Básico 05/2012 5 / 41

Coleções Definição Coleções Coleção É um objeto capaz de armazenar referências para um grupo de objetos de uma outra classe. Exemplos: Uma chamada armazena referências para vários alunos. Um cadastro armazena referências para vários funcionários. A classe java.util.arraylist implementa coleções, em Java. Consulte a documentação da classe na API Java para conhecer todo os métodos disponíveis. ALPRO I (FACIN) Coleções: Básico 05/2012 6 / 41

Coleções Definição Modelos de coleções no BlueJ As coleções aparecem sempre como dependências entre classes. ALPRO I (FACIN) Coleções: Básico 05/2012 7 / 41

Coleções Modelando com coleções Modelando com coleções Passo ➊: Ao modelar um problema, crie uma classe para representar o grupo de objetos que aparece no problema. Essa classe é denominada classe de controle. Identifique: a classe que representa cada elemento do grupo. as operações realizadas sobre um elemento. a classe que representa o grupo. as operações realizadas sobre o grupo. Um atributo da classe que representa o grupo de objetos é um objeto da classe java.util.arraylist. ALPRO I (FACIN) Coleções: Básico 05/2012 8 / 41

Coleções Modelando com coleções Exemplo: Cadastro de funcionários No problema do cadastro de funcionários: Elemento: Funcionario Operações: aumentar o salário, consultar e alterar nome, CPF, salário... Grupo: Cadastro Operações: admitir ou demitir funcionário, localizar a ficha de um funcionário por nome ou por CPF,... ALPRO I (FACIN) Coleções: Básico 05/2012 9 / 41

Coleções Modelando com coleções Modelando com coleções Passo ➋: Localize na classe ArrayList quais os métodos que podem auxiliar a programar a classe que representa o grupo. Há métodos para inserir e remover elementos. Há uma forma de conhecer o tamanho da coleção, isto é, quanto elementos existem nela. Finalmente, há uma maneira de obter uma referência para qualquer um dos elementos armazenados. ALPRO I (FACIN) Coleções: Básico 05/2012 10 / 41

Coleções Modelando com coleções Exemplo: Cadastro de funcionários (cont.) No problema do cadastro de funcionários, considerando a classe Cadastro (grupo): Admitir funcionário: Método auxiliar: inserir elemento na coleção. Demitir funcionário: Método auxiliar: remover elemento da coleção. Localizar o funcionário por nome ou CPF: Métodos auxiliares: obter um elemento qualquer e obter o tamanho da coleção, junto com uma repetição while. ALPRO I (FACIN) Coleções: Básico 05/2012 11 / 41

ArrayList Visão geral ArrayList: visão geral Os principais métodos da classe ArrayList são: Método ArrayList<E>() boolean add(e elem) boolean remove(e elem) int size() E get(int pos) Descrição Cria uma coleção vazia de objetos da classe E Insere um elemento no final da coleção Remove um elemento da coleção Retorna o tamanho da coleção Retorna o elemento na posição pos Veja todos os métodos em: http://docs.oracle.com/javase/6/docs/api/java/util/arraylist.html ALPRO I (FACIN) Coleções: Básico 05/2012 13 / 41

ArrayList Criando uma coleção Criando uma coleção Importação de pacote Para utilizar a classe ArrayList é necessário importar o pacote que a contém: import java. util. ArrayList ; Dessa forma, no programa agora é possível se referir a ela simplesmente como ArrayList. ALPRO I (FACIN) Coleções: Básico 05/2012 14 / 41

ArrayList Criando uma coleção Criando uma coleção O método construtor Método ArrayList<E>() Descrição Cria uma coleção vazia de objetos da classe E Um ArrayList armazena referências para objetos da classe E. A lista inicia com capacidade para armazenar dez referências. Essa capacidade inicial pode ser alterada se necessário. Exemplos: // Coleção de referências para a classe Funcionario. cadastro = new ArrayList<Funcionario > ( ) ; // Coleção de referências para a classe Aluno. chamada = new ArrayList<Aluno > ( ) ; ALPRO I (FACIN) Coleções: Básico 05/2012 15 / 41

ArrayList Criando uma coleção Criando uma coleção A classe de controle da coleção Contém um atributo do tipo ArrayList. O construtor deve instanciar o ArrayList. Exemplo: cadastro de funcionários. import java. util. ArrayList ; public class Cadastro { private ArrayList<Funcionario> lista ; public Cadastro ( ) { lista = new ArrayList<Funcionario > ( ) ; ALPRO I (FACIN) Coleções: Básico 05/2012 16 / 41

ArrayList Criando uma coleção Inspecionando a coleção via BlueJ ALPRO I (FACIN) Coleções: Básico 05/2012 17 / 41

ArrayList Adicionando um elemento Adicionando um elemento na coleção O método add Método Descrição public boolean add(e elem) Insere um elemento no final da coleção Insere a referência para o objeto elem no final da coleção. Se não houver mais posições livres, a lista é ampliada automaticamente. lista 0 1 2 3 4 func1 func2 func3 ALPRO I (FACIN) Coleções: Básico 05/2012 18 / 41

ArrayList Adicionando um elemento Adicionando um elemento na coleção Utilizando o método add na classe Cadastro Na classe Cadastro, adicionar um elemento corresponde à admissão de um novo funcionário: public class Cadastro { public boolean admitir ( Funcionario f ) { return lista. add ( f ) ; O método é boolean, pois utilizamos o retorno do método add diretamente. ALPRO I (FACIN) Coleções: Básico 05/2012 19 / 41

ArrayList Acessando um elemento Acessando um elemento da coleção O método get Método E get(int pos) Descrição Retorna o elemento na posição pos A primeira posição é a 0. Ex: na lista abaixo, a chamada para get(1) retornará a referência para func2. lista 0 1 2 3 4 func1 func2 func3 ALPRO I (FACIN) Coleções: Básico 05/2012 20 / 41

ArrayList Acessando um elemento Acessando um elemento da coleção Descobrindo o tamanho da coleção: o método size Método int size() Descrição Retorna o tamanho da coleção É fundamental conhecer a quantidade de referências armazenadas na lista. A maioria dos algoritmos baseia-se em repetição para percorrer a lista. Por exemplo, faremos um método para procurar um funcionário através do seu CPF. Se encontrar o funcionário, retorna a referência para o objeto. Se não encontrar, retorna null. ALPRO I (FACIN) Coleções: Básico 05/2012 21 / 41

ArrayList Localizando um elemento Localizando um elemento da coleção Utilizando os métodos get e size na classe Cadastro public class Cadastro { public Funcionario pesquisarcpf ( String cpf ) { Funcionario f = null ; int pos = 0; while ( pos < lista. size ( ) ) { f = lista. get ( pos ) ; if ( f. getcpf ( ). equals ( cpf ) ) return f ; pos++; return null ; ALPRO I (FACIN) Coleções: Básico 05/2012 22 / 41

ArrayList Localizando um elemento Localizando um elemento da coleção A execução do método pesquisacpf public class Cadastro { private ArrayList<Funcionario> lista ; public Cadastro ( ) { lista = new ArrayList<Funcionario > ( ) ; lista 0 1 2 3 4 public Funcionario pesquisarcpf ( String cpf ) { Funcionario f = null ; int pos = 0; while (pos < lista.size()) { f = lista.get(pos); if ( f. getcpf ( ). equals ( cpf ) ) return f ; pos++; return null ; func1 func2 func3 f ALPRO I (FACIN) Coleções: Básico 05/2012 23 / 41

ArrayList Localizando um elemento Localizando um elemento da coleção A execução do método pesquisacpf public class Cadastro { private ArrayList<Funcionario> lista ; public Funcionario ( ) { lista = new ArrayList<Funcionario > ( ) ; lista 0 1 2 3 4 public Funcionario pesquisarcpf ( String cpf ) { Funcionario f = null ; int pos = 0; while (pos < lista.size()) { f = lista.get(pos); if ( f. getcpf ( ). equals ( cpf ) ) return f ; pos++; return null ; func1 func2 func3 f ALPRO I (FACIN) Coleções: Básico 05/2012 24 / 41

ArrayList Localizando um elemento Localizando um elemento da coleção A execução do método pesquisacpf public class Cadastro { private ArrayList<Funcionario> lista ; public Funcionario ( ) { lista = new ArrayList<Funcionario > ( ) ; lista 0 1 2 3 4 public Funcionario pesquisarcpf ( String cpf ) { Funcionario f = null ; int pos = 0; while (pos < lista. size ( ) ) { f = lista. get (pos ) ; if ( f. getcpf ( ). equals ( cpf ) ) return f; pos++; return null ; func1 func2 func3 f ALPRO I (FACIN) Coleções: Básico 05/2012 25 / 41

ArrayList Removendo um elemento Removendo um elemento da coleção O método remove Método boolean remove (E elem) Descrição Remove um elemento da coleção Procura a referência para elem na lista. Se encontrar, remove a referência da lista e retorna true. Se não encontrar, retorna false. Na classe Cadastro, podemos utilizá-lo em um método para demitir funcionários. Mais uma vez, utilizaremos diretamente o valor de retorno do método remove. ALPRO I (FACIN) Coleções: Básico 05/2012 26 / 41

ArrayList Removendo um elemento Removendo um elemento da coleção Utilizando o método remove na classe Cadastro public class Cadastro { public boolean demitir ( Funcionario f ) { return lista. remove ( f ) ; Exemplo de utilização: public class AppCadastro { public void executa ( ) { Cadastro cad = new Cadastro ( ) ; boolean result ; Funcionario f = cad. pesquisarcpf ( "123456789-00" ) ; if ( f!= null ) { result = cad. demitir ( f ) ; ALPRO I (FACIN) Coleções: Básico 05/2012 27 / 41

ArrayList Utilizando a classe Cadastro Utilizando a classe Cadastro O programa AppCadastro public class AppCadastro { public void executa ( ) { Cadastro cadastro = new Cadastro ( ) ; Funcionario f ; f = new Funcionario ( "Pedro", "123456789-12" ) ; cadastro. admitir ( f ) ; f = new Funcionario ( "Joana", "234567890-34" ) ; cadastro. admitir ( f ) ; f = new Funcionario ( "Carlos", "633566225-87" ) ; cadastro. admitir ( f ) ; // Procurando por Joana f = cadastro. pesquisarcpf ( "234567890-34" ) ; // Demitindo Joana if ( f!= null ) { boolean result = cadastro. demitir ( f ) ; Analisaremos agora o seu funcionamento. ALPRO I (FACIN) Coleções: Básico 05/2012 28 / 41

ArrayList Utilizando a classe Cadastro Utilizando a classe Cadastro Criando o objeto cadastro cadastro 0 1 2 3 4 public void executa ( ) { Cadastro cadastro = new Cadastro ( ) ; ALPRO I (FACIN) Coleções: Básico 05/2012 29 / 41

ArrayList Utilizando a classe Cadastro Utilizando a classe Cadastro Admitindo o funcionário Pedro cadastro 0 1 2 3 4 Pedro f public void executa ( ) { Funcionario f ; f = new Funcionario ( "Pedro", "123456789-12" ) ; cadastro. admitir ( f ) ; ALPRO I (FACIN) Coleções: Básico 05/2012 30 / 41

ArrayList Utilizando a classe Cadastro Utilizando a classe Cadastro Admitindo a funcionária Joana cadastro 0 1 2 3 4 Pedro Joana public void executa ( ) { f = new Funcionario ( "Joana", "234567890-34" ) ; cadastro. admitir ( f ) ; f ALPRO I (FACIN) Coleções: Básico 05/2012 31 / 41

ArrayList Utilizando a classe Cadastro Utilizando a classe Cadastro Admitindo o funcionário Carlos cadastro 0 1 2 3 4 Pedro Joana Carlos public void executa ( ) { f = new Funcionario ( "Carlos", "633566225-87" ) ; cadastro. admitir ( f ) ; f ALPRO I (FACIN) Coleções: Básico 05/2012 32 / 41

ArrayList Utilizando a classe Cadastro Utilizando a classe Cadastro Procurando pela funcionária Joana cadastro 0 1 2 3 4 Pedro Joana Carlos public void executa ( ) { // Procurando por Joana f = cadastro. pesquisarcpf ( "234567890-34" ) ; f ALPRO I (FACIN) Coleções: Básico 05/2012 33 / 41

ArrayList Utilizando a classe Cadastro Utilizando a classe Cadastro Demitindo a funcionária Joana cadastro 0 1 2 3 4 Pedro Carlos f public void executa ( ) { // Demitindo Joana if ( f!= null ) { boolean result = cadastro. demitir ( f ) ; ALPRO I (FACIN) Coleções: Básico 05/2012 34 / 41

Exercícios Exercício ➊ Identifique as operações da classe Chamada, que armazena um grupo de alunos. Identifique os métodos de ArrayList que podem auxiliar na implementação de cada operação. ALPRO I (FACIN) Coleções: Básico 05/2012 36 / 41

Exercícios Exercício ➋ Escreva a classe Chamada: Inscrever aluno. Cancelar inscrição de aluno. Localizar aluno por matrícula. Localizar aluno por nome. Localizar aluno por parte do nome. Dica: explore os métodos da classe String. Ex: use o método equals para comparar duas strings. ALPRO I (FACIN) Coleções: Básico 05/2012 37 / 41

Exercícios Exercício ➌ Considerando o exemplo do cadastro de funcionários: Classe Funcionario: Acrescente um atributo para armazenar o salário. Altere as demais classes de acordo com o que segue. Classe Cadastro: Acrescente um método que calcule e retorne o total da folha de pagamento da empresa. Acrescente um método que retorne a referência para o funcionário com maior salário. Acrescente um método que calcule e retorne a média dos salários. Implemente um método tostring que retorne uma string com os dados de todos os funcionários armazenados, bem como a média dos salários. ALPRO I (FACIN) Coleções: Básico 05/2012 38 / 41

Exercícios Exercício ➍ Considere que um cliente pode ter uma única conta bancária. Um banco tem diversas contas. Uma conta bancária pode ter apenas um cliente associado. Desenhe as classes e dependências. Identifique as coleções e referências. ALPRO I (FACIN) Coleções: Básico 05/2012 39 / 41

Exercícios Exercício ➎ Crie um programa para controlar bilhetes de estacionamento. O bilhete é emitido quando o carro ingressa no estacionamento. Ele deve conter a placa do veículo, a data e o horário de entrada. Quando o veículo sair do estacionamento, serão anotados no bilhete também a data e horário de saída e o total a pagar pela permanência do veículo. Para cada hora de permanência do veículo é cobrado R$ 2,00. O estacionamento possui apenas 17 vagas. Sugestão: crie classes para representar data e horário. ALPRO I (FACIN) Coleções: Básico 05/2012 40 / 41

Exercícios Leitura recomendada HORSTMANN, Cay. Big Java, Capítulo 13. Porto Alegre: Bookman, 2004. p. 496-503. ALPRO I (FACIN) Coleções: Básico 05/2012 41 / 41