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



Documentos relacionados
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.

Pragmática das Linguagens de Programação 2004/2005

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

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

Exercícios de Revisão Java Básico

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

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

Lógica de Programação

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

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

JSP - ORIENTADO A OBJETOS

Templates e Pilhas. 1. Introdução

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. José Valente de Oliveira 16-1

Variáveis e estruturas de controlo. Introdução à Programação André L. Santos

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Curso Java Starter. 1

Programação Recursiva versão 1.02

Algoritmos de Pesquisa e Ordenação em Vectores

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

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

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo

2 Orientação a objetos na prática

Implementando uma Classe e Criando Objetos a partir dela

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

Programação por Objectos. Java

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Módulo 06 Desenho de Classes

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Java. Marcio de Carvalho Victorino

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

Vetores. Professor Dr Francisco Isidro Massettto

Encapsulamento de Dados

Árvores. Algoritmos e Estruturas de Dados 2005/2006

Computação II Orientação a Objetos

5 Caso de estudo O cartão fidelidade

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

3 Classes e instanciação de objectos (em Java)

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira

Linguagem de Programação III

Manipulando Strings no VBA (Replace, Mid e InStr)

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

Rafael Santos. Instituto Nacional de Pesquisas Espaciais rafael.santos. Rafael Santos - rafael.

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

2.3. PHP Tipos de dados e operadores

Compiladores - Análise Preditiva

Lição 9 Trabalhando com bibliotecas de classes

Estruturas de controle no nível de sentença

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo

Representação de Algoritmos - Linguagens de Programação

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

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

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Javascript 101. Parte 2

Tipo de Dados em Linguagem C

BSI UFRPE Prof. Gustavo Callou

Filas: conceitos e implementações

QUITETURA AVANÇADA DE SISTEMAS

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

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Java Coleções. Rodrigo C. de Azevedo

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

#define SIM 1 equivale a definição de constantes; a palavra SIM é substituída por 1 toda vez que é utilizada no programa.

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

c. Técnica de Estrutura de Controle Teste do Caminho Básico

Algoritmos e Estruturas de Dados I

Manipulando Strings no VBA (Replace, Mid e InStr)

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

2 echo "PHP e outros.";

2. O gerador de código estende DepthFirstAdapter implementando a interpretação que gerará código Jasmin a partir de Smallpascal.

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Programação por Objectos. Java

Estruturas de Repetição. Programação em Java Estruturas de Repetição

Keeper of Knowledge. Capítulo 2 Classes em Java

EAD Árvore árvore binária

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Linguagens de Programação

Recursão. Em Java... Exemplo: Série de Fibonacci. Iteração e recursão. Exercícios. Especialização em Engenharia de Software - CEUT

BCC242. Alfabeto, Strings, Linguagens. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste material.

Árvores de Suporte de Custo Mínimo

Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções)

Trabalho 3: Agenda de Tarefas

Projeto de Software Orientado a Objeto

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

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

JDBC Tópicos avançados de acesso a base de dados relacional

Fundamentos de Programação II. Introdução à linguagem de programação C++

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