Técnicas de Projeto e Implementação de Sistemas I TCC Prof.: Diego Passos
|
|
- Miguel Nobre de Vieira
- 6 Há anos
- Visualizações:
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- 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 maisTé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 maisTé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 maisTé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 maisProgramaçã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 maisAPI 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 maisColeçõ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 maisColeçõ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 maisProgramaçã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 maisParadigmas 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 maisProf. 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 maisOrientaçã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 mais1. 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 maisAtividade 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 maisCollections. 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 maisJava 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 maisProgramaçã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 maisProgramaçã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 maisDesenvolvimento 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 maisIteradores. 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 maisCollections 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 maisColeçõ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 maisInstituto 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 maisTIPOS 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 maisJava 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 maisProgramaçã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 maisProgramaçã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 maisLista 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 maisUFCG - 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 maisComputaçã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 maisMé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 maisPCC104 - 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 maisProfa. 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 maisJava 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 maisRecapitulando. 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 mais01/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 maisGenerics - 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 maisClasses 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 maisProgramaçã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 maisLinguagem 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 maisProgramaçã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 maisProgramaçã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 maisInterfaces 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 maisNotas 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 maisAULA 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 maisJAVA 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 maisColeçõ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 maisAPIs 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 maisProgramaçã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 mais4 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 maisAná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 maisIntroduçã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 maisApê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 maisConceitos 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 maisColeçõ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 maisProgramaçã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 mais5. 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 maisProgramaçã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 maisESTRUTURAS 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 maisGenerics. 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 maisTipos, 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 maisTipos, 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 maisPalavras 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 maisGené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 maisA 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 maisParadigmas 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 maisComputaçã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 maisHeranç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 maisJava 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 maisAlgoritmos 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 maisLinguagem 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 maisColeçõ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 maisComputaçã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 maisA 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 maisProgramaçã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 maisAula 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 maisLaborató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 maisVetores. 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 maisAula 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 maisHeranç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 maisProgramaçã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 maisLinguagem 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 maisProgramaçã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 maisHeranç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 maisHeranç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 maisProgramaçã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 maisProgramaçã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 maisProgramaçã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 maisInterfaces. 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 maisBSI 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 maisColeçõ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 maisProva 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 maisPadrõ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 maisProgramaçã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 maisProgramaçã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 maisProgramaçã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