Programação Orientada a
Objetos
Professor Eng. Ms. Will Roger Pereira
1
Objetivos da Aula
 Estruturas de dados;
 Arrays (Vetores);
 Listas (ArrayList e LinkedList).
2
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
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
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
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
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
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
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
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
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
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
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
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
Vetores de objetos de uma classe
15
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
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
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
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
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
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
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
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
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
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
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
Estude e pratique este
conteúdo, uma vez que
estruturas de dados são peças
chave nos relacionamentos
interclasse.
27

Aula 2 2

  • 1.
    Programação Orientada a Objetos ProfessorEng. Ms. Will Roger Pereira 1
  • 2.
    Objetivos da Aula Estruturas de dados;  Arrays (Vetores);  Listas (ArrayList e LinkedList). 2
  • 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.
    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.
    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.
    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.
    Vetores (Arrays)  Vetoresservem 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.
    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.
    Manipulação dos elementosde 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.
    Mostrando um vetorna 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.
    Vetores de objetosde 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.
    Vetores de objetosde 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.
    Vetores de objetosde 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.
    Vetores de objetosde 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.
    Vetores de objetosde uma classe 15
  • 16.
    Vetores de objetosde 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.
    Listas (LinkedList eArrayList)  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.
    Listas (LinkedList eArrayList)  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.
    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.
    Criação de umaLinkedList  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.
    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.
    Mostrando a LinkedListna 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.
    Adicionando elementos emuma 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.
    Obtendo o tamanhode 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.
    Recuperando elementos deuma 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.
    Removendo elementos deuma 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.
    Estude e pratiqueeste conteúdo, uma vez que estruturas de dados são peças chave nos relacionamentos interclasse. 27