TCC 00.174 Prof.: Leandro A. F. Fernandes www.ic.uff.br/~laffernandes. Conteúdo: Tipos Genéricos



Documentos relacionados
Programação de Computadores II TCC

Design Patterns (Factory Method, Prototype, Singleton)

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

Classes Abstratas e Interfaces

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

Pilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

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

Programação Orientada a Objetos (DPADF 0063)

Um Exemplo de Refatoração. Prof. Alberto Costa Neto DComp/UFS

Programação Orientada a Objetos em

Java Threads. Introdução

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

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

insfcanceof new public switch transient while byte continue extends for int null

Programação Orientada a Objetos em Java. Herança

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

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

Conversão de Tipos e Arrays

Programação Orientada a Objetos C++

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

Orientação a Objetos e a Linguagem Java

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Prof. Jhonatan Fernando

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Programação Orientada a Objetos

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

Programação por Objectos. Java

Exercícios de Revisão Java Básico

Modulo IIa Extra: Object

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

Como o FIT funciona. FIT: Framework for Integrated Tests FIT. Dados de testes. Programa. Fixtures. classes. Resultados de testes

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos

Introdução à Programação com Classes em C++

Técnicas de Programação II

Análise de Programação

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

Prática de Programação J2ME (15) Especialização em Desenvolvimento Web com Interfaces Ricas

PADRÕES DE PROJETO. Prof.: Jean Carlo Mendes

Encapsulamento de Dados

Desenvolvimento de aplicações Web. Java Server Pages

Programação por Objectos. Java

1.2 Uma linguagem de programação muito simples

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

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site:

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

2ª Lista de Exercícios Orientação a Objetos

Capítulo 8. Introdução UML

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

