Paradigmas da Programação PPROG. Linguagem JAVA. Contentores de Objetos

Documentos relacionados
Orientação a Objetos AULA 09

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Introdução. Coleção HashMap Classe Java. Interesse

Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

COLECÇÕES DE OBJECTOS EM JAVA6

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Paradigmas da Programação PPROG. Tipos de Dados. Enumerados Genéricos Coleções. Nelson Freire (ISEP DEI-PPROG 2012/13) 1/64

Programação Orientada a Objetos

BSI UFRPE Prof. Gustavo Callou

Linguagem de Programação III

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Arrays e Marizes. João Paulo Q. dos Santos

Algoritmia e Programação APROG. Vetores. Algoritmia e Java. Nelson Freire (ISEP DEI-APROG 2012/13) 1/32

4 Conceito de Herança

Coleções. Prof. Marcelo Roberto Zorzan

Paradigmas de Programação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

ArrayList. null. null. null ... ArrayList<Ponto2D>

Programação Orientada a Objetos

Java API. Giuliana Silva Bezerra

Técnicas de Programação II

Lição 7 Array em Java

Análise de Programação

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Linguagem de Programação II Implementação

JAVA COLLECTIONS API: LISTAS

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

AULA TEÓRICA 7 Tema 7. Colecções (cont.) Vector Ø Criação Ø Manipulação

Collections. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Algoritmos II prof. Daniel Oliveira

Algoritmos e Programação II. Coleções. Coleções. Baseado no material do Prof. Julio

Programação Orientada por Objetos

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Array em Java. Figura 1 - Exemplo de um array de inteiros

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Tabelas de Dispersão. Estrutura de Dados e Algoritmos

ProgamaçãoOrientada pelos Objetos B. Vectores

Análise e Projeto Orientados por Objetos

Arrays em Java. Prof. Renato Pimentel. GGI030 Programação Orientada a Objetos. Universidade Federal de Uberlândia Faculdade de Computação

Estruturas de Dados Encadeadas

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Vetores Unimensionais

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Collections Framework

Linguagem de Programação II Implementação

Programação Orientada a Objetos. Encapsulamento

Java Util Collections - Interfaces Interfaces definidas

AULA 6 - ARRAYS. Array de 10 elementos

Tema 7. Colecções AULA TEÓRICA 6. Listas: ArrayList, LinkedList, Vector Ø Criação Ø Manipulação

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Exercício de Estrutura de dados. Java Fila

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

CURSO DE POO COM JAVA

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Estrutura de Dados Listas

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Notas de Aula 07: vetores de objetos e coleções

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.

Tabelas de Dispersão. Tabela de Dispersão

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Vetores Unimensionais

Lógica de Programação e Algoritmos

Transcrição:

PPROG Paradigmas da Programação Linguagem JAVA Contentores de Objetos Nelson Freire (ISEP DEI-PPROG 2012/13) 1/33

Contentores Sumário Noção de Contentor Categorias de Contentores Conjunto Lista Fila de Espera Pilha Mapeamento Exemplos Array ArrayList Lista Ligada Nelson Freire (ISEP DEI-PPROG 2012/13) 2/33

Contentores Noção de Contentor Estrutura de Dados Permite armazenar múltiplos objetos Objeto X Objeto Y Contentor Objeto Z Nelson Freire (ISEP DEI-PPROG 2012/13) 3/33

Contentores Categorias de Contentores Tipo Características Exemplo Conjunto (Set) Implementa um conjunto matemático finito: Não há noção de ordem (posição): 1º, 2º, n-ésimo ou último elemento Não são permitidos elementos repetidos Lista (List) Implementa uma sequência: Há noção de ordem entre elementos São permitidos elementos repetidos Fila de Espera (Queue) Destinada a guardar elementos à espera de serem processados A ordem de processamento é do tipo FIFO Pilha (Stack) Destinada a guardar elementos à espera de serem processados A ordem de processamento é do tipo LIFO Mapeamento (Map) Implementa correspondências unívocas (1 para 1) entre objetos do tipo chave-valor As chaves são o domínio das correspondências e são únicas Conjunto de artigos científicos Pasta de correio electrónico (mensagens guardadas pela ordem de chegada) Conjunto de pedidos de serviço recebidos por um servidor Conjunto de endereços navegados num browser Web Lista Telefónica Nelson Freire (ISEP DEI-PPROG 2012/13) 4/33

Contentores Sumário Noção de Contentor Categorias de Contentores Conjunto Lista Fila de Espera Pilha Mapeamento Exemplos Array ArrayList Lista Ligada Nelson Freire (ISEP DEI-PPROG 2012/13) 5/33

Arrays Guardar uma lista de objetos Interesse dos Arrays Objetos todos do mesmo tipo (ou compatíveis) // ex: só objetos Automovel ou Livro ou Pessoa Lista de dimensão fixa Exemplos Objeto 1 Objeto 2 Objeto 3 Objeto N Objeto 1,1 Objeto 1,M Objeto 2,1 Objeto 2,M Objeto 3,1 Objeto 3,M Objeto N,1 Objeto N,M Tabela Unidimensional (Dimensão N) Tabela Bidimensional (Dimensão NxM) Nelson Freire (ISEP DEI-PPROG 2012/13) 6/33

Arrays Categorias de Arrays Unidimensionais Multidimensionais Bidimensionais Tridimensionais Nelson Freire (ISEP DEI-PPROG 2012/13) 7/33

Array Unidimensional Array Constituído por elementos Nº de elementos (comprimento) é fixo // Dimensão não modificável em tempo de execução Elementos Organizados de forma linear Funcionam como variáveis simples Podem armazenar objetos Todos do mesmo tipo (ou tipos compatíveis) Acesso através de índices Índice Indica posição de um elemento Nº inteiro: [0, comprimento -1] Indexados // Índice; nº Elemento: inteiro desde 2 0 Conteúdo: Objeto X elementos índices Noção de Array Unidimensional objeto objeto objeto X objeto objeto objeto 0 1 2 3 n-2 n-1 comprimento (ou dimensão) n Nelson Freire (ISEP DEI-PPROG 2012/13) 8/33

Array Unidimensional Preciso Saber Uso Declarar um array Java Arrays são objetos Manipular elementos do array Nelson Freire (ISEP DEI-PPROG 2012/13) 9/33

Array Unidimensional Java tipo nomearray[ ] = new tipo[ dimensão ]; tipo[ ] nomearray = new tipo[ dimensão ]; tipo nomearray[ ]; nomearray = new tipo[ dimensão ]; Declaração de Array Unidimensional Array é objeto Nome do array é referência de objeto Exemplos Automovel autos[ ] = new Automovel [20]; Automovel[ ] autos = new Automovel [20]; Automovel autos [ ]; autos[ ] = new Automovel[20]; autos[0] autos[1] autos[2] RAM Inicialização dos Elementos Tipo referência: null (Ex: Automovel) autos[19] 19 = 20-1 Nelson Freire (ISEP DEI-PPROG 2012/13) 10/33

Array Unidimensional Nome de Array Java: Array é um Objeto É uma referência do objeto que contém os seus elementos Exemplo Automovel[] autos = new Automovel[20]; RAM // referência = endereço autos referência de objeto autos[0] autos[1] autos[2] Objeto autos[19] Nelson Freire (ISEP DEI-PPROG 2012/13) 11/33

Array Unidimensional Elemento Manipulação de Elementos Pode ser manipulado individualmente Funciona como uma variável simples Identificado pelo Nome do vetor Índice respetivo Indicar Elemento autos RAM referência de objeto nomearray[índice] Exemplo autos[2] Manipulações Típicas Um elemento Todos elementos autos[0] autos[1] autos[2] autos[19] Objeto Nelson Freire (ISEP DEI-PPROG 2012/13) 12/33

Array Unidimensional Manipulação de um Elemento Atribuir objeto a um elemento Guardar ou atualizar um elemento Sintaxe: nomearray[índice] = objeto; Ex: autos[5] = new Automovel("Toyota"); Atribuir conteúdo de elemento a uma variável Sintaxe: variável = nomearray[índice]; Ex: Automovel a = autos[5]; Nelson Freire (ISEP DEI-PPROG 2012/13) 13/33

Array Unidimensional Indicar todos os n elementos (n = comprimento do array) Manipulação de Todos os Elementos for(int i=0; i < nomearray.length; i++ ){ nomearray[i] nomearray.length (atributo) Ex: Guardar no array n instâncias Automovel for(int i=0; i<autos.length; i++){ autos[i] = new Automovel(); Ex: Mostrar as instâncias Automovel guardadas no array for(int i=0; i<autos.length; i++){ if ( autos[i]!= null ) System.out.println( autos[i] ); // Alternativa com foreach for(automovel a: autos) if ( a!= null ) System.out.println(a); Sintaxe da repetição foreach: for( Tipo_Elemento variável: nomearray ){ instruções // sobre variável Nelson Freire (ISEP DEI-PPROG 2012/13) 14/33

Contentores Sumário Noção de Contentor Categorias de Contentores Conjunto Lista Fila de Espera Pilha Mapeamento Exemplos Array ArrayList Lista Ligada Nelson Freire (ISEP DEI-PPROG 2012/13) 15/33

ArrayList Classe Noção de ArrayList Instanciável Uma instância Contentor de objetos Tipo lista Há ordem nos objetos (1º, 2º,, N) Elemento 1 Elemento 2 Elemento N Objeto X Objeto Y Objeto Z Contentor Elementos contêm Objetos Fornece serviços para gerir objetos Exemplos Adicionar objetos Remover objetos Tipo coleção Implementa interface Collection Nelson Freire (ISEP DEI-PPROG 2012/13) 16/33

ArrayList Implementação de um ArrayList 1/2 ArrayList Implementa Array dinâmico // nº de elementos pode variar durante execução de programa Cresce // adicionando novos objetos Decresce // removendo objetos Baseado num array E1 E1 E2 E1 E2 E3 Array Dinâmico E1 E2 Nelson Freire (ISEP DEI-PPROG 2012/13) 17/33

ArrayList Implementação de um ArrayList 2/2 Elementos Tipo Object Compatível com todos os tipos Armazenam qualquer objeto Estrutura de dados indexada Semelhante ao array Índice Indica posição dos elementos Número inteiro desde zero Nelson Freire (ISEP DEI-PPROG 2012/13) 18/33

ArrayList Modelo de Memória RAM ArrayList Elemento 1 Elemento m referência referência objeto objeto atributo 1 atributo N atributo 1 atributo M Nelson Freire (ISEP DEI-PPROG 2012/13) 19/33

ArrayList API (Application Programming Interface) 1/6 Construtores Métodos de Instância Nelson Freire (ISEP DEI-PPROG 2012/13) 20/33

ArrayList Construtores API (Application Programming Interface) 2/6 public ArrayList() // tamanho inicial zero ( nº de objetos adicionados ) // capacidade inicial 10 (nº de elementos alocados) // primeiras 10 adições rápidas (s/ custos realocação) public ArrayList(int capacidade_inicial); // tamanho inicial zero public ArrayList(Collection<? extends E> c); // permite copiar arraylist recebido por parâmetro // há partilha de objetos public class ExemploArrayList { public static void main(string[] args) { ArrayList plantel_1 = new ArrayList(); // declaração e instanciação ArrayList plantel_2 = new ArrayList(25); ArrayList plantel_3 = new ArrayList(plantel_2); Nelson Freire (ISEP DEI-PPROG 2012/13) 21/33

ArrayList API (Application Programming Interface) 3/6 Métodos para adicionar objetos boolean add(object obj) adiciona obj no final da lista e incrementa tamanho de 1 unidade retorna true (sucesso) ou false (insucesso) pode ser adicionado null void add(int índice, Object obj) adiciona obj na posição índice desloca uma posição à direita objetos, desde a posição índice Object set(int índice, Object obj) adiciona obj na posição índice se estiver ocupada, objeto atual é substituído se índice >= size() ou < 0, é gerado um erro de execução public class ExemploArrayList { public static void main(string[] args) { ArrayList plantel = new ArrayList(); plantel.add( "Nico" ); plantel.add( "Bruno" ); plantel.add( 1, "Artur" ); plantel.set( 1, "Eduardo" ); Nelson Freire (ISEP DEI-PPROG 2012/13) 22/33

ArrayList API (Application Programming Interface) 4/6 Métodos para remover objetos void clear() remove todos os objetos da lista (tamanho=0, capacidade =) Object remove(int índice) remove objeto na posição índice desloca objetos de índice superior para índice imediata/ inferior boolean remove(object obj) remove a 1ª ocorrência de obj na lista, caso exista desloca objetos de índice superior para índice imediata/ inferior public class ExemploArrayList { public static void main(string[] args) { ArrayList plantel = new ArrayList(); plantel.remove(2); plantel.remove("bruno"); plantel.clear(); Nelson Freire (ISEP DEI-PPROG 2012/13) 23/33

ArrayList API (Application Programming Interface) 5/6 Métodos para pesquisar objetos boolean isempty() retorna true se lista estiver vazia; caso contrário, retorna false boolean contains(object obj) retorna true se obj estiver na lista; caso contrário, retorna false usa o método equals de obj int indexof(object obj) retorna o índice da 1ª ocorrência de obj na lista, caso exista caso não exista, retorna -1; usa o método equals de obj int lastindexof(object obj) semelhante ao anterior, mas relativo à última ocorrência public class ExemploArrayList { public static void main(string[] args) { ArrayList plantel = new ArrayList(); System.out.println( plantel.isempty()? "Não Há Jogo" : "Há Jogo" ); System.out.println( plantel.contains("artur")? "Vence" : "Perde" ); System.out.println( "Posição= " + plantel.indexof("artur") ); Nelson Freire (ISEP DEI-PPROG 2012/13) 24/33

ArrayList API (Application Programming Interface) 6/6 Outros métodos int size() retorna nº de objetos adicionados à lista diferente de capacidade Object get(int índice) retorna objeto guardado na posição índice Object[] toarray() retorna array contendo todos os objetos do arraylist mantém ordem dos objetos ArrayList nomes = new ArrayList(); for( int i=0; i < nomes.size(); i++ ){ if( nomes.get(i)!= null ) System.out.println( nomes.get(i) ) Object[] nomes = nomes.toarray(); // tradicional ciclo for sobre arrays Nelson Freire (ISEP DEI-PPROG 2012/13) 25/33

ArrayList Operações de iteração (varrimento) Para percorrer todos os elementos da lista Iterações Formas Ciclo for sobre o índice da lista ArrayList nomes = new ArrayList(); for( int i=0; i < nomes.size(); i++ ){ Repetição foreach sobre o ArrayList Sintaxe Exemplo if( nomes.get(i)!= null ) System.out.println( nomes.get(i) ) for( Tipo_Elemento variável: nomearraylist ){ instruções // sobre variável for( Object obj : nomes ){ if( obj!=null ) System.out.println( obj ); // tradicional ciclo for sobre arrays // lê-se: para cada obj da lista nomes faz // arraylist pode ter elementos null Nelson Freire (ISEP DEI-PPROG 2012/13) 26/33

ArrayList Exemplo public class ExemploArrayList { public static void main(string[] args) { ArrayList plantel = new ArrayList(); plantel.add( "Nico" ); plantel.add( "John" ); plantel.add( "Cardoso" ); for (Object obj : plantel) { if( obj!=null ) System.out.println(obj); // obj = obj.tostring() System.out.println( "Tamanho do arraylist: " + plantel.size() ); System.out.println( "2º jogador:" + plantel.get( 1 ) ); plantel.set( 1, "Salvio" ); plantel.remove( 0 ); plantel.remove( "Cardoso" ); if( plantel.contains( "Eusébio" ) ) else // Substitui o 2º jogador // Remove 1º jogador // Remove jogador passado por parâmetro System.out.println( "Eusébio faz parte do plantel" ); System.out.println( "Eusébio não faz parte do plantel" ); Nelson Freire (ISEP DEI-PPROG 2012/13) 27/33

Contentores Sumário Noção de Contentor Categorias de Contentores Conjunto Lista Fila de Espera Pilha Mapeamento Exemplos Array ArrayList Lista Ligada Nelson Freire (ISEP DEI-PPROG 2012/13) 28/33

Lista Ligada Noção de Lista Ligada Contentor do tipo Lista Permite guardar uma sequência de objetos Estabelece relação de ordem entre objetos 1º objeto, último objeto, n-ésimo objeto, etc. Permite objetos repetidos Objeto 1 Objeto 2 Objeto 3 Objeto N Lista Nelson Freire (ISEP DEI-PPROG 2012/13) 29/33

Lista Ligada Implementação de uma Lista Ligada Constituída por sequência de nós Nós interligados Nó 1 Nó 2 Nó 3 Nó 4 Cada nó guarda Cabeça da lista Cauda da lista Um elemento (objeto) da lista // Java: tipo Object Referência do próximo nó Elemento Próximo Nó Exemplo Objeto 1 Objeto 2 Objeto3 Objeto 1 Nó 2 Objeto 2 Nó 3 Objeto 3 null Lista Nó 1 Cabeça Nó 2 Nó 3 Cauda Nelson Freire (ISEP DEI-PPROG 2012/13) 30/33

Lista Ligada Serviços Típicos de uma Lista Ligada Inserir objeto Na cabeça da lista Na cauda da lista Na n-ésima posição Remover objeto Na cabeça Na cauda Na n-ésima posição Nó 1 Nó 2 Nó 3 Nó 4 Cabeça da lista Cauda da lista Procurar objeto NOTA Implementação da classe Lista Ligada é transparente para o utilizador dela Utilizador não precisa de saber que objetos são guardados em nós Métodos públicos só passam, por parâmetro, os objetos a armazenar Nelson Freire (ISEP DEI-PPROG 2012/13) 31/33

Lista Ligada Exercício da Aula Prática public class TesteListaLigada { public static void main(string[] args) { ListaLigada veiculos = new ListaLigada(); cabeca veículos null tamanho 0 Veiculo v1 = new Veiculo( Nico ); v1 nomeprop Nico veiculos.inseriracabeca(v1); veículos cabeca Nó 1 tamanho 1 v1 null Veiculo v2 = new Veiculo( Toto ); v2 nomeprop Toto Nó 1 veiculos.inseriracabeca(v2); veículos cabeca Nó 2 tamanho 2 v2 Nó 1 v1 null. Nó 2 Nó 1 Nelson Freire (ISEP DEI-PPROG 2012/13) 32/33

Lista Ligada Exercício da Aula Prática public class TesteListaLigada { public static void main(string[] args) { veiculos.removeracabeca(); veículos cabeca Nó 1 tamanho 1 v1 null Nó 1 veiculos.removeracabeca();. veículos cabeca null tamanho 0 Nelson Freire (ISEP DEI-PPROG 2012/13) 33/33