Java Coleções. Rodrigo C. de Azevedo

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

Download "Java Coleções. Rodrigo C. de Azevedo"

Transcrição

1 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 Java 1.4 Sun Certified Programmer Java 5.0 Sun Certified Web Component Developer Sun Certified Business Component Developer J2EE 1.3 Sun Certified Enterprise Architect [SCEA, Part I] Rodrigo Cabral de Azevedo 2 / 67 1

2 Roteiro Assuntos Método equals() Método hashcode() Família Collection, suas interfaces e classes concretas Interface Comparable e Comparator Classe Collections Família Map, suas interfaces e classes concretas Referências Rodrigo Cabral de Azevedo 3 / 67 Método equals() - Object Ambiente Sendo A e B dois objetos. A implementação de equals() da classe Object tem o mesmo resultado que a comparação direta dos valores de referências na memória, isto é (A == B). Problema Normalmente este não é comportamento desejado. Ao compararmos dois objetos clientes, por exemplo, diremos que um é igual ao outro se seus CPFs forem iguais independente dos valores de referências em memória. Solução Sobrescrever o método equals(). Rodrigo Cabral de Azevedo 4 / 67 2

3 Método equals() - Problema public class Cliente { private String cpf; private String nome; private int id; public String getid() { return id; public String getcpf() { return cpf; public void setcpf(string cpf) { this.cpf = cpf; public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; public Cliente(String cpf, String nome) { setcpf(cpf); setnome(nome); // Esta classe está herdando o método equals(). public class TestEquals { public static void main(string[] args) { Cliente c1 = new Cliente( , Rodrigo ); Cliente c2 = new Cliente( , Rodrigo ); System.out.println(c1.equals(c2)); // Será retornado falso. System.out.println( c1 == c2 ); // Será retornado falso. Rodrigo Cabral de Azevedo 5 / 67 Método equals() - Contrato Reflexivo Para qualquer valor de x, x.equals(x) sempre tem que ser verdadeiro. Simétrico Para qualquer valor de x e y, se x.equals(y) for verdadeiro, então y.equals(x) também tem ser verdadeiro. Transitivo Para qualquer valor de x, y e z. Se x.equals(y) for verdadeiro e y.equals(z) for verdadeiro então x.equals(z) será verdadeiro. Consistente Para qualquer valor de x e y, o fato de múltiplas invocações deve retornar sempre o mesmo, ao menos que um dos objetos sejam alterados. Valor Nulo Qualquer valor comparado a um valor nulo deve retornar falso. Rodrigo Cabral de Azevedo 6 / 67 3

4 Método equals() - Sobrescrito public class Cliente { private String cpf; private String nome; private int id; public String getid() { return id; public String getcpf() { return cpf; public void setcpf(string cpf) { this.cpf = cpf; public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; public Cliente(String cpf, String nome) { setcpf(cpf); setnome(nome); public boolean equals(object o) { if (o==null) { return false; if (!(o instanceof Cliente)) { return false; Cliente c = (Cliente)o; return c.getcpf().equals(this.getcpf()); Rodrigo Cabral de Azevedo 7 / 67 Método equals() - Solução public class TestEquals { public static void main(string[] args) { Cliente c1 = new Cliente( , Rodrigo ); Cliente c2 = new Cliente( , Rodrigo ); System.out.println( c1.equals( c2 ) ); // Será retornado true, conforme desejado. // Será retornado false, pois são referências diferentes que representam o mesmo objeto. System.out.println( c1 == c2 ); Rodrigo Cabral de Azevedo 8 / 67 4

5 Método hashcode() Definição O valor hashcode de um objeto é usado por algumas coleções como HashMap, HashSet, Hashtable entre outras e determina onde o objeto deve ser armazenado. Também ajuda na localização do mesmo na coleção. Rodrigo Cabral de Azevedo 9 / 67 Método hashcode() Consistente Múltiplas invocações de um mesmo objeto não modificado deve retornar sempre o mesmo hashcode. Outras Premissas Se 2 objetos ao serem comparados pelo método equals() são iguais, então o hashcode retornado será o mesmo. Não é obrigatório que 2 objetos diferentes quando comparados pelo método equals(), tenham hashcodes diferentes. Rodrigo Cabral de Azevedo 10 / 67 5

6 Método hashcode() Objetos com hashcode iguais Estão na mesma gaveta, portanto é retornado o mesmo valor inteiro (hashcode). Não significa que é o mesmo objeto (apesar de ser uma possibilidade), apenas que está na mesma gaveta. Objetos com hashcode diferentes Estão em outra gaveta, portanto é retornado valores inteiros (hashcode) diferentes. Indica que não há nenhuma possibilidade de serem o mesmo objeto. Analogia com um Arquivo Rodrigo Cabral de Azevedo 11 / 67 Método hashcode() - Sobrescrito public class Cliente { // Parte do código foi intencionalmente ocultada. public boolean equals(object o) { if (o==null) { return false; if (!(o instanceof Cliente)) { return false; Cliente c = (Cliente)o; return c.getcpf().equals(this.getcpf()); /* Uma outra forma mais simples de implementar este método, mas com certeza não é a mais otimizada, é utilizar o Id do banco para representar o hashcode. */ public int hashcode() { return id; Rodrigo Cabral de Azevedo 12 / 67 6

7 Método hashcode() - Sobrescrito public class Pessoa { int id; String nome; public int getid() { return id; public void setid(int id) { this.id = id; public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; // Exemplo do método hashcode gerado pela IDE Eclipse. public int hashcode() { final int PRIME = 31; int result = 1; result = PRIME * result + id; return result; Rodrigo Cabral de Azevedo 13 / 67 Coleções - API Rodrigo Cabral de Azevedo 14 / 67 7

8 Coleções Família Collection Rodrigo Cabral de Azevedo 15 / 67 Collection, List, Set, Sortedset, Queue A família proveniente da interface Collection É formada pelas interfaces List, Queue, Set e SortedSet. Todas as interfaces possuem classes concretas (implementações) que possibilitam a criação de suas instâncias. Rodrigo Cabral de Azevedo 16 / 67 8

9 Regra é-um Regra é-um Também conhecida como regra da Substituição ou principio de Liskov diz que: Sejam duas classes X e Y, onde X é uma generalização de Y. Não pode haver diferenças entre utilizar instâncias de Y ou de X, do ponto de vista dos clientes de X. Rodrigo Cabral de Azevedo 17 / 67 Interface Collection É a interface mais genérica. Pode representar qualquer instância das interfaces Queue, List, Sort e SortedSet. * * Apenas os métodos mais usuais da interface Collection foram representados. Rodrigo Cabral de Azevedo 18 / 67 9

10 Interface Collection Formas de percorrer (até Java 1.4) Através da interface Iterator: public class TestCollection { public static void main (String args[]) { // Interface Collection recebendo instância de uma classe concreta. Collection c = new ArrayList(); c.add( Rodrigo ); c.add( Luciana ); c.add( João ); // Percorrendo a coleção for (Iterator oit = c.iterator(); oit.hasnext();) { String s = (String)oIt.next(); System.out.println(s); Rodrigo Cabral de Azevedo 19 / 67 Interface Collection Formas de percorrer (a partir do Java 1.5) 1ª - Através da interface Iterator: public class TestCollection { public static void main (String args[]) { // Interface Collection recebendo instância de uma classe concreta. Collection<String> c = new ArrayList<String>(); c.add( Rodrigo ); c.add( Luciana ); c.add( João ); // Percorrendo a coleção for (Iterator<String> oit = c.iterator(); oit.hasnext();) { String s = oit.next(); System.out.println(s); Rodrigo Cabral de Azevedo 20 / 67 10

11 Interface Collection Formas de percorrer (a partir do Java 1.5) 2ª - Através do for-each: public class TestCollection { public static void main (String args[]) { // Interface Collection recebendo instância de uma classe concreta. Collection<String> c = new ArrayList<String>(); c.add( Rodrigo ); c.add( Luciana ); c.add( João ); // Percorrendo a coleção for (String s : c) { System.out.println(s); Rodrigo Cabral de Azevedo 21 / 67 Interface List Permite a inserção de objetos duplicados. Respeita a ordem de inserção. Pela Regra da Substituição, podemos afirmar que pode ser percorrida utilizando todas as formas permitidas da Interface Collection. Rodrigo Cabral de Azevedo 22 / 67 11

12 Interface List Formas de percorrer 3ª - Através do for convencional: public class TestList { public static void main (String args[]) { // Interface List recebendo instância de uma classe concreta. List<String> l = new ArrayList<String>(); l.add( Rodrigo ); l.add( Luciana ); l.add( João ); // Percorrendo a coleção for (int i = 0; i < l.size(); i ++) { String s = l.get( i ); System.out.println(s); Rodrigo Cabral de Azevedo 23 / 67 Coleções Família List A família proveniente da interface List É formada atualmente por 3 classes concretas. Estas classes são Vector, LinkedList e ArrayList. Rodrigo Cabral de Azevedo 24 / 67 12

13 Classe Vector Uma das primeiras classes de coleção criadas no Java. É sincronizada (Thead-safety), e, por isso, mais lenta. Rodrigo Cabral de Azevedo 25 / 67 Classe LinkedList Representa uma lista duplamente encadeada. Possui métodos, além dos presentes na interface List, que possibilitam incluir e remover objetos no início e no final da lista. É a mais rápida ao incluir ou remover a um objeto. É mais lenta que o ArrayList para percorrer, no entanto, quando há a necessidade de se incluir/remover muitos objetos é a mais indicada. Rodrigo Cabral de Azevedo 26 / 67 13

14 Classe ArrayList Mais rápida que a classe Vector pois não é sincronizada. Rápida iteração. Escolha esta classe ao invés da LinkedList quando precisar de rápida iteração mas não irá fazer muitas inserções e remoções na Lista. Rodrigo Cabral de Azevedo 27 / 67 Interface Set Não permite a inserção de objetos duplicados. Pela Regra da Substituição, podemos afirmar que pode ser percorrida utilizando todas as formas permitidas da Interface Collection. Diferentemente da List não há outra forma de percorrer a coleção. O método add() retorna true se o objeto ainda não foi incluído, senão nada ocorre e retorna false. Rodrigo Cabral de Azevedo 28 / 67 14

15 Coleções Família Set A família proveniente da interface Set É formada atualmente por 3 classes concretas e 1 interface. Estas classes são HashSet, LinkedHashSet e TreeSet. Em relação a classe TreeSet, é importante observar que é uma implementação da interface SortedSet. Rodrigo Cabral de Azevedo 29 / 67 Classe HashSet Não respeita a ordem de inserção. Não há nenhum tipo de ordenação. Utiliza o hashcode produzido pelo método hashcode() do objeto inserido para melhorar a performance de acesso. Esta classe deve ser utilizada quando não se deseja que haja duplicação e a ordem de inserção não importa. Rodrigo Cabral de Azevedo 30 / 67 15

16 Classe LinkedHashSet Respeita a ordem de inserção. Não há nenhum tipo de ordenação. Esta classe deve ser utilizada quando não se deseja que haja duplicação e a ordem de inserção é importante. Rodrigo Cabral de Azevedo 31 / 67 Classe HashSet e LinkedHashSet Considerações Importantes A classe dos objetos adicionados deve sobrescrever o método hashcode(). A implementação deste método na classe Object pode permitir que um objeto considerado igual a algum inserido na coleção seja adicionado. Desta forma possibilita, incorretamente, a existência de objetos duplicados no Set. Rodrigo Cabral de Azevedo 32 / 67 16

17 Interface SortedSet Garante que a iteração seja ordenado de acordo com ordem natural (Interface Comparable) ou ordenado de acordo com a interface Comparator. Todos os elementos inseridos na interface SortedSet precisam implementar Comparable ou receber uma interface Comparator no momento da criação. Rodrigo Cabral de Azevedo 33 / 67 Classe TreeSet Permite ordenar os objetos de acordo com a ordem natural fornecida pela interface Comparable. Permite ordenar os objetos de acordo com a ordem fornecida pela interface Comparator. Rodrigo Cabral de Azevedo 34 / 67 17

18 Interface Comparable A ordem natural é possível através da utilização do método compareto(...) que compara o objeto corrente com outro ordenando-os de acordo com o comportamento definido neste método. Funcionamento do método compareto(o: T) : int Se o retorno for negativo, isto é, o objeto corrente for menor que o comparado então o objeto corrente virá antes na ordenação da coleção. Se o retorno for positivo, isto é, o objeto corrente for maior que o comparado, então o objeto corrente virá depois na ordenação da coleção. Se o retorno for zero, o objeto poderá vir em qualquer ordem. Nota É extremamente recomendado, mas não obrigatório que a expressão (x.compareto(y)==0) == (x.equals(y)) seja verdadeira. Classes que implementarem a interface Comparable e violam esta condição devem indicar isto claramente. Rodrigo Cabral de Azevedo 35 / 67 Interface Comparable Inúmeras classes, como os Wrappers, Calendar, Date e String, implementam a interface Comparable. Em outras palavras, fornecem informações de como realizar a ordenação natural. Rodrigo Cabral de Azevedo 36 / 67 18

19 Interface Comparable Considerações Importantes Java 1.4 x Java 5.0 Apesar de inúmeras classes na versão 5.0 implementarem a interface Comparable, é recomendado sempre consultar a documentação da linguagem da versão utilizada. Exemplo Até a versão 1.4, a classe Calendar do pacote java.util não implementa a interface Comparable, ou seja, não informa a coleção como deve ser feito a ordenação natural. A partir da versão 5.0 esta interface é implementada. Uma coleção utilizando TreeSet contendo objetos Calendar em versões anteriores a 5.0 deve fornecer uma instância de Comparator* no construtor senão será lançada a exceção ClassCastException. * será vista em seguida Rodrigo Cabral de Azevedo 37 / 67 Interface SorteSet e Comparable public class Pessoa implements Comparable<Pessoa>{ private int id; private String nome; // Imagine que os getters e setters foram gerados. public Pessoa(int id, String nome) { this.setid(id); this.setnome(nome); public int compareto(pessoa p) { return ( this.getid() p.getid() ); public boolean equals(object o) { if (o == null) return false; if (! (o instanceof Pessoa)) return false; Pessoa p = (Pessoa)o; return ( this.getid() == p.getid() ); Rodrigo Cabral de Azevedo 38 / 67 19

20 Interface SorteSet e Comparable import java.util.*; public class Teste { public static void main(string[] args) { SortedSet<Pessoa> listas = new TreeSet<Pessoa>(); Pessoa p1 = new Pessoa(3, "Rodrigo"); Pessoa p2 = new Pessoa(2, "Luciana"); Pessoa p3 = new Pessoa(1, "Joao"); listas.add(p1); listas.add(p2); listas.add(p3); for (Pessoa p : listas) { System.out.println("Nome: " + p.getnome() + " Id: " + p.getid()); Rodrigo Cabral de Azevedo 39 / 67 Interface Comparator É possível fornecer outra ordenação diferente da ordem natural através da utilização do método compare(...) que compara dois objeto ordenando-os de acordo com o comportamento definido neste método. Funcionamento do método compare(o1: T, o2: T) : int Se o retorno for negativo, isto é, o objeto do primeiro argumento for menor que o comparado no segundo argumento então o objeto corrente virá antes na ordenação da coleção. Se o retorno for positivo, isto é, o objeto do primeiro argumento for maior que o comparado no segundo argumento então o objeto corrente virá depois na ordenação da coleção. Se o retorno for zero, o objeto poderá vir em qualquer ordem. Nota É recomendado utilizar a implementação do equals da classe Object, entretanto, segundo a documentação da Sun, a capacidade de identificar se um objeto Comparator é igual a outro pode, em alguns casos, aumentar a performance. Rodrigo Cabral de Azevedo 40 / 67 20

21 Interface SorteSet e Comparator public class PessoaComparator implements Comparator<Pessoa>{ public int compare(pessoa p1, Pessoa p2) { return ( p1.getnome().compareto(p2.getnome() ) ); // Pode-se deixar a implementação do Object para o método equals. Rodrigo Cabral de Azevedo 41 / 67 Interface SorteSet e Comparator import java.util.*; public class Teste { public static void main(string[] args) { SortedSet<Pessoa> listas = new TreeSet<Pessoa>(new PessoaComparator()); Pessoa p1 = new Pessoa(3, "Rodrigo"); Pessoa p2 = new Pessoa(2, "Luciana"); Pessoa p3 = new Pessoa(1, "Joao"); listas.add(p1); listas.add(p2); listas.add(p3); for (Pessoa p : listas) { System.out.println("Nome: " + p.getnome() + " Id: " + p.getid()); Rodrigo Cabral de Azevedo 42 / 67 21

22 Interface Queue Queues normalmente, mas não necessariamente, terão seus elementos obedecendo o formato FIFO (first-in-firstout). As exceções são as priority queues, onde os elementos serão ordenados de acordo com o objeto Comparator passado, ou de acordo com a ordem natural informado pela interface Comparable e as pilhas que ordenam os elementos como LIFO (last-infirst-out). Pela Regra da Substituição, podemos afirmar que pode ser percorrida utilizando todas as formas permitidas da Interface Collection. Rodrigo Cabral de Azevedo 43 / 67 Interface Queue - Métodos element() Obtém o elemento, mas não o remove. Lança a exceção NoSuchElementException se a queue estiver vazia. offer(e o) Insere um elemento na fila. peek() Obtém o elemento, mas não o remove. Retorna null se a queue estiver vazia. poll() Obtém o elemento e o remove da queue, ou retorna null se estiver vazia. remove() Obtém o elemento e o remove da queue. Lança a exceção NoSuchElementException se a queue estiver vazia. Rodrigo Cabral de Azevedo 44 / 67 22

23 Coleções Família Queue A família proveniente da interface Queue É formada atualmente por 2 classes concretas. Estas classes são PriorityQueue e LinkedList. Rodrigo Cabral de Azevedo 45 / 67 Classe LinkedList Esta classe, que também implementa List, implementa Queue, e, ao fazer isso possibilita o comportamento FIFO (first-in-first-out). Além disso, é possível facilmente simular uma pilha com os métodos existentes. Rodrigo Cabral de Azevedo 46 / 67 23

24 Classe PriorityQueue Estas filas ordenam os elementos com o especificado no momento da criação de acordo com o construtor utilizado. É possível utilizar a ordem natural (definida por Comparable) ou a ordem definida pela interface Comparator. Esta classe não permite elementos nulos. Assim como na classe TreeSet, se for informado algum objeto que não é comparável (não implementa Comparable e não for passado um objeto Comparator) será lançada a exceção ClassCastException. Rodrigo Cabral de Azevedo 47 / 67 Interface Queue com PriorityQueue Formas de percorrer public class TestQueue2 { public static void main(string[] args) { Queue<Pessoa> q = new PriorityQueue<Pessoa>(); Pessoa pl = new Pessoa("Rodrigo",2); Pessoa p2 = new Pessoa("Luciana",3); Pessoa p3 = new Pessoa("Jose",1); q.offer(pl); q.offer(p2); q.offer(p3); Pessoa pessoa = null; // Pool retira o elemento da Queue. Ao final a fila estará completamente vazia. while ((pessoa = q.poll())!=null) { System.out.println("Nome: " + pessoa.getnome() + " Id: " + pessoa.getid()); System.out.println("Vazia: " + q.isempty()); Rodrigo Cabral de Azevedo 48 / 67 24

25 Classe Collections Método sort(...) Há 2 variações, uma que ordena uma coleção do tipo List através da ordem natural (implementação de Comparable) e outra que possibilita informar a ordenação desejada através de um objeto Comparator. Nota O método sort() lancará a exceção ClassCastException se a lista utilizada conter objetos não comparáveis da mesma forma que ocorre com a classe TreeSet e a PriorityQueue. Rodrigo Cabral de Azevedo 49 / 67 Classe Collections Método binarysearch(...) A utilização deste método deve respeitar algumas premissas: A lista tem que estar previamente ordenada. Caso tenha sido utilizado na ordenação um objeto Comparator no método sort(), isto é, não foi utilizada a ordem natural, o mesmo tem de ser informado como parâmetro do método. Rodrigo Cabral de Azevedo 50 / 67 25

26 Classe Collections Método binarysearch(...) O método binarysearch() retornará o índice do objeto procurado. Se o objeto procurado não estiver presente na lista, será retornado um inteiro negativo, cujo o valor absoluto representa a posição (ou índice) onde o objeto deveria estar caso existisse na lista somado de 1. Rodrigo Cabral de Azevedo 51 / 67 Classe Collections Exemplo de uso Numa lista hipotética ordenada alfabeticamente, há em seu conteúdo os seguintes nomes: Arnaldo, Bartolomeu, Xavier. Ao tentar buscar o objeto que representa o nome Carla, será retornado um inteiro que representa o índice da posição onde estaria caso o objeto procurado estivesse na lista (2) somado de 1 (2 + 1 = 3) e multiplicado por -1 apresentando como resultado final um número negativo (-3). Rodrigo Cabral de Azevedo 52 / 67 26

27 Classe Collections Método binarysearch(...) Imagine que estamos procurando a letra N entre todas as outras do alfabeto. A busca binária irá subdividir a lista enquanto necessário, verificando se o objeto desejado está antes ou depois do centro da divisão, e, fará este processo até encontrar o objeto procurado. A M Objeto procurado N O R Z Rodrigo Cabral de Azevedo 53 / 67 Classe Collections public class TestCollections { public static void main(string[] args) { List<Pessoa> lista = new ArrayList<Pessoa>(); Pessoa pl = new Pessoa("Rodrigo",2); Pessoa p2 = new Pessoa("Luciana",3); Pessoa p3 = new Pessoa("Jose",1); lista.add(pl); lista.add(p2); lista.add(p3); Comparator<Pessoa> comp = new Comparator<Pessoa>() { public int compare(pessoa p1, Pessoa p2) { return p1.getnome().compareto(p2.getnome()); ; Collections.sort(lista, comp); for ( Iterator<Pessoa> oit = lista.iterator(); oit.hasnext(); ) { Pessoa p = oit.next(); System.out.println(p.getNome()); // Buscar por Luciana Pessoa p = new Pessoa(); p.setnome("luciana"); int pos = Collections.binarySearch(lista,p,comp); p = lista.get(pos); System.out.println("Pessoa [Nome: "+p.getnome()+" Id:" + p.getid()+"]"); Rodrigo Cabral de Azevedo 54 / 67 27

28 Coleção Família Map A família proveniente da interface Map É formada atualmente por 4 classes concretas e 1 interface. Estas classes são HashMap, Hashtable, LinkedHashMap e TreeMap. Em relação a classe TreeMap, é importante observar que é uma implementação da interface SortedSet. Rodrigo Cabral de Azevedo 55 / 67 Interface Map Map permite fornecer uma chave para obter um valor, isto é, associar um objeto a outro. O objeto Map.Entry é obtido através do método entryset() que retorna uma coleção Set deste objeto. A classe Map.Entry possui métodos que possibilitam a obtenção das chaves e dos valores utilizados no Map. Rodrigo Cabral de Azevedo 56 / 67 28

29 Classe HashMap É a mais rápida no acesso (inserção, obtenção e remoção) de elementos. Permite uma chave nula e múltiplos valores nulos. Não respeita a ordem de inserção e utiliza o resultado do método hashcode() para definir uma ordem otimizada. Rodrigo Cabral de Azevedo 57 / 67 Interface Map com HashMap Formas de percorrer public class TestHashMap { public static void main(string[] args) { Map<String, Pessoa> omap = new HashMap<String, Pessoa>(); Pessoa p1 = new Pessoa("Rodrigo",2); Pessoa p2 = new Pessoa("Luciana",3); Pessoa p3 = new Pessoa("Jose",1); omap.put("professor",p1); omap.put("aluno",p2); omap.put("diretor",p3); Set<String> chaves = omap.keyset(); for (String s : chaves) { Pessoa valor = omap.get(s); System.out.println("Chave: " + s + " Valor: " + valor.getnome()); Rodrigo Cabral de Azevedo 58 / 67 29

30 Interface Map com HashMap/Entry Formas de percorrer public class TesteEntry { public static void main(string[] args) { Map<String, Pessoa> omap = new HashMap<String, Pessoa>(); Pessoa p1 = new Pessoa("Rodrigo",2); Pessoa p2 = new Pessoa("Luciana",3); Pessoa p3 = new Pessoa("Jose",1); omap.put("professor",p1); omap.put("aluno",p2); omap.put("diretor",p3); Set<Entry<String,Pessoa>> nos = omap.entryset(); for (Entry<String,Pessoa> no : nos) { Pessoa p = no.getvalue(); System.out.println("Chave: " + no.getkey() + " Valor: " + p.getnome()); Rodrigo Cabral de Azevedo 59 / 67 Classe Hashtable Assim como o Vector, é umas das mais antigas estruturas de coleção, e, é sincronizada (Thead-safety). Não permite nenhuma chave nula. Não respeita a ordem de inserção e utiliza o resultado do método hashcode() para definir uma ordem otimizada. Rodrigo Cabral de Azevedo 60 / 67 30

31 Classe LinkedHashMap Respeita a ordem de inserção. É mais lento que o HashMap para adição e remoção de elementos. É o mais rápido para percorrer. Rodrigo Cabral de Azevedo 61 / 67 Interface Map com LinkedHashMap Formas de percorrer public class TestLinkedHashMap { public static void main(string[] args) { Map<String, Pessoa> omap = new LinkedHashMap<String, Pessoa>(); Pessoa p1 = new Pessoa("Rodrigo",2); Pessoa p2 = new Pessoa("Luciana",3); Pessoa p3 = new Pessoa("Jose",1); omap.put("professor",p1); omap.put("aluno",p2); omap.put("diretor",p3); Set<String> chaves = omap.keyset(); for (String s : chaves) { Pessoa valor = omap.get(s); System.out.println("Chave: " + s + " Valor: " + valor.getnome()); Rodrigo Cabral de Azevedo 62 / 67 31

32 Interface SortedMap Garante que as chaves sejam ordenadas de acordo com ordem natural (Interface Comparable) ou ordenadas de acordo com a interface Comparator. As chaves inseridas na precisam implementar Comparable ou fornecer uma interface Comparator no momento da criação do SortedMap. Rodrigo Cabral de Azevedo 63 / 67 Classe TreeMap Permite ordenar as chaves de acordo com a ordem natural fornecida pela interface Comparable. Permite ordenar as chaves de acordo com a ordem fornecida pela interface Comparator. Rodrigo Cabral de Azevedo 64 / 67 32

33 Interface Map com TreeMap Formas de percorrer public class TestTreeMap { public static void main(string[] args) { Map<String, Pessoa> omap = new TreeMap<String, Pessoa>(); Pessoa p1 = new Pessoa("Rodrigo",2); Pessoa p2 = new Pessoa("Luciana",3); Pessoa p3 = new Pessoa("Jose",1); omap.put("professor",p1); omap.put("aluno",p2); omap.put("diretor",p3); Set<String> chaves = omap.keyset(); for (String s : chaves) { Pessoa valor = omap.get(s); System.out.println("Chave: " + s + " Valor: " + valor.getnome()); Rodrigo Cabral de Azevedo 65 / 67 Interface Map com TreeMap Formas de percorrer public class TestTreeMap2 { public static void main(string[] args) { Map<String, Pessoa> omap = new TreeMap<String, Pessoa>(); Pessoa p1 = new Pessoa("Rodrigo",2); Pessoa p2 = new Pessoa("Luciana",3); Pessoa p3 = new Pessoa("Jose",1); omap.put("professor",p1); omap.put("aluno",p2); omap.put("diretor",p3); Collection<Pessoa> valores = omap.values(); for (Pessoa p : valores) { System.out.println("Valor: " + p.getnome()); Como utilizamos um TreeMap, a ordenação ocorreu normalmente nas chaves. Ao solicitarmos os valores através do método values(), os objetos virão ordenados de acordo com a chave. Rodrigo Cabral de Azevedo 66 / 67 33

34 Referências SIERRA, Kathy; BATES, Bert. Sun Certified Programmer for Java 5 Study Guide. McGraw-Hill/Osborne, 2006 Site java.sun.com Rodrigo Cabral de Azevedo 67 / 67 34

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

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

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

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

Programação Java. em Ambiente Distribuído. Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate. Douglas Rocha Mendes.

Programação Java. em Ambiente Distribuído. Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate. Douglas Rocha Mendes. Programação Java em Ambiente Distribuído Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate Douglas Rocha Mendes Novatec Copyright 2011 da Novatec Editora Ltda. Todos os direitos reservados

Leia mais

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS Coleções Conceitos e Utilização Básica c Professores de ALPRO I Faculdade de Informática PUCRS 05/2012 ALPRO I (FACIN) Coleções: Básico 05/2012 1 / 41 Nota Este material não pode ser reproduzido ou utilizado

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

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do

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

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Implementação de Classe e Auto-Relacionamento em Java

Implementação de Classe e Auto-Relacionamento em Java UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Implementação de Classe e Auto-Relacionamento em Java 1)Introdução Um modelo de Diagrama de Classes representa a estrutura definida

Leia mais

Unidade IV: Ponteiros, Referências e Arrays

Unidade IV: Ponteiros, Referências e Arrays Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências

Leia mais

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

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

5 Caso de estudo O cartão fidelidade

5 Caso de estudo O cartão fidelidade 5 Caso de estudo O cartão fidelidade Cartão de fidelização de clientes das distribuidoras de combustível. Definição em JAVA da classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante

Leia mais

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

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Tabela de símbolos: tabelas de espalhamento

Tabela de símbolos: tabelas de espalhamento Tabela de símbolos: tabelas de espalhamento Marcelo K. Albertini 14 de Janeiro de 2014 2/28 Resumo de complexidades Análises para operação efetuada após N inserções pior caso caso médio keys chave get

Leia mais

Capítulo 21. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 21. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 21 Coleções Objetivos do Capítulo Analisar o conceito de coleção e sua relação com as estruturas de dados. Apresentar a arquitetura do framework de coleções do Java. Indicar as classes e interfaces

Leia mais

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Tipos de Dado Abstrato: Listas, Filas e Pilhas Tipos de Dado Abstrato: Listas, Filas e Pilhas Estruturas de Dados Prof. Vilson Heck Junior Introdução Tradicionalmente conhecidos como Tipos de Dado Abstrato, são algumas Estruturas de Dados básicas e

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Unidade 20 ArrayList: Operações de Busca Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 TIPOS DE BUSCAS... 3 BUSCA ESPECÍFICA... 3 BUSCA ABRANGENTE... 3 PROCEDIMENTO DE BUSCA...

Leia mais

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos. import java.util.scanner; class Data... class Compromisso... public class Agenda private Compromisso[] compromissos; private Compromisso[] realoquecompromissos (Compromisso[] vetor, int tamanhodesejado)

Leia mais

Módulo 06 Desenho de Classes

Módulo 06 Desenho de Classes Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.

Leia mais

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

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Classes abstratas Interfaces Tipos genéricos Coleções Classes abstratas São classes que não podem ser instanciadas, porque representam

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

Rafael Santos. Instituto Nacional de Pesquisas Espaciais www.lac.inpe.br/ rafael.santos. Rafael Santos - www.lac.inpe.br/ rafael.

Rafael Santos. Instituto Nacional de Pesquisas Espaciais www.lac.inpe.br/ rafael.santos. Rafael Santos - www.lac.inpe.br/ rafael. Coleções e Aplicações Rafael Santos Instituto Nacional de Pesquisas Espaciais www.lac.inpe.br/ rafael.santos Rafael Santos - www.lac.inpe.br/ rafael.santos 1 / 54 Tópicos 1 Sobre... 2 Revisão de Java 3

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível. Caso de estudo O cartão fidelidade Cartão de fidelização de clientes das distribuidoras de combustível. Definição em JAVA da classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante

Leia mais

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

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Classes abstratas Interfaces Tipos genéricos Coleções Introdução GUI Classes abstratas São classes que não podem ser instanciadas,

Leia mais

Encapsulamento de Dados

Encapsulamento de Dados Encapsulamento de Dados Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Modificadores de Visibilidade Especificam

Leia mais

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4. jvo@ualg.pt José Valente de Oliveira 16-1

Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4. jvo@ualg.pt José Valente de Oliveira 16-1 Streams III Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 jvo@ualg.pt José Valente de Oliveira 16-1 Previously: Serializing a collection public

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

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

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 7 RTTI e Interfaces Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é

Leia mais

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

15-09-2009. Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido PARTE III: Java e OO - detalhes Membros de classe e instâncias Pacotes Visibilidade Classes aninhadas Membros de classe e de instância De classe Static Método não necessita de objeto para ser chamado.

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

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

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

3 Classes e instanciação de objectos (em Java) 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

Busca. Pesquisa sequencial

Busca. Pesquisa sequencial Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um

Leia mais

Algoritmos e Programação II. Sobrecarga

Algoritmos e Programação II. Sobrecarga Algoritmos e Programação II Baseado no Material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, têm nomes distintos porque

Leia mais

Aula 30 - Sockets em Java

Aula 30 - Sockets em Java Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

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

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA 6 Filas Estrutura de Dados A Estrutura de Dados Fila Fila é uma estrutura de dados usada em programação, que tem regras para

Leia mais

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

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)

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

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente

Leia mais

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this. Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.x = x; this.y = y; public String tostring(){ return "(" + x + "," +

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

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

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define

Leia mais

Modulo IIa Extra: Object

Modulo IIa Extra: Object Modulo IIa Extra: Object Professor Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Bibliografia Linguagem de Programação JAVA Ismael H. F. Santos,

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

Universidade da Beira Interior. Sistemas Distribuídos

Universidade da Beira Interior. Sistemas Distribuídos Folha 6-1 Sincronização de Threads A sincronização de Threads em Java é baseada no conceito do Monitor (de Hoare). Cada objecto Java tem associado um monitor (ou lock ) que pode ser activado se a palavra

Leia mais

Programação Visual TIC - 3PA. Lista de Exercícios 02

Programação Visual TIC - 3PA. Lista de Exercícios 02 Programação Visual TIC - 3PA Lista de Exercícios 02 Professor: Edwar Saliba Júnior 1) Elabore um programa para simular uma conta de poupança. Crie uma classe contacorrente com os seguintes atributos: saldo,

Leia mais

Tutorial de Uso com o Java

Tutorial de Uso com o Java Tutorial de Uso com o Java Criado por Fernando Anselmo Versão 1.0 em 18/08/2012 Seção 1 Nesta seção veremos: Histórico do MongoDB Como instalar o MongoDB Console de Comandos Usar o Java MongoDB (de "humongous

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

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE FEDERAL DO PARANÁ CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 05 APRESENTAÇÃO: Nesta aula vamos ver como se faz a criação de Métodos

Leia mais

Desenvolvimento Web com Framework Demoiselle versão 1.0

Desenvolvimento Web com Framework Demoiselle versão 1.0 Desenvolvimento Web com Framework Demoiselle versão 1.0 Módulo 07: Outros Componentes Autor: Rodrigo Hjort Serpro / Coordenação Estratégica de Tecnologia / Curitiba www.frameworkdemoiselle.org.br Modificado

Leia mais

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

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education Java Como Programar, 8/E Slide 1 Slide 2 Slide 3 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 ou, com

Leia mais

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

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

Aula 16: Estudo de Caso: A API de Coleções do Java

Aula 16: Estudo de Caso: A API de Coleções do Java Aula 16: Estudo de Caso: A API de Coleções do Java Você não pode ser um programador Java competente sem compreender as partes cruciais da biblioteca Java. Os tipos básicos estão todos em java.lang, e são

Leia mais

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua. 7 Animação Animações é um dos quesitos muito importantes em jogos, você não acha? Para isso o JPlay tem uma classe específica para lidar com animações. Essa classe se chama Animation. Bem sugestivo o nome

Leia mais

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

Herança. Algoritmos e Programação II. Aula 5 Herança Algoritmos e Programação II Aula 5 Herança *Adaptado do material do Prof. Júlio Machado Herança Uma característica importante da programação orientada a objetos é permitir a criação de novas classes com

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

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

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único Pacotes e Encapsulamento Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes

Leia mais

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

Programação Orientada a Objetos em Java. Herança Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados

Leia mais

EAD Árvore árvore binária

EAD Árvore árvore binária EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore

Leia mais

Templates e Pilhas. 1. Introdução

Templates e Pilhas. 1. Introdução Templates e Pilhas 1. Introdução Templates ou Generics é considerado uma forma de polimorfismo [1]. É uma forma de programar onde o tipo do dado não é considerado. Programa-se para um tipo de dado indefinido.

Leia mais

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;} 2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II Exercício : Construtores são métodos especiais sem tipo de retorno (nem mesmo void) e de mesmo nome que a classe que são invocados quando da criação

Leia mais

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

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-3 Criando Classes em Java Prof. Esbel Tomás Valero Orellana Da Aula Anterior Classes em Java, sintaxe básica Tipos básicos de dados em Java, como escolher o tipo apropriado

Leia mais

Especialização em web com interfaces ricas

Especialização em web com interfaces ricas Especialização em web com interfaces ricas Conceitos avançados de programação Prof. Fabrízzio Alphonsus A. M. N. Soares fabrizzio@inf.ufg.br professor.fabrizzio@gmail.com Instituto de Informática Universidade

Leia mais

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 8 Classes Internas Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

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

Computação II Orientação a Objetos

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

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda

Leia mais

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação Java Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação 1 Tabelas para quê? As tabelas são utilizadas quando se pretende armazenar e manipular um grande número de

Leia mais

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore

Leia mais

Programação Concorrente em java - Exercícios Práticos Abril 2004

Programação Concorrente em java - Exercícios Práticos Abril 2004 Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente

Leia mais

Trabalho 3: Agenda de Tarefas

Trabalho 3: Agenda de Tarefas INF 1620 Estruturas de Dados Semestre 08.2 Trabalho 3: Agenda de Tarefas O objetivo deste trabalho é a implementação de um conjunto de funções para a manipulação de uma agenda de tarefas diárias, de forma

Leia mais

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com. Aula 04 Operadores e Entrada de Dados Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Operadores: Aritméticos; Atribuição; Concatenação;

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

THREADS EM JAVA. George Gomes Cabral

THREADS EM JAVA. George Gomes Cabral THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação A Introdução à Programação Orientada a Objetos Programação e Sistemas de Informação Objectos (1) Objectos são coisas que temos no mundo real e abstraímos no mundo virtual para que possamos manipulá-los

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

Herança. Alberto Costa Neto DComp - UFS

Herança. Alberto Costa Neto DComp - UFS Herança Alberto Costa Neto DComp - UFS 1 Motivação Vimos como se faz encapsulamento e a importância de fazê-lo... Contudo, também é possível fazer encapsulamento em algumas linguagens não OO O que mais

Leia mais

RevISTa: Publicação técnico-científica do IST-Rio. nº 05 Data: Dezembro / 2012 ISSN 2178-5589.

RevISTa: Publicação técnico-científica do IST-Rio. nº 05 Data: Dezembro / 2012 ISSN 2178-5589. Tutorial de Instalação e Uso do Eclipse Alexandre V. S. Lage, Caio de O. Leal, Eduardo A. F. da Silva, Felipe C. C. Trindade, Gutierre da C. Oliveira e Miguel G. P. de Carvalho. INTRODUÇÃO O Eclipse (2012)

Leia mais

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

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

AULA DE JAVA 2 CONCEITOS AVANÇADOS

AULA DE JAVA 2 CONCEITOS AVANÇADOS AULA DE JAVA 2 CONCEITOS AVANÇADOS DAS 5316 Integração de Sistemas Corporativos Roque Oliveira Bezerra, M. Eng. roque@das.ufsc.br Prof. Ricardo J. Rabelo ROTEIRO Recaptulação da aula anterior Exceções

Leia mais

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. JDBC CRIANDO O BANCO DE DADOS: Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. CRIANDO O PROJETO JAVA PARA DESKTOP: Crie um projeto Java chamado Prograd Crie um pacote chamado

Leia mais

Programação Orientada a Objetos em

Programação Orientada a Objetos em Programação Orientada a Objetos em Flávio Miguel Varejão UFES Utilidades Pacotes com várias classes amplamente utilizadas Exemplos Vector, ArrayList, Calendar, Currency, Random, Formatter, Scanner, Comparator,

Leia mais

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 14 Herança a e Polimorfismo Objetivos do Capítulo Apresentar os conceitos de herança e de polimorfismo. Explorar os diversos recursos disponíveis no Java para a aplicação da herança e do polimorfismo

Leia mais