MOCKITO - - Alexandre Gazola (alexandregazola@gmail.com /

Programando em C++ Histórico da Linguagem C

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

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

Análise e Projeto Orientados por Objetos

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

FBV - Linguagem de Programação II. Um pouco sobre Java

Módulo 07 Características Avançadas de Classes

Prototype, um Design Patterns de Criação

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

J550 Integração com Bancos de Dados

Java 2 Standard Edition Como criar classes e objetos

Programação de Computadores II TCC /Turma A 1

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

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

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

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Profa. Thienne Johnson EACH/USP

Filas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Hibernate Envers Easy Entity Auditing

Implementando uma Classe e Criando Objetos a partir dela

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

float vantagem(float candidato[], float concorrente[], int n);

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

UNIVERSIDADE FEDERAL DO PARANÁ

Java Spaces Exemplos

Linguagem de Programação III

Programação Orientada a Objetos em Java

SISTEMAS DISTRIBUÍDOS

Keeper of Knowledge. Capítulo 2 Classes em Java

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

Simulado de Linguagem de Programação Java

Conexão Socket na MIDP

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Programação Orientada a Objetos em java. Polimorfismo

Algoritmos e Programação II. Sobrecarga

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.

Computação II Orientação a Objetos

Adicionando Caixas de Verificação no seu Programa Java

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

JAVA 1.5 na plataforma J2SE 5.0 Tiger Novas Construções, Sintaxe, Tipos e Polimorfismo

Python Intermediário. terça-feira, 4 de agosto de 15

Linguagem C Funções definidas pelo usuário. Lógica de Programação

Classes Abstratas e Interfaces

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

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II. Padrões de Projeto

Transcrição:

Programação de Computadores II TCC 00.174 Prof.: Leandro A. F. Fernandes www.ic.uff.br/~laffernandes Conteúdo: Material elaborado pelos profs. Anselmo Montenegro e Marcos Lage com contribuições do prof. Leandro A. F. Fernandes Estudo de caso LinkedList animais = new LinkedList(); ArrayStack frutas = new ArrayStack(); animais.insertatback( new Fruta("Laranja") ); // OK frutas.push( new Animal("Macaco") ); // OK Animal animal = (Animal) animais.removefromback(); // ERRO DE EXECUÇÃO Fruta fruta = (Fruta)frutas.pop(); // ERRO DE EXECUÇÃO 2012.1 Programação de Computadores II 2 1

Alternativa LinkedList<Animal> animais = new LinkedList<Animal>(); ArrayStack<Fruta> frutas = new ArrayStack<Fruta>(); animais.insertatback(new Fruta("Laranja )); //ERRO DE EXECUÇÃO frutas.push(new Animal("Macaco )); //ERRO DE EXECUÇÃO Animal animal = animais.removefromback(); // OK Fruta fruta = (Fruta)frutas.pop(); // OK 2012.1 Programação de Computadores II 3 Vantagens Simplicidade: Não é necessário Type Casting (conversão de tipo) para extrair os objetos das coleções Robustez: O compilador não permite colocar na coleção elementos incompatíveis com os tipos declarados 2012.1 Programação de Computadores II 4 2

Definição Um tipo genérico (generic type) é um tipo que possui um ou mais parâmetros de tipo. public interface List<E> { void insertatback(e element); E removefromback(); public class Stack<E> implements Lista<E> { void push(e element); E pop(); 2012.1 Programação de Computadores II 5 Parâmetros Os parâmetros de tipo de um tipo genérico podem ser ou não limitados. O limite de um parâmetro de tipo restringe os tipos que podem ser usados como argumento. O parâmetro de tipo limitado dá acesso aos métodos do tipo limite. 2012.1 Programação de Computadores II 6 3

Tipos Ilimitados class Pair<X,Y> { private X first; private Y second; public Pair(X a1, Y a2) { first = a1; second = a2; public X getfirst() { return first; public Y getsecond() { return second; public void setfirst(x arg) { first = arg; public void setsecond(y arg) { second = arg; 2012.1 Programação de Computadores II 7 Tipos com limite class Pair<A extends Animal, B extends Fruta> {. 2012.1 Programação de Computadores II 8 4

Instanciando Um tipo parametrizado (parametrized type) é a instanciação de um tipo genérico usando argumentos de tipo. Exs.: List<String> list1 = new ArrayList<String>(); List<Integer> list2 = new Stack<Integer>(); 2012.1 Programação de Computadores II 9 Subtipos O código abaixo está correto? List<String> ls = new ArrayList<String>(); List<Object> lo = ls; 2012.1 Programação de Computadores II 10 5

Subtipos O código abaixo está correto? Se sim podemos fazer List<String> ls = new ArrayList<String>(); List<Object> lo = ls; lo.add(new Integer(5)); 2012.1 Programação de Computadores II 11 Subtipos O código abaixo está correto? E ainda List<String> ls = new ArrayList<String>(); List<Object> lo = ls; lo.add(new Integer(5)); String s = ls.get(0); // ERRO!!! 2012.1 Programação de Computadores II 12 6

Subtipos List<String> não é subtipo de List<Object>!!!! List<String> ls = new ArrayList<String>(); List<Object> lo = ls; // ERRO DE COMPILAÇÃO Se o tipo F ésub tipo de B e G éum tipo genérico Então G<F> não é subtipo de G<B> 2012.1 Programação de Computadores II 13 Arrays Nãosepodeusararrayscujascomponentessejam tipos parametrizados: Pair<String,String>[] arr = null; // OK arr = new Pair<String,String>[2]; // ERRO DE COMPILAÇÃO Pair[] arrayofpair = new Pair[2]; // OK arrayofpair[0] = new Pair<String, String>(); // OK Pair<String, String> first = arrayofpair[0]; // UNCHECKED WARNING 2012.1 Programação de Computadores II 14 7

Arrays // UNCHECKED WARNING O compilador não possui as informações disponíveis para fazer a verificação de tipo 2012.1 Programação de Computadores II 15 Alternativas a Arrays class DictionaryRegister extends Pair<String,String> { DictionaryRegister[] arr = new DictionaryRegister [2]; // OK 2012.1 Programação de Computadores II 16 8

Alternativas a Arrays List<Pair<String,String>> list = new LinkedList < Pair<String,String> >(); 2012.1 Programação de Computadores II 17 Exercícios Escrever uma classe: Ponto2D<E> { Ex; Ey; 2012.1 Programação de Computadores II 18 9

Exercícios Escrever as interfaces: List<E>, Stack<E> e Queue<E> 2012.1 Programação de Computadores II 19 Exercícios Escrever as subclasses: LinkedList<E>, LinkedStack<E> e LinkedQueue<E> 2012.1 Programação de Computadores II 20 10