AGRUPANDO OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Repetição
Advertisements

Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Prof. Thiago Pereira Rique
Interação entre objetos
Walfredo Cirne walfredo.dsc.ufpb.br
Integração entre objetos
Classes e objetos Arrays e Sobrecarga
Classes e objetos P. O. O. Prof. Grace.
Classes, Objetos e Encapsulamento
Aula Prática 4 Monitoria IP/CC (~if669).
Entendendo as definições de classe
JAVA Orientação a Objetos Sun Campus Ambassador Aula 5.
Pilhas Profa. Nádia Félix.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Módulo 9 Strings , Coleções e I/O
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Coleções em Java - Parte 2
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
POO - I PROF.: JEAN CARLO MENDES
Introdução a Programação
Coleções em Java (Parte 1)
Array e ArrayList LPOO – 01/09/14.
Busca Sequencial Int pseq(int x, int n, int v[]){ for(i=0; i
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Arrays e Matrizes na Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator.
MCEF 2012/2013. Introdução ao “Mathematica” Utilização do Mathematica Funcionamento do programa Regras da Linguagem Exemplos Exercícios!!
José Antônio da cunha IFRN Administração de Banco de Dados.
4 Aula – Introdução ao PHP Márcio Ferreira da Silva.
M ICROSOFT W ORD 2007 C OMANDOS Disciplina - Intermática Prof.ª Andréia Vieira do Nascimento.
COMPORTAMENTO SOFISTICADO Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
Web Application Rafael Muniz e Marcus Vinícius Plugins MAVEN 04/04/2009 Revisão 12/04/2009.
INTERAÇÃO ENTRE OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais Prof.: Gustavo Wagner
Iterações Dilvan Moreira. Lembrando... Desenvolvimento de programas  Desenvolvimento incremental:  Evitar depuração de muito código.  A técnica consiste.
Práticas Colaborativa de Programação Peterson Rodrigues Outubro de 2015.
IFRN Técnico em Informática para Internet Desenvolvimento de Algoritmos Prof. Gilbert Azevedo.
Minicurso Java Básico Ruddá Beltrão | Cristian Costa.
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
Noções de projeto orientado a objetos - camadas Prof. Gustavo Wagner (alterações) Prof. Tiago Massoni (Slides originais) Desenvolvimento de Sistemas FATEC-PB.
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Polimorfismo com Interfaces Pacotes em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB.
Minicurso Java Básico Cristian Backy | Cristian Costa | Ruddá Beltrão.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Clique para editar o título Linguagem C Para programadores Python PMR
Prof. Tertuliano Estrutura Condicional em C++
Jean Carlo Mendes
Laboratório de Computação Aula 05 – Array Prof. Fábio Dias
Introdução ao Eclipse 3.2 Prof. Gustavo Wagner (modificações) Slides originais: Prof. Tiago Massoni Java Básico  Centro de Informática, UFPE.
SISTEMAS DE INFORMAÇÃO GEOGRÁFICA APLICADOS Deteção remota GeoprocessamentoautomáticoWebSIG Modelos digitais de terreno de terreno Análise de imagem Análise.
AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
Lógica de programação Estruturas de seleção Estruturas de repetição Sub-Rotinas 1.
Revisão de Conceitos Thiago Medeiros Barros. Algoritmos Qualquer problema de computação pode ser resolvido executando uma série de ações em uma ordem.
FORMULÁRIOS FORMULARIOS. Introdução O formulário é um importante meio de comunicação, transmissão e registro de informações, principalmente as baseadas.
Padrões de Projeto Aula 15 – Padrão Command. PADRÃO COMMAND Encapsulando a chamada de métodos com o padrão Command. 2.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
PROGRAMANDO SEM POO EM JAVA Dilvan Moreira (baseado no livro Big Java)
VARIÁVEIS EM JAVA Dilvan Moreira (baseado no livro Big Java)
Aplicativos para Web Collections Prof. Odair
Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)
Aula 6 – Arrays.. Arrays Arrays em PHP são estruturas de dados mais sofisticadas e flexíveis do que em outras linguagens; Um array é uma seqüência ordenada.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Algoritmos Grupos de Slides No 3. Prof. SIMÃO Estrutura de decisão composta "se senão" if else end Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof.
Percorrendo coleções com Iterator
Transcrição da apresentação:

AGRUPANDO OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)

