Paradigmas de Programação. Genéricos
|
|
|
- Gabriel Henrique Estrada Sintra
- 9 Há anos
- Visualizações:
Transcrição
1 Genéricos Extensão à linguagem Java apresentada pelo JDK1.5 Permite reutilização de software com tipo seguro Permite abstrair do tipo de dados Exemplo: Desenvolver código para uma classe (por ex, uma pilha) de qualquer tipo de dados ou um método (por ex, imprimir elementos de um array) de qualquer tipo de dados 1
2 Construção de um método genérico Se pretendesse escrever um array de Integer e um array de Automovel e um array de String teria que desenvolver código para 3 métodos escreverarray( ): public static void escreverarray( Integer[] array) public static void escreverarray( Automovel[] array) public static void escreverarray( String[] array) Podemos substituí-los por este: public static <E> void escreverarray( E[] array) { for(e elem : array) System.out.println(elem); 2
3 Construção de um método genérico (cont) No exemplo anterior E designa-se por parâmetro tipo ou variável tipo, é o identificador que especifica o nome de um tipo genérico, obrigatòriamente referência A declaração de métodos genéricos tem uma secção de parâmetros tipo (1 ou mais, separados por, ) delimitada por < > que precede o tipo de retorno do método O tipo genérico pode ser usado em tipo de retorno tipo de parâmetro tipo de variáveis locais 3
4 Construção de um método genérico (cont) Construir um método que determina o maior de 3 objectos (todos diferentes). Seja o seguinte o código do método main( ) public static void main(string [] args) { Integer x,y,z; x=10;y=20;z=15; Automovel a1=new Automovel("11-11-aa", Fiat",1200,2005,12,20); Automovel a2=new Automovel("11-11-aa", Audi",1200,2005,12,20); Bicicleta b1=new Bicicleta( BMX","1234Maia"); System.out.println(maior(x,y,z)); System.out.println(maior(a1,a2,b1)); 4
5 Construção de um método genérico (cont) Como há que fazer comparações, os objectos que estiverem em jogo terão que implementar o interface Comparable<E> e portanto terão que definir código para o metodo compareto( ) public static <E extends Comparable<E>> E maior(e el1,e el2,e el3){ E max=el1; if(el2.compareto(max)>0) max=el2; if(el3.compareto(max)>0) max=el3; return max; 5
6 Construção de um método genérico (cont) Vejamos agora o código do método compareto( ) na classe Veiculo. Consideramos que a comparação era feita através da marca public int compareto(object obj) { Veiculo v=(veiculo)obj; return this.marca.compareto(v.marca); 6
7 Métodos genéricos (cont) Métodos genéricos podem ser sobrecarregados por outros métodos genéricos, (variando o nº de parâmetros) ou por métodos não genéricos. O compilador 1º procura aquele cujos argumentos são exactamente iguais aos da invocação, se não encontra, então procura se há algum que embora não exacto é aplicável. 7
8 Classes genéricas ou Classes parametrizaveis A declaração de uma classe genérica (assemelha-se a uma não genérica) faz-se colocando a seguir ao nome da classe uma secção de parâmetros tipo. Exemplo: public class Pilha<E> { private final int maxelem; // nº maximo de elementos private int topo; // posição do último elemento private E[] elementos // array que guarda os elementos da pilha 8
9 Classes genéricas ou Classes parametrizaveis //Construtores public Pilha() { this(10); public Pilha(int n){ maxelem=n > 0? n :10; topo= -1; //inicialmente vazia //elementos= new E[maxElem] dá erro de compilação // não admite new de um parâmetro tipo elementos=(e[]) new Object[maxElem]; 9
10 Classes genéricas ou Classes parametrizaveis public void push(e valor) throws ExcepcaoPilhaCheia{ if(topo==maxelem-1) throw new ExcepcaoPilhaCheia("Pilha cheia não é possível fazer push); elementos[++topo]=valor; public E pop() throws ExcepcaoPilhaVazia{ if(topo==-1) throw new ExcepcaoPilhaVazia("Pilha vazia não é possivel fazer pop"); return elementos[topo--]; 10
11 Classes de excepção usadas no exemplo class ExcepcaoPilhaCheia extends RuntimeException { public ExcepcaoPilhaCheia(String s){ super(s); class ExcepcaoPilhaVazia extends RuntimeException{ public ExcepcaoPilhaVazia(String s){ super(s); 11
12 Método main usado no exemplo public static void main(string [] args) { Pilha<Veiculo> p=new Pilha<Veiculo>(2); Automovel a1=new Automovel("11-11-aa","Fiat",1200,2005,12,20); Automovel a2=new Automovel("11-11-aa","Audi",1200,2005,12,20); Bicicleta b1=new Bicicleta("ZMX","1234AA"); try{ p.push(a1);p.push(a2);p.push(b1); catch(excepcaopilhacheia e){ System.out.println(e.getMessage()); System.out.println(p.pop()); // 12
13 Notas sobre Genéricos Uma classe genérica pode ser derivada de uma não genérica Uma classe genérica pode ser derivada de outra genérica Uma classe não genérica pode ser derivada de uma genérica Um método genérico numa subclasse pode reescrever um método genérico da super se ambos têm a mesma assinatura Numa classe os parâmetros tipo não podem ser usados em declarações estáticas da classe. 13
14 A classe Arrays Esta classe pertence ao package java.util, contem vários métodos para manipular arrays tais como ordenar e pesquisar. Todos os métodos são estáticos e os arrays a manipular podem ser de tipos primitivos ou de objectos. Principais métodos: Retorno boolean void void indice List Invocação do método Arrays.equals(array1,array2) Arrays.fill(array,valor) Arrays.sort(array) Arrays.binarySearch(array_ordenado,valor_a_procurar) Arrays.asList(array_de_objectos) 14
15 A classe Collections Esta classe pertence ao package java.util, consiste exclusivamente em métodos estáticos que operam polimorficamente sobre colecções ou devolvem colecções. Todos os métodos lançam a excepção NullPointerException se as colecções que lhes são fornecidas são null. Colecção é um conjunto de referências para objectos que são geralmente todos do mesmo tipo. Existem interfaces que declaram operações para serem realizadas genericamente em vários tipos de colecções, nomeadamente: Collection, Set, List, Queue, Map 15
16 A classe Collections Principais métodos: Retorno boolean void void indice List boolean int boolean objecto objecto void Invocação do método Collections.copy(lista_destino,lista_origem) Collections.fill(lista,valor) Collections.sort(lista) Collections.binarySearch(lista_ordenada,valor_a_procurar) Collections.reverse(lista) Collections.disjoint(lista1,lista2) Collections.frequency(lista, valor) Collections.addAll(lcolecçao,objectos_a_juntar) Collections.max(colecçao_de_objectos) Collections.min(colecçao_de_objectos) Collections.shuffle(lista) 16
17 Nota1: Para utilizar os métodos sort, binarysearch a classe dos objectos que constituem a lista devem implementar a interface Comparable e definir o método compareto(...) Nota2: A interface List é implementada por algumas classes, a saber: ArrayList LinkedList Vector Nota3: Auto boxing ocorre quando se juntam valores do tipo primitivo aos objectos destas classes, porque elas só guardam referências para objectos. De igual modo ocorre Auto unboxing quando se obtem um valor destas colecções 17
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Reader e Writer para streams de caracteres (texto).
Folha 1-1 Recordando POO: Streams Uma stream é uma abstracção que representa uma fonte genérica de entrada de dados ou um destino genérico para escrita de dados que é definida independentemente do dispositivo
Métodos Genéricos. Prof.: Michele Nasu Tomiyama Bucci
Métodos Genéricos Prof.: Michele Nasu Tomiyama Bucci Introdução Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados
Collections Framework
Collections Framework 1 Arrays p Manipular array é bastante trabalhoso. p Dificuldades aparecem em diversos momentos: n não podemos redimensionar um array em Java; n é impossível buscar diretamente por
9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
Java Collections Framework (JCF) Uma coleção (collection) é um objeto que agrupa vários elementos. A JCF consiste numa arquitetura para representação e manipulação de coleções. Contém: - Um conjunto de
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Aula 10 Polimorfismo. Prof. Jefersson Alex dos Santos. Baseado em: http://homepages.dcc.ufmg.br/~fernando/classes/dcc052/ementa/lesson8/
Aula 10 Polimorfismo Prof. Jefersson Alex dos Santos Baseado em: http://homepages.dcc.ufmg.br/~fernando/classes/dcc052/ementa/lesson8/ Polimorfismo Definição: É a capacidade de um objeto em decidir que
Interfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.
Caso de estudo O cartão fidelidade Cartão de fidelização de clientes das distribuidoras de combustível. Definição em JAVA da classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante
Orientação a Objetos AULA 09
Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este
UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:
Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos)
Coleções. Prof. Marcelo Roberto Zorzan
Coleções Prof. Marcelo Roberto Zorzan Coleções Aula de Hoje Introdução Coleções podem representar estruturas de dados complexas de forma transparente para o programador. Exemplos: Músicas favoritas armazenadas
Atividade 08 - Utilizando Collections - List
Atividade 08 - Utilizando Collections - List A Figura 1 mostra a árvore da hierarquia de interfaces e classes da Java Collections Framework que são derivadas da interface Collection. O diagrama usa a notação
Programação Orientada a Objeto Java
Programação Orientada a Objeto Java Aula 2 Introdução a Programação Java Sintaxe da Linguagem e Principais Conceitos Profª Kelly Christine C. Silva Sumário Construção do programa Saída de dados Entrada
Programação Orientada a Objectos - P. Prata, P. Fazendeiro
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
JAVA COLLECTIONS API: LISTAS
COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO JAVA COLLECTIONS API: LISTAS FOZ DO IGUAÇU 2013 LISTA DE QUADROS QUADRO 1 EXEMPLO DE LIST,
Programação Java (nível intermediário) 4. Polimorfismo
Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo
Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções
Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach
GUIA DE ESTILO DE PROGRAMAÇÃO EM JAVA
Introdução GUIA DE ESTILO DE PROGRAMAÇÃO EM JAVA Prof. F. Mário Martins DI/UM 2008-2009 Este documento tem por objectivo fundamental estabelecer um conjunto de normas, quase universais, sobre a melhor
TIPOS PARAMETRIZADOS CLASSES GENÉRICAS PARTE II
TIPOS PARAMETRIZADOS CLASSES GENÉRICAS PARTE II JAVA5 Tiger JAVA6 - Mustang ARQUITECTURAS DE SOFTWARE F. Mário Martins 2011 1 CRIAÇÃO DE CLASSES GENÉRICAS ARQUITECTURAS DE SOFTWARE F. Mário Martins 2011
4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
ção a Objetos em Java
Uso de Orientaçã ção a Objetos em Java Objetos e Mensagens Objetos em Java Principais classes Containers Um pouco de história... Variáveis como elementos isolados int dia, mes, ano; Fácil compreensão,
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho [email protected] Programa Capítulo 7 Herança vs. Composição Interface Aplicação de Interface Exercício
Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins
Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore
Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação
Java Remote Method Invocation Java Remote Method Invocation () é um protocolo Java para comunicação entre processos Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar
Lista encadeada class No { Coleções. Enumeration. Lista encadeada (continuação) Enumeration Exemplo usando a classe Lista anterior
Coleções Retirado do Tutorial Java class Lista { No inicio = null; Lista encadeada class No { void insereinicio(object obj) { No n = new No(obj, inicio); inicio = n; Object obj; No prox; No(Object obj,
Lista de Exercícios Nro. 1 Programação Orientada a Objetos - SCC204
Lista de Exercícios Nro. 1 Programação Orientada a Objetos - SCC204 Exercício 1: Descreva algumas diferenças básicas entre programação estruturada e programação orientada a objetos. Exercício 2: Para que
Instituto Federal de Educação, Ciência e Tecnologia da Bahia Campus Irecê Disciplina: Linguagem Técnica II Prof o Jonatas Bastos
Instituto Federal de Educação, Ciência e Tecnologia da Bahia Campus Irecê Disciplina: Linguagem Técnica II Prof o Jonatas Bastos Nome: LISTA DE EXERCÍCIO 1 Collections Framework 1. Criem um projeto que
Generics - Java. Fernando Santos. Programação Orientada a Objetos
- Java Fernando Santos Programação Orientada a Objetos Generics é uma funcionalidade incorporada ao Java a partir da versão 5.0 Permite aos programadores escreverem métodos genéricos Os parâmetros dos
Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)
Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private
Simulado de Linguagem de Programação Java
Simulado de Linguagem de Programação Java 1. Descreva o processo de criação de programas em Java, desde a criação do código-fonte até a obtenção do resultado esperado, por meio de sua execução. Cite as
A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas
Herança e Polimorfismo Prof. Bruno Gomes [email protected] Programação Orientada a Objetos Revisando -Herança Estrutura Hierárquica e modular Projeção de classes genéricas que podem ser especializadas
Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Aula de Hoje Abstração de Dados Classes e Objetos Definição de Métodos Métodos com parâmetro Abstração de Dados Processo mental através do qual
Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
GENÉRICOS EM JAVA. Java Generics
GENÉRICOS EM JAVA Java Generics Ana Laura KOKETSU Faculdade Politécnica de Campinas Peter JANDL JR Faculdade de Jaguariúna Faculdade Politécnica de Campinas Resumo: Os tipos genéricos foi a mais sofisticada
ALOCAÇÃO DINÂMICA DE MEMÓRIA
INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador
Programação Orientada a Objetos. Collections - Java
1 Programação Orientada a Objetos Collections - Java Coleções Conceito Geral Uma coleção é uma estrutura de dados que permite armazenar vários objetos. Em Java, a coleção também é um objeto. As operações
AULA 6 - ARRAYS. Array de 10 elementos
1 AULA 6 - ARRAYS Arrays são objetos que armazenam diversas variáveis do mesmo tipo. Eles podem conter variáveis de referência primitivas ou de objeto, mas o array propriamente dito sempre será um objeto
Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU
Aula 5 POO 1 Encapsulamento Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto
Linguagem de Programação III
Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando
Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Herança Aula de Hoje Problema Considere uma empresa que tenha tipos de empregados no aplicativo de folha de pagamento Um empregado tem nome,
Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)
Herança capacidade de uma classe (subclasse) herdar, adquirir atributos e funcionalidades de outra classe (superclasse), podendo juntar algumas especificidades e/ou alterar outras. Existe uma relação tipo
Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011
Programação Orientada por Objectos 2010/11 2º Exame 28 de Junho de 2011 Instruções (leia com cuidado): Escreva de forma CLARA o seu nome e número em todas as folhas. O exame contém 8 páginas dividido em
Programação de Computadores I. Linguagem C Função
Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,
Orientação a Objetos
Orientação a Objetos 1. Manipulando Atributos Podemos alterar ou acessar os valores guardados nos atributos de um objeto se tivermos a referência a esse objeto. Os atributos são acessados pelo nome. No
Classes e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Palavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Programação Orientada a Objetos SANTOS, Rafael (PLT)
Programação Orientada a Objetos SANTOS, Rafael (PLT) Possibilita atribuições em sequência na mesma instrução Retorna o valor atribuído Atribuições compostas: incluem a própria variável: +=, *=, -=, etc
Sistemas de Objetos DistribuídosRevisão Java e Java ORBs p.1/26
Sistemas de Objetos Distribuídos Revisão Java e Java ORBs Francisco José da Silva e Silva Departamento de Informática da Universidade Federal do Maranhão Sistemas de Objetos DistribuídosRevisão Java e
Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010
Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade
