Programação Orientada a Objetos com Java
Transcrição
Programação Orientada a Objetos com Java
Programação Orientada a Objetos SANTOS, Rafael (PLT) Poupam trabalho ao programador e melhoram a legibilidade do código Servem para armazenar agrupamentos de objetos Classes e interfaces de java.util, como: Collection, Set, List, Map, TreeSet, HashSet, LinkedHashSet, ArrayList, LinkedList, TreeMap, HashMap, LinkedHashMap São genéricos e devem ter o tipo entre <...> Não admitem elementos duplicados Podem ser vazios e aumentar de tamanho Algumas implementações de Set: TreeSet, HashSet e LinkedHashSet Exemplos: Turma é um conjunto de alunos Aplicação é um conjunto de classes Sorteio de loteria é um conjunto de números Implementação de Set que usa uma árvore para manter a ordenação natural de seus elementos Performance inferior a HashSet para modificação do conjunto Ver classe: Loteria ListaDePalavras DemoListaDePalavras Implementação de Set que não garante qualquer ordenação, nem mesmo a ordem de entrada Performance para modificação melhor que TreeSet Implementa apenas os métodos de Set Ver classe: OperacoesEmConjuntos Implementação de Set que garante a ordem de entrada Performance inferior a HashSet para todas as operações Mecanismo de iteração que cria uma visão dos objetos contidos em uma coleção Cada classe tem uma implementação diferente para a visão de iteração, mas todas implementam Iterator o que permite um tratamento padrão (polimórfico). Principais métodos: boolean hasNext() E next() void remove() Integer a[] = { 12, 45, 65, 29, 10, 33, 78, 37, 65 }; Set<Integer> ts = new TreeSet<Integer>(Arrays.asList(a)); Set<Integer> hs = new HashSet<Integer>(Arrays.asList(a)); Set<Integer> lhs = new LinkedHashSet<Integer>(Arrays.asList(a)); Iterator<Integer> its = ts.iterator(); Iterator<Integer> ihs = hs.iterator(); Iterator<Integer> ilhs = lhs.iterator(); while(its.hasNext()) { System.out.println(its.next() + "-" + ihs.next() + "-" + ilhs.next()); } Estrutura for aprimorado ihs = hs.iterator(); for(Integer e: ts) { System.out.println(e + "-" + ihs.next()); } Arrays gerados a partir da coleção Integer b[] = ts.toArray(new Integer[0]); for(int j = 0; j < b.length; j++) { System.out.println(b[j]); } E first() E last() Primeiro Último E ceiling(E e) E floor(E e) Maior ou igual Menor ou igual E higher(E e) E lower(E e) Maior Menor E pollFirst() E pollLast() Retorna e retira primeiro Retorna e retira último Iterator<E> descendingIterator() SortedSet<E> headSet( E ateElementoExclusive) Início até SortedSet<E> subSet( E doElementoInclusive, E ateElementoExclusive) Meio do e até SortedSet<E> tailSet( E doElementoInclusive) Fim do boolean add(E e) boolean addAll(Collection<? extends E> c) void clear() boolean contains(Object/E o) boolean containsAll(Collection<?> c) boolean isEmpty() boolean remove(Object o) boolean removeAll(Collection<?> c) boolean retainAll(Collection<?> c) int size() Object[] toArray() E[] toArray(new E[0]) Iterator<E> iterator() Admitem objetos duplicados Algumas implementações de List: ArrayList e LinkedList Ver classes: MovimentoDeRobo RoboComMemoria DemoRoboComMemoria Votacao DemoVotacao Implementação de List que encapsula um array,redimensionando-o sempre que necessário Mais rápido que LinkedList para iteração (acesso contínuo ininterrupto) Mais lento que LinkedList para modificação (inserção e exclusão) Possui métodos para gerenciamento da capacidade Implementação da interface List, que encapsula uma lista encadeada Mais lento que ArrayList para iteração Mais rápido que ArrayList para modificação Possui métodos que facilitam a criação de estruturas de dados comuns como pilhas e filas Ver classes: Votacao e DemoVotacao Integer a[] = { 12, 45, 65, 29, 10, 33, 78, 37, 65 }; List<Integer> al = new ArrayList<Integer>(Arrays.asList(a)); List<Integer> ll = new LinkedList<Integer>(Arrays.asList(a)); Iterator<Integer> ial = al.iterator(); Iterator<Integer> ill = ll.iterator(); while(ial.hasNext()) { System.out.println(ial.next() + "-" + ill.next()); } void add(int index, E element) boolean addAll(int index, Collection<? extends E> c) E get(int index) int indexOf(Object o) int lastIndexOf(Object o) E remove(int index) E set(int index, E element) List<E> subList(int fromIndex, int toIndex) void addFirst(E e) void addLast(E e) E getFirst() E getLast() E removeFirst() E removeLast() void Collections.sort(List) int Collections.binnarySearch(List, key) Interface Comparable<Tipo> Método int compareTo(objeto) Conjuntos associativos em que um valor está associado a uma chave exclusiva Não estende Collection Algumas das classes que implementam a interface Map: HashMap, LinkedHashMap e TreeMap Ver classe: DicionarioDeIPs Map<String, String> tm = new TreeMap<String, String>(); Map<String, String> hm = new HashMap<String, String>(); Map<String, String> lhm = new LinkedHashMap<String, String>(); tm.put("JE", "Jose Eduardo"); tm.put("AM", "Amanda"); tm.put("EL", "Elias"); hm.put("JE", "Jose Eduardo"); hm.put("AM", "Amanda"); hm.put("EL", "Elias"); lhm.put("JE", "Jose Eduardo"); lhm.put("AM", "Amanda"); lhm.put("EL", "Elias"); System.out.println("tm: " + tm + "\nhm: " + hm + "\nlhm: " + lhm); V put(K key, V value) void putAll( Map<? extends K,? extends V> m) boolean containsKey(Object key) boolean containsValue(Object value) V get(Object key) V remove(Object key) Set<K> keySet() Collection<V> values()