O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Aula 2 1
Aula 2 1
Carregando em…3
×

Confira estes a seguir

1 de 27 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Anúncio

Semelhante a Aula 2 2 (20)

Mais de Aparicio Junior (20)

Anúncio

Mais recentes (20)

Aula 2 2

  1. 1. Programação Orientada a Objetos Professor Eng. Ms. Will Roger Pereira 1
  2. 2. Objetivos da Aula  Estruturas de dados;  Arrays (Vetores);  Listas (ArrayList e LinkedList). 2
  3. 3. Estruturas de dados  Até o presente momento, em Java, sabemos armazenar somente uma unidade de informação por vez, em uma variável;  Em Java, uma variável possui tipo estático, podendo ser armazenada nela somente um dado de determinado tipo;  Esse tipo pode ser int, double, boolean, dentre outros, além de objetos de qualquer classe existente no Java ou criada pelo desenvolvedor. 3
  4. 4. Estruturas de dados  A variável não é nada além de uma referência para uma posição na memória do computador: 4 e1 teste c1 objeto true objeto objeto 2 3.1415 p1 x pi
  5. 5. Estruturas de dados  Variáveis permitirão o armazenamento somente de um dado;  Para armazenar mais dados, é necessário criar mais variáveis, o que gera um problema de controle nas referências;  Além disso, quando não se sabe exatamente a quantidade de dados a ser armazenada, o problema é ainda maior, e fica ainda mais inviável a utilização de variáveis. 5
  6. 6. Estruturas de dados  Neste caso, as estruturas de dados podem ajudar a armazenar mais dados, com todos possuindo uma única referência;  O que mudará de um dado para o outro será a sua posição dentro da estrutura;  Em Java, uma estrutura pode armazenar somente dados de um único tipo, pré-definido em sua criação;  Os tipos possíveis obedecem às mesmas regras dos tipos das variáveis. 6
  7. 7. Vetores (Arrays)  Vetores servem para armazenar uma quantidade fixa de valores de um determinado tipo;  Em Java, não é possível adicionar ou remover elementos de um vetor. Pode-se apenas substituir seus elementos;  Sua estrutura dentro da memória se dá de maneira sequencial;  Ex: Um vetor de números inteiros  {1, 2, 3, 4, 5}; 7 1 2 3 4 5 Começo
  8. 8. Criação de Vetores  Criação de um vetor não inicializado:  tipo[] refvetor = new tipo[tamanho];  *O vetor terá valores padrões dependendo do tipo.  Ex: int[] vetor = new int[5];  Criação de um vetor inicializado:  tipo[] refvetor = new tipo[]{ele1, ele2, ..., eleN};  *O vetor terá tamanho igual a quantidade de elementos colocados;  *Todos os valores deverão ser do mesmo tipo do vetor;  Ex: int[] vetor = new int[]{1,2,3,4,5}. 8
  9. 9. Manipulação dos elementos de um vetor  Obtendo o elemento armazenado em uma posição:  refvetor[pos];  *0 <= pos < tamanho do vetor;  Ex: vetor[3]  4.  Mudando o elemento armazenado em uma posição:  refvetor[pos] = valor;  *0 <= pos < tamanho do vetor;  *valor deve ser do mesmo tipo do vetor;  Ex: vetor[3] = 10  {1, 2, 3, 10, 5}; 9
  10. 10. Mostrando um vetor na tela  Para mostrar um vetor na tela, proceda da seguinte maneira: 1. Importe a biblioteca java.util.Arrays; 2. Digite: System.out.println(Arrays.toString(REF. VETOR));  Se o elemento do vetor for um objeto, Arrays.toString invocará o método toString do objeto. 10
  11. 11. Vetores de objetos de uma classe  Para criar objetos e utilizá-los na estrutura de um vetor, foi criada uma classe chamada Cachorro e seu método toString(): 11
  12. 12. Vetores de objetos de uma classe  Quando um vetor de objetos for criado, de maneira não inicializada, todas as posições vão conter o valor nulo; 12
  13. 13. Vetores de objetos de uma classe  Assim sendo, substitua as posições com os objetos armazenados, sempre começando pelo índice 0. Basta verificar qual posição é nula para adicionar;  Adicionando 4 objetos no array: 13
  14. 14. Vetores de objetos de uma classe  Para remover um objeto de uma posição, pegue todos os objetos à direita dele e desloque uma posição para a esquerda, partindo da posição removida.  A última posição a possuir um objeto deverá ser modificado para nulo;  Porém, se o vetor estiver cheio, a condição acima não será satisfeita. Assim sendo, veja se a repetição chegou ao final. Se chegou, desloque o último objeto e coloque a última posição como nulo. 14
  15. 15. Vetores de objetos de uma classe 15
  16. 16. Vetores de objetos de uma classe  Resultado da remoção do elemento no índice 1:  É de responsabilidade do desenvolvedor o gerenciamento da estrutura de arrays;  Com estas operações já é possível garantir a integridade da estrutura. 16
  17. 17. Listas (LinkedList e ArrayList)  Diferente dos vetores, listas servem para armazenar uma quantidade variável de valores de um tipo;  É possível adicionar ou remover elementos de uma lista, bem como substituir o elemento de determinada posição;  Sua estrutura dentro da memória é gerenciada através de ponteiros, não necessitando de ser sequencial;  Ex: Uma lista de números inteiros  (1, 2, 3, 4, 5); 17 4 5 1 3 2 Começo
  18. 18. Listas (LinkedList e ArrayList)  Em Java, uma lista pode ser implementada via LinkedList ou ArrayList;  Estas vias possuem suas particularidades quanto a custo de memória, implementação e custo para as operações, porém são criadas de maneira semelhante e manipuladas de maneira idêntica;  Será demonstrada apenas a LinkedList, porém, caso queira implementar uma ArrayList, basta somente substituir os nomes das classes na criação. Os métodos mostrados aqui são iguais para ambas implementações. 18
  19. 19. Importando classe LinkedList  Para utilizar LinkedList, a primeira coisa a fazer é importar a classe no começo do arquivo Java:  Isto deve ser feito em qualquer arquivo que listas forem manipuladas. 19
  20. 20. Criação de uma LinkedList  Sintaxe:  LinkedList<tipo> reflista = new LinkedList<tipo>();  *tipo definirá qual tipo de dado poderá ser armazenado na LinkedList  Tipos primitivos não podem ser usados;  *Os tipos devem ser iguais: Da referência e da LinkedList criada;  A primeira posição possui índice 0. 20
  21. 21. Tipos da LinkedList  Como uma LinkedList não pode conter tipos primitivos, somente classes podem ser especificados como tipos;  Porém, os tipos primitivos também possuem classes correspondentes:  int  Integer;  double  Double;  boolean  Boolean. 21
  22. 22. Mostrando a LinkedList na tela  Para mostrar uma LinkedList na tela, proceda como se fosse um objeto normal:  A LinkedList já possui sua implementação de toString;  Integer, Double e Boolean já possuem a implementação correta do método toString;  Os objetos presentes na LinkedList terão seus métodos toString invocados. Portanto, sempre contrua-o. 22
  23. 23. Adicionando elementos em uma LinkedList  Para adicionar um elemento ao final da LinkedList:  reflista.add(elemento);  Ex: alunos.add(“João”);  [“João”];  Ex: alunos.add(“Ana”);  [“João”, “Ana”];  Ex: alunos.add(“João”);  [“João”, “Ana”, “João”];  Para adicionar um elemento em uma posição específica:  reflista.add(pos, elemento);  *0 <= pos <= tamanho da lista.  Ex: alunos.add(1, “Juca”);  [“João”, “Juca”, “Ana”, “João”];  O elemento será inserido e todos os elementos posteriores serão deslocados para direita. 23
  24. 24. Obtendo o tamanho de uma LinkedList  Para saber o tamanho de uma LinkedList:  reflista.size();  Ex: alunos.size();  4;  Use o tamanho para controlar a LinkedList, e impedir que posições inválidas sejam inseridas no sistema;  Muito importante para verificar se determinada posição possui um elemento para ser recuperado ou removido, ou se é possível adicionar um elemento lá. 24
  25. 25. Recuperando elementos de uma LinkedList  Para recuperar um elemento de uma posição da LinkedList:  reflista.get(pos);  *0 <= pos < tamanho da lista.  Ex: alunos.get(1);  “Juca”;  Ex: alunos.get(2);  “Ana”; 25
  26. 26. Removendo elementos de uma LinkedList  Para remover um elemento de uma LinkedList por posição:  reflista.remove(pos);  *0 <= pos < tamanho da lista.  Ex: alunos.remove(2);  [“João”, “Juca”, “João”];  Para remover um elemento de uma LinkedList por elemento:  reflista.remove(elemento);  *Remove somente a primeira instância encontrada do elemento;  Ex: alunos.remove(“João”);  [“Juca”, “João”];  *Retorna true ou false se removeu ou não o elemento respectivamente  Pode ser usado em verificações. 26
  27. 27. Estude e pratique este conteúdo, uma vez que estruturas de dados são peças chave nos relacionamentos interclasse. 27

×