Técnicas de Projeto e Implementação de Sistemas I TCC Prof.: Diego Passos

Tamanho: px
Começar a partir da página:

Download "Técnicas de Projeto e Implementação de Sistemas I TCC Prof.: Diego Passos"

Transcrição

1 Técnicas de Projeto e Implementação de Sistemas I TCC Prof.: Diego Passos Conteúdo:Tipos Genéricos (Revisão) Adaptado dos material original cedido pelo Prof. Anselmo Montenegro Baseado em generics/)

2 Java Generics Definição Java provê sintaxe que permite a definição de tipos (classes e interfaces) e métodos genéricos. Estes tipos e métodos genéricos possuem código que pode operar sobre dados de tipos quaisquer ou sobre um subconjunto potencialmente infinito de tipos, garantindo segurança de tipos em tempo de compilação. Dizemos que estes tipos ou métodos são parâmetrizados em relação a tipo. 04/09/2014 Técnicas de Programação Avançada 2

3 Java Generics Declaração de Tipos Genéricos Um tipo genérico (classe ou interface) é declarada da seguinte forma: class name<t1, T2,..., Tn> { /*... */ parâmetro de tipo A seção dos parâmetros de tipo é delimitada pelos símbolos (<>) e vem após o nome da classe. T1, T2,..., and Tn podem ser quaisquer tipos não primitivos. 04/09/2014 Técnicas de Programação Avançada 3

4 Java Generics Exemplo de Tipos Genéricos public class Box { Classe não genérica private Object object; public void set(object object) { this.object = object; Versão genérica da mesma classe public class Box<T> { // T stands for "Type" private T t; public void set(t t) { this.t = t; public Object get() { return object; public T get() { return t; 04/09/2014 Técnicas de Programação Avançada 4

5 Java Generics Exemplo de Tipos Genéricos Classe não genérica public class Pair { private Object key; private Object value; public void setkey(object key) { this.key = key; public Object getkey() { return key; public void setvalue(object value) { this.value = value; public Object getvalue() { return key; Versão genérica da mesma classe public class Pair <K,V> { private K key; private V value; public void setkey(k key) { this.key = key; public K getkey() { return key; public void setvalue(v value) { this.value = value; public V getvalue() { return key; 04/09/2014 Técnicas de Programação Avançada 5

6 Java Generics Invocação de Tipos Genéricos Para referenciar e usar uma classe genérica no código é necessário fazer uma invocação de tipo genérico A invocação de tipo genérico substitui um parâmetro de tipo, por exemplo T, com algum valor concreto Exemplo: Box<Integer> integerbox; argumento de tipo Uma invocação de um tipo genérico é análoga a uma invocação de um método; ao invés de passarmos um argumento para um método, passamos um argumento de tipo 04/09/2014 Técnicas de Programação Avançada 6

7 Java Generics Invocação de Tipos Genéricos Invocação de método: o.setvalue(37); o.setkeyvalue("nome", "Jose"); Invocação de tipo genérico: Box<Pessoa> b; Pair<String,Integer> p; 04/09/2014 Técnicas de Programação Avançada 7

8 Java Generics Instanciação de Tipos Genéricos A invocação é apenas uma declaração e não cria um novo objeto. Apenas indica que a variável irá conter uma referência para a classe/interface declarado que ela deve atuar sobre o parâmetro de tipo especificado. Para instanciar um classe, usamos a palavra new, e colocamos o argumento de tipo no lugar do parâmetro de tipo Box<Integer> integerbox = new Box<Integer>(); Box<Integer> integerbox = new Box<>(); 04/09/2014 Técnicas de Programação Avançada 8

9 Java Generics Métodos Genéricos Métodos genéricos são métodos que definem e utilizam seus próprios parâmetros de tipo. O escopo do parâmetro de tipo é limitado ao método em que é declarado. São permitidos métodos estáticos, não-estáticos e construtores de classes genéricos. 04/09/2014 Técnicas de Programação Avançada 9

10 Java Generics Métodos Genéricos public class Util { // Generic static method public static <K, V> boolean compare(pair<k, V> p1, Pair<K, V> p2) { return p1.getkey().equals(p2.getkey()) && p1.getvalue().equals(p2.getvalue()); public class Pair<K, V> { private K key; private V value; // Generic constructor public Pair(K key, V value) { this.key = key; this.value = value; // Generic methods public void setkey(k key) { this.key = key; public void setvalue(v value) { this.value = value; public K getkey() { return key; public V getvalue() { return value; 04/09/2014 Técnicas de Programação Avançada 10

11 Java Generics Métodos Genéricos É possível declarar métodos com seus próprios parâmetros de tipo em uma classe que já seja parametrizada. Exemplo: class Box <T> { T value; public T getvalue() { return value; public void setvalue(t value) { this.value = value; public <T2> void printvalue(t2 prefix) { System.out.print(prefix); System.out.println(value); 04/09/2014 Técnicas de Programação Avançada 11

12 Java Generics Métodos Genéricos Métodos estáticos obrigatoriamente devem declarar seus parâmetros de tipo, mesmo se pertencem a classes parametrizadas: class Util <T> { public static <T> void metodoqualquer(t argumento) { No exemplo, T não é o mesmo para a classe e para o método. Declaração é necessária pois métodos estáticos são independentes das instâncias da classe. Cada instância da classe Util define o valor do tipo T sob o qual irá operar. 04/09/2014 Técnicas de Programação Avançada 12

13 Java Generics Invocação de Métodos Genéricos Sintaxe para a invocação de método genérico Pair<Integer, String> p1 = new Pair<>(1, "apple"); Pair<Integer, String> p2 = new Pair<>(2, "pear"); boolean same = Util.<Integer, String>compare(p1, p2); Usando inferência de tipos: argumentos de tipo Pair<Integer, String> p1 = new Pair<>(1, "apple"); Pair<Integer, String> p2 = new Pair<>(2, "pear"); boolean same = Util.compare(p1, p2); Geralmente, pode ser suprimido 04/09/2014 Técnicas de Programação Avançada 13

14 Java Generics Parâmetros de tipo restritos Considere o seguinte problema: Escreva um método genérico que conte o número de elementos em um array T[] que sejam maiores que um elemento elem public static <T> int countgreaterthan(t[] anarray, T elem) { int count = 0; for (T e : anarray) if (e > elem) // Erro de compilação! Operador'>' é definido para T? ++count; return count; 04/09/2014 Técnicas de Programação Avançada 14

15 Java Generics Parâmetros de tipo restritos O tipo dos argumentos em um parâmetro de tipo pode ser restringido quando necessário. Exemplo: um método que opera sobre números somente deve aceitar instâncias de Number ou de suas subclasses. Útil quando o código é genérico, mas precisa utilizar alguma característica específica de alguns tipos. 04/09/2014 Técnicas de Programação Avançada 15

16 Java Generics Parâmetros de tipo restritos public interface Comparavel { public int comparea(object o); public static <T extends Comparavel> int countgreaterthan( T[] anarray, T elem) { int count = 0; for (T e : anarray) if (e.comparea(elem) > 0) ++count; return count; Tipos T que implementam Comparavel tem o método comparea 04/09/2014 Técnicas de Programação Avançada 16

17 Java Generics Parâmetros de tipo restritos public class Pessoa implements Comparavel { int altura; public void setaltura(int altura) { this.altura = altura; public int getaltura() {return altura; public int comparea(object o) { Pessoa p = (Pessoa) o; return(altura p.getaltura());... Pessoa[] pessoas =... Pessoa joao =... Integer i = countgreaterthan(pessoas, joao); 04/09/2014 Técnicas de Programação Avançada 17

18 Java Generics Parâmetros de tipo restritos public class Pessoa implements Comparavel { int altura; public void setaltura(int altura) { this.altura = altura; public int getaltura() {return altura; public int comparea(object o) { Pessoa p = (Pessoa) o; return(altura p.getaltura());... Pessoa[] pessoas =... Pessoa joao =... Integer i = countgreaterthan(pessoas, joao); Casting pode trazer problemas. Como evitar? 04/09/2014 Técnicas de Programação Avançada 18

19 Java Generics Parâmetros de tipo restritos Interface Comparavel deve se adequar a qualquer tipo de objetos que podem ser comparados. Por isso, o argumento do método comparea é do tipo Object. Qual é a alternativa? Transformar a interface Comparavel em uma interface parametrizada. Classe Pessoa implementará a interface instanciada sobre o próprio tipo Pessoa. 04/09/2014 Técnicas de Programação Avançada 19

20 Java Generics Parâmetros de tipo restritos public interface Comparavel<T> { public int comparea(t o); public class Pessoa implements Comparavel<Pessoa> { int altura; public void setaltura(int altura) { this.altura = altura; public int getaltura() {return altura; public int comparea(pessoa p) { return(altura p.getaltura()); 04/09/2014 Técnicas de Programação Avançada 20

21 Java Generics Parâmetros de tipo restritos múltiplos Parâmetros de tipo podem ter restrições múltiplas. Exemplo: <T extends B1 & B2 & B3> Uma variável de tipo com restrições múltiplas e subtipo de todos os tipos listados na restrição. Classes devem ser especificadas primeiro na listagem declarativa. 04/09/2014 Técnicas de Programação Avançada 21

22 Cuidado ao analisar classes/interfaces genéricas instanciados com tipos e subtipos. Sejam A e B classes (ou interfaces) tal que B A. Seja G<> uma classe/interface genérica. Então não é verdade que G<B> G<A> Java Generics Genéricos e subtipos 04/09/2014 Técnicas de Programação Avançada 22

23 Java Generics Genéricos e subtipos 04/09/2014 Técnicas de Programação Avançada 23

24 Considere o problema de imprimir todos os elementos de uma coleção Solução com genéricos: void printcollection(collection<object> c) { for (Object e : c) System.out.println(e); Java Generics Genéricos e subtipos Problemas? 04/09/2014 Técnicas de Programação Avançada 24

25 Java Generics Genéricos e Subtipos void printcollection(collection<object> c) { for (Object e : c) System.out.println(e); Problema: Collection<Object> não é um supertipo de todas as coleções possíveis. Não podemos passar um Collection<Integer> como argumento, por exemplo. 04/09/2014 Técnicas de Programação Avançada 25

26 Qual o supertipo de todas as coleções possíveis? Resposta: Collection<?> Collection<?> é denominada coleção de desconhecidos? é um símbolo denominado wildcard O Wildcard é um tipo desconhecido Java Generics Wildcards 04/09/2014 Técnicas de Programação Avançada 26

27 Solução para imprimir uma coleção usando genéricos void printcollection(collection<?> c) { for (Object e : c) System.out.println(e); Java Generics Wildcards É importante obter objetos Object da coleção É seguro porque todo objeto em uma coleção qualquer é um Object 04/09/2014 Técnicas de Programação Avançada 27

28 Java Generics Wildcards Solução alternativa: void <T> printcollection(collection<t> c) { for (T e : c) System.out.println(e); Funciona? 04/09/2014 Técnicas de Programação Avançada 28

29 Java Generics Wildcards Solução alternativa: void <T> printcollection(collection<t> c) { for (T e : c) System.out.println(e); Funciona? Sim. Via de regra, podemos substituir o Wildcard com um parâmetro de tipo e alcançar o mesmo resultado. 04/09/2014 Técnicas de Programação Avançada 29

30 Em alguns casos, a segunda opção (sem wildcard) é preferível ou até necessária. Exemplo 1: public <T extends Set> T firstof(list<t> l) { return l.get(0); ou public Set firstof(list<? extends Set> l) { return l.get(0); Java Generics Wildcards Primeira versão garante retorno do mesmo tipo da lista. SubSet s = firstof( // Erro de compilação com a segunda versão (precisa de cast) 04/09/2014 Técnicas de Programação Avançada 30

31 Exemplo 2. Suponha um método que recebe duas listas de um subtipo de Set. Queremos garantir que ambas as listas sejam exatamente do mesmo tipo. Como? public <T extends Set> T metodo(list<t> a, List<T> b) { Wildcards não seriam suficientes. Java Generics Wildcards 04/09/2014 Técnicas de Programação Avançada 31

32 Qual a utilidade dos wildcards, então? Utilidade 1: Wildcards permitem criar variáveis que recebem referências para instâncias quaisquer de tipos genéricos. Collection<?> c = new ArrayList<String>(); Object o = c.get(); c.add(new Object()); // Compile time error Java Generics Wildcards atribuição de objetos a coleção de genéricos Mas nem todas as operações podem ser feitas sobre essa variável. 04/09/2014 Técnicas de Programação Avançada 32

33 Qual a utilidade dos wildcards, então? Java Generics Wildcards simplificação de código Utilidade 2: em algumas situações, reduzem o tamanho do código. static <T1, T2, T3, T4, T5> void metodo(list<t1> l1, List<T2> l2, List<T3>, List<T4>, List<T5>) { ou static void metodo(list<?> l1, List<?> l2, List<?>, List<?>, List<?>) { 04/09/2014 Técnicas de Programação Avançada 33

34 Qual a utilidade dos wildcards, então? Java Generics Wildcards simplificação de código Utilidade 3: em algumas situações, declarações de parâmetros de tipo utilizando Wildcards facilitam a inferência de tipos pelo compilador na chamada de métodos. 04/09/2014 Técnicas de Programação Avançada 34

35 Java Generics Uso do super interface Sink<T> { public void flush(t t); public static <T> T writeall(collection<t> coll, Sink<T> snk) { T last; for (T t : coll) { last = t; snk.flush(last); return last; Sink<Object> s; Collection<String> cs; String str = writeall(cs, s); // Illegal call. Se T é String, Sink<Object> não é subtipo de Sink<String> Se T é Object, Collection<String> não é subtipo de Collection<Object> 04/09/2014 Técnicas de Programação Avançada 35

36 Java Generics Uso do super interface Sink<T> { flush(t t); public static <T> T writeall(collection<? extends T>, Sink<T>) { T last; for (T t : coll) { last = t; snk.flush(last); return last; Sink<Object> s; Collection<String> cs; String str = writeall(cs, s); // Call is OK, but wrong return type. T passa ser inferido como Object. Mas T também é o tipo de retorno do método. 04/09/2014 Técnicas de Programação Avançada 36

37 Java Generics Uso do super interface Sink<T> { flush(t t); public static <T> T writeall(collection<t>, Sink<? super T>) { T last; for (T t : coll) { last = t; snk.flush(last); return last; Sink<Object> s; Collection<String> cs; String str = writeall(cs, s); // OK!!! Palavra chave super: qualquer supertipo de T. T passa a ser resolvido para String e o tipo do segundo parâmetro para Sink<Object> 04/09/2014 Técnicas de Programação Avançada 37

38 Java Generics Uso do super Solução sem Wildcard? interface Sink<T> { flush(t t); public static <T, T2 extends T> T writeall(collection<t2> coll, Sink<T> snk) { T2 last; for (T2 t : coll) { last = t; snk.flush(last); return last; Sink<Object> s; Collection<String> cs; String str = writeall(cs, s); // OK!!! 04/09/2014 Técnicas de Programação Avançada 38

39 Java Generics Uso do super Mas cuidado: interface Sink<T> { flush(t t); public static <T, T2 super T> T writeall(collection<t> coll, Sink<T2> snk) { T2 last; for (T2 t : coll) { last = t; snk.flush(last); return last; Sink<Object> s; Collection<String> cs; String str = writeall(cs, s); Erro de sintaxe na definição do método! 04/09/2014 Técnicas de Programação Avançada 39

40 Java Generics Restrições sobre tipos genéricos Não é possível instanciar tipos genéricos com tipos primitivos Pair<int, char> p = new Pair<>(8, 'a'); // compile-time error vs Pair<Integer, Character> p = new Pair<>(8, 'a'); 04/09/2014 Técnicas de Programação Avançada 40

41 Java Generics Restrições sobre tipos genéricos Não é possível criar instâncias de tipos parametrizados public static <E> void append(list<e> list) { E elem = new E(); // compile-time error list.add(elem); Corolário: não é possível instanciar arrays de tipos genéricos public class Pilha<T> { T[] elementos = new T[100]; // erro de compilação public class Pilha<T> { Object[] elementos = new Object[100]; // Ok 04/09/2014 Técnicas de Programação Avançada 41

42 Java Generics Restrições sobre tipos genéricos Não é possível declarar campos estáticos cujos tipos sejam parametrizados public class MobileDevice<T> { private static T os; //... MobileDevice<Smartphone> phone = new MobileDevice<>(); MobileDevice<Pager> pager = new MobileDevice<>(); MobileDevice<TabletPC> pc = new MobileDevice<>(); 04/09/2014 Técnicas de Programação Avançada 42

43 Orientação a Objetos Exercícios (obtidos da página da oracle generics/qande/generics-questions.html) 1 - Escreva um método genérico que conte o número de elementos em uma lista que possua alguma propriedade específica (exemplo de propriedade: ser palíndromo, ser ímpar...). 2- A classe a seguir compila? Se não, justifique. public final class Algorithm { public static T max(t x, T y) { return x > y? x : y; 3 - Escreva um método genérico que troque as posições de dois elementos em um array. 4 - Escreva um método genérico que retorne o elemento máximo em uma lista cuja posição esteja no intervalo [begin,end). 04/09/2014 Técnicas de Programação Avançada 43

44 Técnicas de Projeto e Implementação de Sistemas I Prof.: Diego Passos dpassos@ic.uff.br Conteúdo: Coleções Slides baseados no material original cedido pelo Prof. Anselmo Montenegro. Material elaborado com contribuição do Professor Luiz André

45 Coleções Coleções são estruturas de dados para armazenamento de objetos de natureza comum. Também chamadas de containers. Exemplos: Mão em jogo de cartas. Lista telefônica. Pasta de s. 04/09/2014 Técnicas de Programação Avançada 2

46 Coleções Framework de coleções Java: Arquitetura unificada para representação e manipulação de coleções. É composto de: Interfaces: tipos abstratos que representam as coleções. Implementações: implementações concretas das coleções. Algoritmos: métodos que executam tarefas comuns sobre as coleções. 04/09/2014 Técnicas de Programação Avançada 3

47 Coleções: Vantagens Facilitam a tarefa de programação. Incluem estruturas de dados usadas corriqueiramente. Reduzem a possibilidade de bugs. Código das estruturas é bem testado. Aumentam a compatibilidade entre módulos. Módulos tendem a usar as mesmas implementações das estruturas. 04/09/2014 Técnicas de Programação Avançada 4

48 Coleções: Interfaces Tipos de coleções disponíveis no Framework de Java: 04/09/2014 Técnicas de Programação Avançada 5

49 Collection Collection Nível mais alto de abstração Contém as operações comuns a todas as coleções 04/09/2014 Técnicas de Programação Avançada 6

50 Percorrendo uma Coleção Até o JavaSE 7, havia duas maneiras de percorrer uma coleção: Construção do tipo for-each: for (Object o : collection) System.out.println(o); Construção do tipo iterator: static void filter(collection<?> c) { for (Iterator<?> it = c.iterator(); it.hasnext(); ) if (!cond(it.next())) it.remove(); 04/09/2014 Técnicas de Programação Avançada 7

51 Operações do Tipo Bulk Operações que operam sobre conjuntos de elementos (ao invés de um único). containsall: retorna verdadeiro se a coleção alvo contêm todos os elementos na coleção especificada. addall: adiciona todos os elementos da coleção especificada na coleção alvo. removeall: remove da coleção alvo todos os elementos que também estão contidos na coleção especificada. retainall: remove da coleção alvo todos os elementos que não estão contidos na coleção especificada. clear: remove todos os elementos da coleção. Exemplo: Collection c1 =...; Collection c2 =...; c1.addall(c2); // c1 passa a ter todos os elementos de c1 e de c2. 04/09/2014 Técnicas de Programação Avançada 8

52 Conversão de Coleção para Array Uma coleção pode ser convertida para um array de duas formas: Object[] a = c.toarray(); // Método genérico. String[] a = c.toarray(new String[0]); 04/09/2014 Técnicas de Programação Avançada 9

53 Conversão de Coleção para Coleção Uma coleção pode ser convertida (ou copiada) para uma outra coleção: TipoColecao2 c2 = new TipoColecao2(c1); Todos os elementos de c1 são automaticamente adicionados a c2. Se as coleções são de tipos diferentes, conversões são realizadas. 04/09/2014 Técnicas de Programação Avançada 10

54 Orientação a Objetos Set Set Conjunto de objetos que não pode conter elementos duplicados Equivale ao conceito matemático de conjunto 04/09/2014 Técnicas de Programação Avançada 11

55 Set: Exemplo Suponha o seguinte problema: Escrever um programa que remova todas as duplicatas dos argumentos da linha de comando. Facilmente implementável com set. public class FindDups { public static void main(string[] args ) { Set<String> s = new HashSet<String>(); for (String a : args) s.add(a); System.out.println(s.size() + " distinct words : " +s); 04/09/2014 Técnicas de Programação Avançada 12

56 Set: Operações Bulk Operações do tipo bulk permitem a implementação de operações de teoria dos conjuntos. Exemplos: união, interseção e diferença. Set<Type> union = new HashSet<Type>(s1); union.addall(s2); Set<Type> intersection = new HashSet<Type>(s1); intersection.retainall(s2); Set<Type> difference = new HashSet<Type>(s1); difference.removeall(s2); 04/09/2014 Técnicas de Programação Avançada 13

57 Set: Elementos Duplicados O que acontece quando tentamos adicionar um elemento que já existe? Um set não pode ter duplicadas. Elemento não é adicionado de novo. Método add retorna false. Também acontece quando tentamos remover um elemento que não existe. E também vale para operações bulk. De forma geral, métodos retornam se a coleção foi alterada. 04/09/2014 Técnicas de Programação Avançada 14

58 Set: Exemplo Considere uma variação do problema das duplicatas: Queremos também saber quais são os elementos que se repetem. public class FindDups2 { public static void main(string[] args) { Set<String> uniques = new HashSet<String>(); Set<String> dups = new HashSet<String>(); for (String a : args){ if (!uniques.add(a)) dups.add(a); // Destructive set-difference uniques.removeall(dups); System.out.println("Unique words: " + uniques); System.out.println("Duplicate words: " + dups); 04/09/2014 Técnicas de Programação Avançada 15

59 SortedSet SortedSet Conjunto objetos classificados em ordem crescente Ordem é usada para definir iteração sobre elementos Também permite operações de range 04/09/2014 Técnicas de Programação Avançada 16

60 List List Conjunto ordenado de objetos Pode conter elementos duplicados 04/09/2014 Técnicas de Programação Avançada 17

61 List: Exemplo Métodos swap e shuffle: public static <E> void swap(list<e> a, int i, int j) { E tmp = a.get(i); a.set(i, a.get(j)); a.set(j, tmp); public static void shuffle(list<?> list, Random rnd) { for (int i = list.size(); i > 1; i--){ swap(list, i - 1, rnd.nextint(i)); 04/09/2014 Técnicas de Programação Avançada 18

62 List: A Classe Collections Classe Collections oferece vários métodos estáticos sobre coleções. Ordenação, busca,... Exemplo de uso: método shuffle. public class Shuffle { public static void main(string[] args) { List <String> list = new ArrayList<String>(); for (String a : args){ list.add(a); Collections.shuffle(list, new Random()); System.out.println(list ); 04/09/2014 Técnicas de Programação Avançada 19

63 List: Transformando Array em List A classe Arrays fornece o método estático aslist(). Converte um array em um List do mesmo tipo de dados. public class Shuffle { public static void main(string[] args) { List<String> list = Arrays.asList(args); Collections.shuffle(list); System.out.println(list); 04/09/2014 Técnicas de Programação Avançada 20

64 Percorrimento de Listas Listas podem ser percorridas como outras coleções quaisquer. Mas há também um tipo de iterator específico para coleções do tipo List. O ListIterator. Permite percorrer a lista para frente ou para trás. for (ListIterator<Type> it = list.listiterator(list.size()); it.hasprevious (); ){ Type t = it.previous ();... 04/09/2014 Técnicas de Programação Avançada 21

65 ListIterator Método listiterator tem duas formas: com ou sem parâmetro. Quando chamamos a forma sem parâmetro, o listiterator é colocado no início da lista. Quando especificamos o parâmetro, ele é colocado na posição indicada. 04/09/2014 Técnicas de Programação Avançada 22

66 ListIterator A qualquer momento, o cursor encontra-se entre dois elementos: O next() e o previous(). 04/09/2014 Técnicas de Programação Avançada 23

67 Orientação a Objetos Queue Queue Fila de objetos Ordenação pode ser FIFO ou determinada por prioridade 04/09/2014 UFF/IC Técnicas de Programação Avançada 04/09/

68 Queue: Exemplo Podemos implementar um heapsort utilizando uma Queue do tipo PriorityQueue. static <E> List<E> heapsort(collection<e> c) { Queue<E> queue = new PriorityQueue<E>(c); List<E> result = new ArrayList<E>(); while(!queue.isempty()) result.add(queue.remove ()); return result ; 04/09/2014 Técnicas de Programação Avançada 25

69 Map Map Conjunto de objetos acessados por chaves Não pode conter chave duplicadas Cada chave está associada a somente um objeto 04/09/2014 UFF/IC Técnicas de Programação Avançada 04/09/

70 Map: Exemplo Considere o seguinte problema: Calcule a frequência de ocorrência de cada string especificada como parâmetro de um programa. public class Freq { public static void main(string[] args) { Map<String, Integer> m = new HashMap<String, Integer>(); // Initialize frequency table from command line for (String a : args) { Integer freq = m.get(a); m.put(a, (freq == null)? 1 : freq + 1); System.out.println(m.size() + " distinct words:"); System.out.println(m); 04/09/2014 Técnicas de Programação Avançada 27

71 Orientação a Objetos SortedMap SortedMap Mantém as chaves classificadas em ordem crescente 04/09/2014 Técnicas de Programação Avançada 28

72 Orientação a Objetos Collection & Map 04/09/2014 Técnicas de Programação Avançada 29

73 Coleções Ordenadas Várias das implementações das interfaces em no Java Collections estabelecem uma ordem específica nos elementos. Há três tipos de ordem usadas nas implementações: Ordem de inserção: elementos são ordenados de acordo com seu momento de inserção na coleção. LinkedList, LinkedHashSet, LinkedHashMap. Ordem natural. Ordem via Comparator. 04/09/2014 Técnicas de Programação Avançada 30

74 Ordem Natural Classes que implementam a interface comparable tem uma ordem natural. Algum critério de comparação que estabelece uma relação de ordenação total. Exemplo: números reais (maior que), pessoas (mais alta), números complexos (módulo é maior que). 04/09/2014 Técnicas de Programação Avançada 31

75 Ordem Natural Se o tipo de dados (classe) implementa a interface comparable, certas coleções utilizam esta relação de ordem para manter os elementos ordenados. PriorityQueue, TreeSet, TreeMap. public interface Comparable<T> { int compareto(t o); 04/09/2014 Técnicas de Programação Avançada 32

76 A Interface Comparator Se um tipo não apresenta uma ordem natural (não implementa a interface Comparable) ou se desejamos manter a ordem baseada em outro critério, podemos usar a interface Comparator. public interface Comparator<T> { int compare(t o1, T o2); 04/09/2014 Técnicas de Programação Avançada 33

77 A Interface Comparator: Exemplo Suponha uma classe Empregado. Empregado contém nome, data de contratação, número,... Suponha que a classe estabelece uma ordem natural sobre o atributo nome. public class Empregado implements Comparable<Empregado> { public String name; public int number; public Date hiredate;... 04/09/2014 Técnicas de Programação Avançada 34

78 A Interface Comparator: Exemplo Vamos armazenar uma coleção ordenada de Empregados. Pergunta: como manter a coleção ordenada pela data de contratação? 04/09/2014 Técnicas de Programação Avançada 35

79 A Interface Comparator class EmpSort implements Comparator<Empregado> { public int compare(empregado e1, Empregado e2) { return -e2.datacontratacao.compareto(e1.datacontratacao); public class Teste { public static void main(string[] args) { Queue<Empregado> q = new PriorityQueue<Empregado>(10, new EmpSort()); q.add(new Empregado("Joao", new Date(94, 11, 3))); q.add(new Empregado("Jose", new Date(89, 1, 31))); q.add(new Empregado("Mario", new Date(92, 4, 6))); q.add(new Empregado("Carlos", new Date(91, 6, 17))); System.out.println(q); 04/09/2014 Técnicas de Programação Avançada 36

80 O Método Sort Também pode-se usar a ordem natural ou a interface Comparator para ordenar uma lista: List<Empregado> q = new ArrayList<Empregado>(); q.add(new Empregado("Joao", new Date(94, 11, 3))); q.add(new Empregado("Jose", new Date(89, 1, 31))); q.add(new Empregado("Mario", new Date(92, 4, 6))); q.add(new Empregado("Carlos", new Date(91, 6, 17))); Collections.sort(q, new EmpSort()); 04/09/2014 Técnicas de Programação Avançada 37

81 Orientação a Objetos Coleções - Implementações HashSet Ordena objetos em hash table TreeSet Ordena objetos em árvore Objetos armazenados devem implementar interface Comparable LinkedHashSet Armazena a ordem de entrada dos elementos em uma lista duplamente encadeada Ordem de iteração preserva ordem de entrada ArrayList Armazena objetos em vetor de tamanho dinâmico simples LinkedList Lista duplamente encadeada FIFO PriorityQueue Heap TreeMap Ordena chave em árvore HashMap Ordena chave em hash table LinkedHashMap Mantém a ordem em que os elementos foram incluídos no mapa em uma lista duplamente encadeada A ordem de inserção é preservada em iterações sobre as chaves 04/09/2014 Técnicas de Programação Avançada 38

82 Exemplos Dias da semana: segunda, terça, etc. Frutas: morango, mamão, abacaxi, etc. A ordem dos valores é definida Os elementos são literais constantes Definição Java Orientação a Objetos Tipos Especiais de Coleções - Enumerações public enum Day { SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO, DOMINGO; Comparação Day day = Day.SEGUNDA; System.out.println(day.compareTo(Day.TERCA)); 04/09/2014 Técnicas de Programação Avançada 39

83 Orientação a Objetos Tipos Especiais de Coleções - Enumerações public enum Planet { MERCURY (3.303e+23, e6), VENUS (4.869e+24, e6), EARTH (5.976e+24, e6), MARS (6.421e+23, e6), JUPITER (1.9e+27, e7), SATURN (5.688e+26, e7), URANUS (8.686e+25, e7), NEPTUNE (1.024e+26, e7);... private final double mass; private final double radius; public static final double G = E-11;... Planet(double mass, double radius) { this.mass = mass; this.radius = radius; private double mass() { return mass; private double radius() { return radius; public double surfacegravity() { return G * mass / (radius * radius); public double surfaceweight(double othermass){ return othermass * surfacegravity(); public static void main(string[] args) { Planet planet = Planet.MARS; System.out.println(planet.surfaceWeight(72)); 04/09/2014 Técnicas de Programação Avançada 40

84 Orientação a Objetos Referências Collections: Collections Interfaces : Collections Implementations : x.html Collections Algorithms: 04/09/2014 Técnicas de Programação Avançada 41

Técnicas de Programação Avançada TCC Prof.: Anselmo Montenegro

Técnicas de Programação Avançada TCC Prof.: Anselmo Montenegro Técnicas de Programação Avançada TCC- 00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br Conteúdo: Coleções Material elaborado com contribuição do Professor Luiz André Interfaces

Leia mais

Técnicas de Programação Avançada TCC- 00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br

Técnicas de Programação Avançada TCC- 00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br Técnicas de Programação Avançada TCC- 00.174 Prof.: Anselmo Montenegro www.ic.uff.br/~anselmo anselmo@ic.uff.br Conteúdo: Coleções Material elaborado com contribuição do Professor Luiz André Coleções Uma

Leia mais

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Técnicas de Programação Avançada TCC- 00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo:Tipos Genéricos Baseado em http://docs.oracle.com/javase/tutorial/java/ generics/) Roteiro Introdução

Leia mais

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Técnicas de Programação Avançada TCC- 00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo:Tipos Genéricos Baseado em http://docs.oracle.com/javase/tutorial/java/ generics/) Introdução É uma

Leia mais

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

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

Leia mais

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

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira API e Coleções Java Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java API Introdução API Endereço http://download.oracle.com/javase/6/docs/api/ API - Descrição API - Resumo API - Detalhes Coleções

Leia mais

Coleções. Prof. Marcelo Roberto Zorzan

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

Leia mais

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

Coleções. João Paulo Q. dos Santos Coleções João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre coleções; Tipos de coleções; Como são classificadas; Exemplos. 04/02/14 2 Coleções Classes e interfaces do pacote java.util

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Prof. Kléber de Oliveira Andrade pdjkleber@gmail.com Coleções, Propriedades, Resources e Strings (Parte 2) Coleções É comum usarmos um objeto que armazena vários outros

Leia mais

Paradigmas da Programação PPROG GENÉRICOS. (Livro Big Java, Late Objects Capítulo 18) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/23

Paradigmas da Programação PPROG GENÉRICOS. (Livro Big Java, Late Objects Capítulo 18) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/23 PPROG Paradigmas da Programação GENÉRICOS (Livro Big Java, Late Objects Capítulo 18) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/23 Genéricos Sumário Noção de Genérico Interesse dos Genéricos Tipos Parametrizados

Leia mais

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

Prof. Fernando V. Paulovich  8 de novembro de SCC Programação Orientada a Objetos Coleções a Tipos Genéricos em Java SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação

Leia mais

Orientação a Objetos AULA 09

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

Leia mais

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?

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? 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? 2. Esboce um diagrama de classes para um capítulo de livro com

Leia mais

Atividade 08 - Utilizando Collections - List

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

Leia mais

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

Collections. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Collections Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Coleções em Java As coleções agrupam vários

Leia mais

Java Util Collections - Interfaces Interfaces definidas

Java Util Collections - Interfaces Interfaces definidas Java Util Collections - Interfaces Interfaces definidas 245 Collection Raiz da hierarquia Grupo mais genérico de elementos Não garante nas implementações Duplicatas Ordenação Não possui nenhuma implementação

Leia mais

Programação Orientada a Objetos. Collections - Java

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

Leia mais

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

Programação II Java Collections Framework (JCF) Christopher Burrows Programação II Java Collections Framework (JCF) Christopher Burrows Arrays Um Array é um contentor que armazena um número fixo de valores de um tipo. Exemplo: int arrayint[] = new int[9];

Leia mais

Desenvolvimento e Projeto de Aplicações Web

Desenvolvimento e Projeto de Aplicações Web Desenvolvimento e Projeto de Aplicações Web cecafac@gmail.com Coleções Conteúdo 1 Introdução Desde a versão 1.2 do JDK, a plataforma J2SE inclui um framework de coleções (Collections) Uma coleção é um

Leia mais

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

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

Leia mais

Collections Framework

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

Leia mais

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

Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho Coleções em Java Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho Introdução O que é uma coleção? Um objeto que agrupa múltiplos elementos em uma única unidade

Leia mais

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 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

Leia mais

TIPOS PARAMETRIZADOS CLASSES GENÉRICAS PARTE II

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

Leia mais

Java Collections Framework II

Java Collections Framework II Java Collections Framework II Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 Gilad Bracha, Generics in the Java Programming Language a.k.a The

Leia mais

Programação OO em Java

Programação OO em Java Programação OO em Java Baseado nos materiais de Profa. Andréa S. Charão Prof. Guilherme D. Juraszek (rev. de Alexandre G. Silva, 09/2017) Sumário Classes abstratas Interfaces Tipos genéricos Coleções Classes

Leia mais

Programação com genéricos

Programação com genéricos Programação com genéricos Laboratório de Programação Pedro Vasconcelos, DCC/FCUP Fevereiro 2015 Tipos genéricos tipos genéricos permitem definir classes ou interfaces que são parameterizadas por outras

Leia mais

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

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,

Leia mais

UFCG - CEEI DSC Grupo PET Computação Ciclo de Seminários

UFCG - CEEI DSC Grupo PET Computação Ciclo de Seminários UFCG - CEEI DSC Grupo PET Computação Ciclo de Seminários Flávio Henrique Farias e Gleyser Guimarães flvhfarias@gmail.com gleyser.bonfim.guimaraes@ccc.ufcg.edu.br Ciclo de Seminários, outubro 2012 1 Apresentando

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Subtipagem e Coringas Lista é subtipo de Lista para qualquer T Não podemos chamar métodos em Lista

Leia mais

Métodos Genéricos. Prof.: Michele Nasu Tomiyama Bucci

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

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 31 de outubro de 2017 Marco Antonio

Leia mais

Profa. Thienne Johnson EACH/USP

Profa. Thienne Johnson EACH/USP Profa. Thienne Johnson EACH/USP Declarando classes usando generics Métodos que usam um parâmetro de tipo como tipo de retorno Declaração da classe BasicGeneric: class BasicGeneric Contém o parâmetro

Leia mais

Java Standard Edition (JSE)

Java Standard Edition (JSE) Java Standard Edition (JSE) 13. Collections framework Esp. Márcio Palheta Gtalk: marcio.palheta@gmail.com 1 Agenda Revisão de dificuldades com Arrays; Trabalhando com Listas - List; Uso de Generics; Interfaces

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

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

Leia mais

01/06/2016 INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS. Programa Capítulo 15. Coleções. A Interface List. A Classe LinkedList. Exercício.

01/06/2016 INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS. Programa Capítulo 15. Coleções. A Interface List. A Classe LinkedList. Exercício. INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 15 Coleções A Interface List A Classe LinkedList Exercício A Interface

Leia mais

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

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

Leia mais

Classes e Objetos. Sintaxe de classe em Java

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

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:

Leia mais

Linguagem de Programação Orientada a Objeto Coleções

Linguagem de Programação Orientada a Objeto Coleções Linguagem de Programação Orientada a Objeto Coleções Professora Sheila Cáceres Coleções Uma coleção é uma estrutura de dados que permite armazenar vários objetos As operações que podem ser feitas em coleções

Leia mais

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

Programação Orientada a Objetos com Java. Prof. Júlio Machado Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br HERANÇA Herança Herança é uma relação de generalização/especialização entre classes A ideia central de herança é que

Leia mais

Programação orientada a objetos em Java

Programação orientada a objetos em Java Programação orientada a objetos em Java Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons

Leia mais

Interfaces POO. Prof. Marcio Delamaro

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

Leia mais

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

Notas de Aula 07: vetores de objetos e coleções Notas de Aula 07: vetores de objetos e coleções Objetivos da aula: Entender a sintaxe de vetores em Java Compreender o uso do vetor como um objeto Uso das coleções em Java Recordando... Na aula passada

Leia mais

AULA 6 - ARRAYS. Array de 10 elementos

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

Leia mais

JAVA COLLECTIONS API: LISTAS

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,

Leia mais

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

Coleções. Profa. Thienne Johnson EACH/USP Coleções Profa. Thienne Johnson EACH/USP Java, how to program, 6ª edição Deitel & Deitel Capítulo 19 Java API - Collections http://java.sun.com/j2se/1.4.2/docs/api/java/util/ Collection.html A estrutura

Leia mais

APIs Java: Tratamento de exceções e Coleções

APIs Java: Tratamento de exceções e Coleções APIs Java: Tratamento de exceções e Coleções POO29004 Engenharia de Telecomunicações Prof. Emerson Ribeiro de Mello http://docente.ifsc.edu.br/mello/poo 16 DE ABRIL DE 2019 Tratamento de Exceções Um simples

Leia mais

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços

Leia mais

4 Conceito de Herança

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

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype

Leia mais

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça Introdução Universidade Federal de Uberlândia Programação Orientada a Objetos Prof. Fabiano Dorça Introdução Definições iniciais: classe, objeto, métodos, atributos. Introdução Ao escrever um programa

Leia mais

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

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são: Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.

Leia mais

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

Conceitos de Interface; classes abstratas; Diagrama de sequencia, Diagrama de atividades, classes aninhadas e Listas dinâmicas Curso APOO Disciplina Linguagem de Programação II Curso Engenharia da Computação Conceitos de Interface; classes abstratas; Diagrama de sequencia, Diagrama de atividades, classes aninhadas e Listas dinâmicas

Leia mais

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

Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade Page 1 podem ser comparadas com arrays, visto que também apresentam a capacidade de armazenar referências para vários objetos. Entretanto, as coleções apresentam uma gama de funcionalidades bem maior do

Leia mais

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

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

Leia mais

5. Generics, Iterators e Comparable em Java

5. Generics, Iterators e Comparable em Java 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

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA

ESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA ESTRUTURAS DE DADOS E ALGORITMOS 1 HEAP BINÁRIA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande HEAP BINÁRIA É uma árvore binária satisfazendo duas propriedades:

Leia mais

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

Generics. Byron Leite e Bruno Fernandes. Orientação a objetos com Java. 1 Generics Orientação a objetos com Java Generics Byron Leite e Bruno Fernandes {byronleite,bjtf@ecomp.poli.br 1 Generics Agenda Geral Parte 07 Exceções Parte 08 Exceções Parte 09 Classes úteis Generics Arquitetura

Leia mais

Tipos, Literais, Operadores

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

Leia mais

Tipos, Literais, Operadores

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

Leia mais

Palavras Reservadas da Linguagem Java

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

Leia mais

Genéricos. Profa. Thienne Johnson EACH/USP

Genéricos. Profa. Thienne Johnson EACH/USP Genéricos Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 18 Material complementar http://wps.prenhall.com/br_deitel_comoprogra_6/ Todas as classes em Java herdam,

Leia mais

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

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli A classe ArrayList Java oferece uma classe chamada ArrayList, que permite a criação e manipulação de objetos; Um objeto ArrayList é semelhante a um vetor de objetos, mas oferece inúmeras vantagens em relação

Leia mais

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

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

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

Herança e Polimorfismo - Parte I -

Herança e Polimorfismo - Parte I - Herança e Polimorfismo - Parte I - Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior O exemplo DoME Database of Multimedia Entertainment Armazena detalhes sobre

Leia mais

Java Coleções. Rodrigo C. de Azevedo

Java Coleções. Rodrigo C. de Azevedo Java Coleções Rodrigo C. de Azevedo OMG Certified UML Professional Fundamental OMG Certified UML Professional Intermediate CompTIA Project+ Sun Certified Associate for Java Platform Sun Certified Programmer

Leia mais

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

Algoritmos e Programação II. Coleções. Coleções. Baseado no material do Prof. Julio Algoritmos e Programação II Baseado no material do Prof. Julio Coleções Java disponibiliza classes que facilitam o agrupamento e processamento de objetos em conjuntos: Coleções (Java Collections Framework).

Leia mais

Linguagem de Programação II Implementação

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

Leia mais

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

Coleções Avançadas. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Coleções Avançadas Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Objetivos Aprender como o conceito de coleção pode ser expresso de forma genérica Examinar

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes parametrizadas (classes genéricas) Várias classes e interfaces da biblioteca padrão de Java têm

Leia mais

A Relação de Subtipo e Tipos Genéricos

A Relação de Subtipo e Tipos Genéricos O tipo List representa as listas que declaram ter elementos do tipo Object O tipo que representa as listas que declaram ter elementos de um tipo qualquer é List Este tipo é definido à custa

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Aula 11 Collections Professores: Elaine Araújo/ Rhavy Maia Baseado no material de aula do professor Frederico Costa Guedes Pereira Introdução Arrays podem dar trabalho...

Leia mais

Aula 11 POO 1 Coleções e Arquivos. Profa. Elaine Faria UFU

Aula 11 POO 1 Coleções e Arquivos. Profa. Elaine Faria UFU Aula 11 POO 1 Coleções e Arquivos Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem

Leia mais

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.

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. 5COP088 Laboratório de Programação Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior 1 Sumário: 1) Métodos hashcode(), equals() e tostring(); 2) Conjuntos; 3) Genéricos; 4) Resumo. 2 1)

Leia mais

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

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli Vetores De modo geral, em linguagem de programação, vetores ou arrays são estruturas de dados que permitem que uma mesma variável possa armazenar mais de um valor; Em Java, vetores são coleções de dados,

Leia mais

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

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes Aula 03 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www3.ifrn.edu.br/~brunogomes Agenda da Aula Representação de Algoritmos em Pseudocódigo: Tipos de Dados;

Leia mais

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

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 paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade

Leia mais

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

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

Leia mais

Linguagem de programação Programação Orientada a objetos

Linguagem de programação Programação Orientada a objetos Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva Paradigma da orientação a objetos Paradigma = forma de

Leia mais

Programação Orientada por Objectos 2007/2008

Programação Orientada por Objectos 2007/2008 Programação Orientada por Objectos 2007/2008 Segundo Teste, 30/6/2008, Duração 1h30 (20 valores) 1 [2v] Considere que pretende desenvolver uma função num jogo que trata uma colisão entre dois objectos

Leia mais

Herança e Polimorfismo -Parte I - Mário Meireles Teixeira O exemplo DoME. Database of Multimedia Entertainment

Herança e Polimorfismo -Parte I - Mário Meireles Teixeira O exemplo DoME. Database of Multimedia Entertainment Herança e Polimorfismo -Parte I - Mário Meireles Teixeira mario@deinf.ufma.br O exemplo DoME Database of Multimedia Entertainment Armazena detalhes sobre CDs e vídeos CD: título, artista, número de faixas,

Leia mais

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Collections Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 08 Arranjos, Listas, Filas, Pilhas, Conjuntos e Mapas 1 Introdução Java fornece implementação de Estruturas de Dados recorrentemente utilizadas.

Leia mais

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

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

Leia mais

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

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância

Leia mais

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em

Leia mais

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com Coleções List Set Map Classes e interfaces do pacote java.util que representam listas, conjuntos e mapas. Solução flexível para armazenar objetos. Quantidade

Leia mais

Coleções - continuação. Profa. Thienne Johnson EACH/USP

Coleções - continuação. Profa. Thienne Johnson EACH/USP Coleções - continuação Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 19 A estrutura de coleções fornece vários algoritmos para operações em coleções Esses algoritmos

Leia mais

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

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

Leia mais

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para

Leia mais

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes - Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes

Leia mais

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017.

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017. Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017 4.9. Delegates Exercício 217 4.9. Delegates Repare nas diferenças destes dois casos com e sem Delegates:

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br

Leia mais