Leitura  Capítulo 4 (Prog. Orient. a Obj. usando Java - 4th Edition)

Lembrando: Modularização e Abstração Mostrador de quatro dígitos Mostrador de dois dígitos para hora e outro para minutos Mostrador de dois dígitos com limite. No caso das horas, o limite é entre “0” até “23”. No caso dos minutos, o limite é entre “0” até “59” Nível de Abstração maior

Lembrando: Diagrama de Objetos

Lembrando: Diagrama de Classes

Lembrando: Tipo de objeto versus tipo primitivo  Tipos de objeto versus tipos primitivos 32 tipo de objeto tipo primitivo NumberDisplay obj; int i;

Lembrando: Referência de Objeto  O diagrama de objeto mostra a referência de objeto.  Assim, uma variável de tipo primitivo é mostrada como uma caixa branca e a referência de objeto é mostrada com uma seta. 32 int a; 32 ObjectType a; ObjectType b; int b; b = a;

Lembrando: Chamadas de método  chamadas de método interno: updateDisplay();... private void updateDisplay()  chamadas de método externo: minutes.increment();

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 9 Principais conceitos a serem abrangidos  Coleções (especialmente ArrayList)

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 10 O requisito para agrupar objetos  Muitas aplicações envolvem coleções de objetos:  Dispositivos do tipo PDA.  Catálogos de biblioteca.  Sistema de registro de estudantes.  O número de itens a ser armazenado varia.  Itens adicionados.  Itens excluídos.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 11 Um bloco de notas pessoal  Anotações podem ser armazenadas.  Anotações individuais podem ser visualizadas.  Não há limite para o número de notas.  Isso informa quantas anotações foram armazenadas.  Explore o projeto notebook1.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 12 Bibliotecas de classe  Coleções de classes úteis.  Não temos de escrever tudo do zero.  O Java chama suas bibliotecas de pacotes.  Agrupar objetos é um requisito recorrente.  O pacote java.util contém classes para fazer isso.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 13 import java.util.ArrayList; /** *... */ public class Notebook { // Armazena um número arbitrário de notas. private ArrayList notes; /** * Executa qualquer inicialização necessária para o * bloco de notas. */ public Notebook() { notes = new ArrayList (); }... }

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 14 Coleções  Especificamos:  o tipo de coleção: ArrayList  o tipo de objetos que ele conterá:.  Dizemos, “ArrayList de String”.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 15 Estruturas de objeto com coleções

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 16 Adicionando uma terceira nota

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 17 Recursos da coleção  Aumenta sua capacidade de acordo com a necessidade.  Mantém uma contagem (método de acesso size() ).  Mantém os objetos em ordem.  Os detalhes de como tudo isso é feito são ocultos.  Isso importa? Não saber como nos impedir de usá-lo?

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 18 Utilizando a coleção public class Notebook { private ArrayList notes;... public void storeNote(String note) { notes.add(note); } public int numberOfNotes() { return notes.size(); }... } Adicionando uma terceira nota Retornando o número de notas (delegação)

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 19 Numeração de índice

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 20 Recuperando um objeto Verificações de validade de índice Recupera e imprime a nota public void showNote(int noteNumber) { if(noteNumber < 0) { // Esse não é um número de nota válido. } else if(noteNumber < numberOfNotes()) { System.out.println(notes.get(noteNumber)); } else { // Esse não é um número de nota válido. }

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 21 A remoção pode afetar a numeração

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 22 Classes genéricas  Coleções são conhecidas como tipos parametrizados ou genéricos.  ArrayList implementa a funcionalidade de lista: – add, get, size, etc.  O parâmetro de tipo diz o que queremos de uma lista de: – ArrayList – etc.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 23 Interlúdio: Alguns erros populares...

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 24 /** * Imprime as informações do bloco de notas (número de entradas). */ public void showStatus() { if(notes.size() == 0); { System.out.println(“Notebook is empty”); } else { System.out.print(“Notebook holds “); System.out.println(notes.size() + “ notes); } } O que está errado aqui?

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 25 /** * Imprime as informações do bloco de notas (número de entradas). */ public void showStatus() { if(notes.size() == 0); { System.out.println(“Notebook is empty”); } else { System.out.print(“Notebook holds “); System.out.println(notes.size() + “ notes); } } Este é o mesmo de antes!

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 26 /** * Imprime as informações do bloco de notas (número de entradas). */ public void showStatus() { if(notes.size() == 0) ; { System.out.println(“Notebook is empty”); } else { System.out.print(“Notebook holds “); System.out.println(notes.size() + “ notes); } } Esse é o mesmo de antes novamente

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 27 /** * Imprime as informações do bloco de notas * (número de entradas). */ public void showStatus() { if(notes.size() == 0) { ; } { System.out.println(“Notebook is empty”); } else { System.out.print(“Notebook holds “); System.out.println(notes.size() + “ notes); } } e o mesmo novamente…

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 28 /** * Imprime as informações do bloco de notas * (número de entradas). */ public void showStatus() { if(isEmpty = true) { System.out.println(“Notebook is empty”); } else { System.out.print(“Notebook holds “); System.out.println(notes.size() + “ notes); } } Desta vez tenho um campo booleano chamado ‘isEmpty’... O que está errado aqui?

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 29 /** * Imprime as informações do bloco de notas (número de entradas). */ public void showStatus() { if(isEmpty == true) { System.out.println(“Notebook is empty”); } else { System.out.print(“Notebook holds “); System.out.println(notes.size() + “ notes); } } Dessa vez tenho um campo booleano chamado ‘isEmpty’... A versão correta

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 30 /** * Armazena uma nova nota no bloco de notas. Se o * bloco de notas estiver cheio, salva-o e inicia um novo. */ public void addNote(String note) { if(notes.size() == 100) notes.save(); // starting new notebook notes = new ArrayList (); notes.add(note); } O que está errado aqui?

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 31 /** * Armazena uma nova nota no bloco de notas. Se o * bloco de notas estiver cheio, salva-o e inicia um novo. */ public void addNote(String note) { if(notes.size == 100) notes.save(); // starting new notebook notes = new ArrayList (); notes.add(note); } Este é o mesmo

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 32 /** * Armazena uma nova nota no bloco de notas. Se o * bloco de notas estiver cheio, salva-o e inicia um novo. */ public void addNote(String note) { if(notes.size == 100) { notes.save(); // starting new notebook notes = new ArrayList (); } notes.add(note); } A versão correta

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 33 Agrupando objetos Coleções e o loop for-each

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 34 Iteração  Em geral, queremos realizar algumas ações em um número arbitrário de vezes.  Por exemplo, imprimir todas as notas do bloco de notas. Há quantas?  A maioria das linguagens de programação incluem instruções de loop para tornar isso possível.  O Java tem vários tipos de instrução de loop.  Começaremos com seu loop for-each.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 35 Princípios básicos da iteração  Em geral, queremos repetir algumas ações inúmeras vezes.  Loops fornecem uma forma de controlar quantas vezes repetimos essas ações.  Com coleções, muitas vezes queremos repetir coisas uma vez para cada objeto em uma coleção particular.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 36 Pseudocódigo do loop for-each for(ElementType element : collection) { loop body } Para cada elemento na coleção, faça as coisas no corpo do loop. cabeçalho loop palavra chave for instrução(ões) a ser(rem) repetida(s) Expressão de pseudocódigo de ações de um loop for-each Forma geral do loop for-each

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 37 Um exemplo do Java /** * Lista todas as notas no bloco de notas. */ public void listNotes() { for(String note : notes) { System.out.println(note); } para cada nota em notes, imprime a nota

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 38 Agrupando objetos O loop while

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 39 O loop while  Um loop for-each repete o corpo do loop para cada objeto em uma coleção.  Às vezes precisamos de mais variação do que esta.  Podemos usar uma condição booleana para decidir se continuamos ou não.  Um loop while fornece esse controle.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 40 Pseudocódigo do loop while while(loop condition) { loop body } enquanto desejamos continuar, fazemos as coisas no corpo do loop teste booleano palavra chave while Instrução(ões) a ser(em) repetida(s) Expressão de pseudocódigo de ações de um loop while Forma geral de um loop while

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 41 Um exemplo do Java Incrementa index por 1 /** * Lista todas as notas no bloco de notas. */ public void listNotes() { int index = 0; while(index < notes.size()) { System.out.println(notes.get(index)); index++; } enquanto o valor de index é menor do que o tamanho da coleção, imprime a próxima nota, e, então, incrementa index

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 42 for-each versus while  for-each:  fácil de escrever.  mais seguro: oferece a garantia de parar.  while:  não precisamos processar a coleção inteira.  não precisa nem mesmo ser usado com uma coleção.  cuidado: poderia entrar em um loop infinito.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 43 While sem uma coleção // Imprime todos os números pares de 0 a 30. int index = 0; while(index <= 30) { System.out.println(index); index = index + 2; }

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 44 Pesquisando uma coleção int index = 0; boolean found = false; while(index < notes.size() && !found) { String note = notes.get(index); if(note.contains(searchString)) { // Não precisamos continuar a busca. found = true; } else { index++; } // Se o encontrarmos, ou pesquisarmos a // coleção inteira.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 45 Agrupando objetos Iteradores

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 46 Nota extra: Igualdade de string if(input == "bye") {... } if(input.equals("bye")) {... } Strings devem ser sempre comparadas com.equals testa a identidade testa a igualdade

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 47 Identidade versus igualdade Outros objetos (não-String): person1 == person2 ? “Fred” :Person person1person2 “Jill” :Person

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 48 Identidade versus igualdade Outros objetos (não-String): person1 == person2 ? “Fred” :Person person1person2 “Fred” :Person

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 49 Identidade versus igualdade Outros objetos (não-String): person1 == person2 ? “Fred” :Person person1person2 “Fred” :Person

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 50 Identidade versus igualdade (Strings) "bye" :String entrada "bye" :String String input = reader.getInput(); if(input == "bye") {... } == ? à (pode ser) false! == testa a identidade

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 51 Identidade versus igualdade (Strings) "bye" :String entrada "bye" :String String input = reader.getInput(); if(input == "bye") {... } é igual a ? à true! equals testa a igualdade

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 52 Iteradores

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 53 :Element myList:List :Element :Iterator myList.iterator() :Element

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 54 :Element :Iterator hasNext()? ✔ next() Element e = iterator.next(); :Element :Iterator myList:List

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 55 :Element hasNext()? ✔ next() :Element :Iterator myList:List

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 56 :Element hasNext()? ✔ next() :Element :Iterator myList:List

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 57 :Element hasNext()? ✔ next() :Element :Iterator myList:List

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 58 :Element hasNext()? ✗ :Element :Iterator myList:List

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 59 Utilizando um objeto Iterator Iterator it = myCollection.iterator(); while(it.hasNext()) { call it.next() para obter o próximo objeto faz algo com esse objeto } java.util.Iterator retorna um objeto Iterator public void listNotes() { Iterator it = notes.iterator(); while(it.hasNext()) { System.out.println(it.next()); }

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 60 Índice versus iteradores  Maneiras de iterar em uma coleção:  loop for-each, loop. Usamos se queremos processar cada elemento.  loop while. Usamos se quisermos parar no meio do caminho. Usamos para repetição que não envolva uma coleção.  Objeto Iterator. Usamos se quisermos parar no meio do caminho. Muitas vezes usado com coleções onde um acesso indexado não é muito eficiente, ou é impossível.  Iteração é um importante padrão de programação.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 61 O projeto auction  O projeto auction fornece explicação adicional sobre as coleções e iteração.  Mais um ponto a ser discutido: o valor null.  Usado para indicar 'no object'.  Podemos testar se uma variável de objeto detém a variável null.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 62 Agrupando objetos Arrays

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 63 Coleções de tamanho fixo  Às vezes o tamanho máximo da coleção pode ser pré-determinado.  Linguagens de programação normalmente têm um tipo de coleção especial de tamanho fixo: um array.  Arrays Java podem armazenar objetos ou valores de tipo primitivo.  Arrays usam uma sintaxe especial.  Existem objetos array mas não uma classe array.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 64 O projeto weblog-analyzer  O servidor Web registra detalhes de cada acesso.  Suporta tarefas do webmaster.  Páginas mais populares.  Períodos mais ocupados.  Quantos dados estão sendo entregues.  Referências que não funcionam.  Analisa acessos por hora.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 65 Criando um objeto array public class LogAnalyzer { private int[] hourCounts; private LogfileReader reader; public LogAnalyzer() { hourCounts = new int[24]; reader = new LogfileReader(); }... } Criação de objeto array Instrução de variável de array

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 66 O array hourCounts

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 67 Utilizando um array  A notação entre colchetes é usada para acessar um elemento array: hourCounts[...]  Elementos são utilizados como variáveis comuns:  À esquerda de uma atribuição: hourCounts[hour] =...;  Em uma expressão: adjusted = hourCounts[hour] – 3; hourCounts[hour]++;

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 68 Uso de array padrão private int[] hourCounts; private String[] names;... hourCounts = new int[24];... hourcounts[i] = 0; hourcounts[i]++; System.out.println(hourcounts[i]); declaração criação uso

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 69 Literais de array private int[] numbers = { 3, 15, 4, 5 }; System.out.println(numbers[i]);  Os literais podem ser utilizados apenas em inicializações. declaração e inicialização

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 70 Comprimento do array private int[] numbers = { 3, 15, 4, 5 }; int n = numbers.length;  Nota: ‘comprimento’ não é um método. sem colchetes!

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 71 O loop for  Há duas variações do loop, for-each e for.  O loop for é muito usado para iterar um número fixo de vezes.  Muitas vezes usado com uma variável que muda uma quantidade fixa de cada iteração.

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 72 Pseudocódigo do loop for for(initialization; condition; post-body action) { statements to be repeated } Forma geral de um loop for Equivalente à forma de loop while initialization; while(condition) { statements to be repeated post-body action }

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 73 Um exemplo do Java for(int hour = 0; hour < hourCounts.length; hour++) { System.out.println(hour + ": " + hourCounts[hour]); } int hour = 0; while(hour < hourCounts.length) { System.out.println(hour + ": " + hourCounts[hour]); hour++; } para versão de loop versão do loop while

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 74 loop for com um passo maior // Imprime múltiplos de 3 que estão abaixo de 40. for(int num = 3; num < 40; num = num + 3) { System.out.println(num); }

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 75 Exercício  Considerando um array de números, imprima todos os números no array, usando um loop for. int[] numbers = { 4, 1, 22, 9, 14, 3, 9}; for...

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 76 Exercício 2  Preencha um array com a sequência de Fibonacci. int[] fib = new int[100]; fib[0] = 0; fib[1] = 1; for

Perguntas?