5. Generics, Iterators e Comparable em Java

Documentos relacionados
5. Generics, Iterators e Comparable em Java. Tipos de Dados Abstractos Generics em Java

Programação com genéricos

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

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP

Departamento de Ciência de Computadores Estruturas de Dados (CC114) FCUP 2010/11. 2 o Teste: 20/Junho/2011

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

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

1. Cotação de cada pergunta: / / (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame.

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

Computação II Orientação a Objetos

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

Orientação a Objetos AULA 09

Atividade 08 - Utilizando Collections - List

Coleções. Prof. Marcelo Roberto Zorzan

Collections Framework

FCUP 2010/11. Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1 o Teste: 27/Abril/2011

Programação Orientada a Objetos. Collections - Java

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

Programação por Objectos. Java

Generics - Java. Fernando Santos. Programação Orientada a Objetos

Aplicações de vetores

Tipos de Dados Abstractos Estruturas Lineares Listas

Interfaces POO. Prof. Marcio Delamaro

Programação Orientada a Objetos

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Programação Orientada a Objetos

Estruturas de Dados. Filas em que a prioridade de remoção não é cronológica. Maior prioridade não é do elemento que ingressou primeiro

Genéricos. Profa. Thienne Johnson EACH/USP

Aplicações de vetores

Coleções. João Paulo Q. dos Santos

Java Standard Edition (JSE)

Programação II Java Collections Framework (JCF) Christopher Burrows

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

Iterator. Professor: Hyggo Almeida

9 Classes Abstractas e Interfaces

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Computação II Orientação a Objetos

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

JAVA COLLECTIONS API: LISTAS

Laboratório de Programação. Aula 13 Java 5COP088. Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr barbon@uel.

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

Algoritmos e Estruturas de Dados 2009/2010

Desenvolvimento e Projeto de Aplicações Web

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Conceitos de Programação Orientada ao Objecto

Prof. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos

Análise e Projeto Orientados por Objetos

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

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

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Estruturas de Dados Pilhas, Filas, Listas

Lista encadeada class No { Coleções. Enumeration. Lista encadeada (continuação) Enumeration Exemplo usando a classe Lista anterior

Pág. 1 de 6

Coleções. Profa. Thienne Johnson EACH/USP

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

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

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas

Interfaces. Interfaces: Exemplo. ! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações

4 Conceito de Herança

1. Por que não utilizar a notação de composição da UML para mostrar que um cachorro é composto de altura, peso, cor e data de nascimento?

23/10/15. Padrões de Projeto (Design Patterns) em Java. Separação de Implementação e Interface. Separação de Implementação e Interface.

Tipos, Literais, Operadores

Tipos, Literais, Operadores

PCC104 - Projeto e Análise de Algoritmos

Programação Orientada pelos Objetos B. Desenvolvimento orientado pelos objectos

Conceitos de Interface; classes abstratas; Diagrama de sequencia, Diagrama de atividades, classes aninhadas e Listas dinâmicas

Tipos Abstractos de Dados (TADs) e Java

JPQL (Java Persistence Query language)

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

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

6. Pesquisa e Ordenação

4. Listas, Pilhas, e Filas

4. Listas, Pilhas, e Filas

Profa. Thienne Johnson EACH/USP

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

Nome: Número: Segunda Parte (3 valores) Primeira Parte (7 valores)

Coleções POO. Prof. Marcio Delamaro

Computação Paralela. Conceitos de Programação Orientada ao Objecto. João Luís Ferreira Sobral Departamento do Informática Universidade do Minho

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

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas

8.1 Introdução. Tópicos

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

Professora Jeane Melo

Operadores Lógicos e Relacionais Comandos condicionais (if-else) Casting AULA 04

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Ordenação e Pesquisa

Generics. Byron Leite e Bruno Fernandes. Orientação a objetos com Java. 1 Generics

Variáveis primitivas e Controle de fluxo

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

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos)

TIPOS PARAMETRIZADOS CLASSES GENÉRICAS PARTE II

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas

Java para Desktop. Programação Orientada à Objetos 2 JSE

Linguagem de Programação III

Computação II Orientação a Objetos

Transcrição:

5. Generics, Iterators e Comparable em Java Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 1 / 12

Tipos de Dados Abstractos Generics em Java A partir do Java 5.0, passamos a ter uma base mais robusta e genérica para lidar com tipos abstractos de dados sem que se tenha de recorrer a castings explícitos. Um tipo de dados genérico é um tipo de dados que não está definido em tempo de compilação, mas que fica completamente especificado em tempo de execução. Vantagens: permite a verificação de erros em tempo de compilação. permite que se definam classes em termos de um conjunto de tipos formais de parâmetros, que podem ser usados para abstrair variáveis internas. Exemplo: em vez de termos uma lista de inteiros, passar a ter uma lista genérica em que o tipo de dados é definido em tempo de execução. Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 2 / 12

Object vs. Generics Uma forma de definirmos classes com atributos que pudessem representar qualquer objecto era fazendo uso do tipo de dados Object. Por exemplo, fazendo uso das classes Node e LinkedList do capítulo 4, podemos ter: LinkedList l= new LinkedList(); l.addfirst(new Integer(2)); Integer x= (Integer) l.get(0); // casting explícito A ideia dos tipos genéricos é poder ter, por exemplo, uma definição de lista genérica em que possa posteriormente explicitar qual o tipo particular de dados que vai ter. Por exemplo: LinkedList<Integer> l= new LinkedList<Integer>(); l.addfirst(new Integer(2)); Integer x= l.get(0); Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 3 / 12

Exemplo de classe com tipos genéricos Para definir uma classe genérica, introduzimos parâmetros genéricos usando letras como E, K, T, V. Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 4 / 12

Definição de uma fila genérica com listas ligadas (1) Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 5 / 12

Definição de uma fila genérica (2) Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 6 / 12

Iteradores Um iterador é um padrão (i.e. abstracção sobre métodos existentes) que abstrai a noção de percorrer uma sequência de elementos, um de cada vez. Um iterador encapsula os conceitos de elemento corrente e seguinte numa colecção de objectos. Um TAD-iterador inclui dois métodos: hasnext() verifica se ainda existem elementos no iterador next() retorna o próximo elemento do iterador. Uma classe para suportar iteração sobre uma sequência de valores, tem de incluir o método iterator() retorna um iterador sobre elementos de um conjunto e a classe tem de especificar que é iterable. Podemos alargar as definições de Lista ligada, Pilha e Fila com iteradores. Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 7 / 12

Exemplo do uso de iteradores com listas ligadas Vamos usar iteradores com a classe LinkedList do Java. O programa guarda uma sequência de números na lista e depois percorre essa sequência com um iterador sobre os elementos da lista: Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 8 / 12

Ciclos for-each Quando temos sequências iteráveis, podemos ter ciclos do tipo for-each da forma: for (TipoObj nomevar : expressão) bloco_instruções; onde expressão corresponde a uma colecção de valores que implementa a classe java.lang.iterable. TipoObj tipo do objecto que o iterador retorna nomevar nome da variável que toma os valores retornados. Exemplo: Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 9 / 12

Comparação de objectos Objectos de tipos diferentes são comparados de modo diferente. As Strings são comparadas lexicograficamente, por exemplo: String a="abcd", b="abbc"; int cmp=a.compareto(b); if (cmp < 0) System.out.println(a+" antes de "+b); else if (cmp==0) System.out.println(a+" igual "+b); else System.out.println(a+" depois de "+b); E se tivermos dois objectos, por exemplo que representam alunos onde consta o nome e a média, como compará-los? Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 10 / 12

Exemplo com comparable (1) Consideremos a classe Aluno seguinte: Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 11 / 12

Exemplo com comparable (2) Para compararmos 2 objectos da classe Aluno, é necessário que esta implemente o Comparable e defina um método compareto(): Ver outro exemplo no final do capítulo de ordenação. Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 12 / 12