SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Fundamentos da Linguagem Java




           Vetores em Java
        Implementação de Estruturas de
                   Dados


            Ludimila Monjardim Casagrande
                        2012
Vetor

     Um vetor é uma lista implementada usando um
        array.
     O que são listas?
           Lista é uma estrutura de dados que, por
            definição, permite objetos duplicados e é
            ordenada.
     Uma estrutura de dados deve definir:
           A maneira como o dado será armazenado;
           A interface ou operações disponíveis para uso.

Vetores em Java          ©2012 Ludimila Monjardim Casagrande   2
Vetor

     Um array é uma porção de memória fixa e
        sequencial dividida em pedaços idênticos
        indexados a partir de 0.
     A capacidade de um array é fixa e deve ser
        informada no momento da criação do array.




Vetores em Java       ©2012 Ludimila Monjardim Casagrande   3
Vetor de Objetos

     Em cada posição do array (ou vetor), podemos
        guardar um objeto. Na verdade, cada posição
        pode guardar uma referência para um objeto.



                                                            Exemplo:
                                                            Array, vetor
                                                            ou lista de
                                                            Alunos.




Vetores em Java       ©2012 Ludimila Monjardim Casagrande                  4
O que vamos implementar?

     Vamos implementar um vetor para a listagem de
        Alunos.
     Para isso, precisamos primeiro implementar a
        classe Aluno.
     Em seguida, precisamos definir a interface da
        lista, isto é, as operações públicas disponíveis
        para a manipulação de dados nessa estrutura.




Vetores em Java         ©2012 Ludimila Monjardim Casagrande   5
Classe Aluno
  package poo.modelo;                                        @Override
  public class Aluno {                                       public String toString() {
       private int matricula;                                     return "Aluno [matricula=" + matricula + ", nome=" + nome + "]";
       private String nome;                                  }

       public Aluno(int matricula, String nome) {            @Override

             this.nome = nome;                               public boolean equals(Object obj) {

             this.matricula = matricula;                          if (this == obj) {

       }                                                                return true;
                                                                  }
       public int getMatricula() {
                                                                  if (obj == null) {
             return matricula;
                                                                        return false;
       }                                                          }
       public void setMatricula(int matricula) {                  if (!(obj instanceof Aluno)) {
             this.matricula = matricula;                                return false;
       }                                                          }
       public String getNome() {                                  Aluno a = (Aluno) obj;
             return nome;                                         if (matricula != a.matricula) {
       }                                                                return false;
                                                                  }
       public void setNome(String nome) {
                                                                  return true;
                                                                                                     Obs.: Incluir o
             this.nome = nome;                               }                                       construtor default.
       }                                                }

Vetores em Java                                ©2012 Ludimila Monjardim Casagrande                                               6
Operações da Lista

     Vamos implementar as seguintes operações:
           Adicionar um dado objeto no fim da lista;
           Adicionar um dado objeto em uma dada posição;
           Recuperar o objeto de uma dada posição;
           Remover o objeto de uma dada posição;
           Verificar se um dado objeto está contido na lista;
           Obter a quantidade de objetos (elementos) da
            lista.
           Imprimir a lista (implementar o método toString()).

Vetores em Java           ©2012 Ludimila Monjardim Casagrande     7
Estrutura da Classe Vetor
  package poo.estruturas;                                        public Aluno recupera(int posicao) {
  import poo.modelo.Aluno;                                            // TODO implementação
  public class Vetor {                                                return null;
       /** Declaração e inicialização de um array de             }
       * objetos do tipo Aluno
                                                                 public void remove(int posicao) {
       * com capacidade para 100 objetos. */
                                                                      // TODO implementação
       private Aluno[] alunos = new Aluno[100];
                                                                 }
                                                                 public boolean contem(Aluno aluno) {
       /** Numero atual de elementos do array. */
                                                                      // TODO implementação
       private int totalDeElementos;
                                                                      return false;
                                                                 }
       public void adiciona(Aluno aluno) {
                                                                 public int obtemTotalDeElementos() {
            // TODO implementação
                                                                      // TODO implementação
       }
                                                                      return 0;
       public void adiciona(int posicao, Aluno aluno) {
                                                                 }
            // TODO implementação
                                                             }
                                                                                     Obs.: Incluir também o
       }                                                                             método toString().

Vetores em Java                         ©2012 Ludimila Monjardim Casagrande                                   8
Considerações sobre o Vetor

     Considere que os elementos do vetor devam estar
        estão todos compactados à esquerda, isto é, não
        existem posições vazias entre as posições ocupadas.




Vetores em Java        ©2012 Ludimila Monjardim Casagrande    9
Classes para Teste
    package poo.testes;
    import poo.modelo.Aluno;
    import poo.estruturas.Vetor;

    public class TesteAdicionaNoFim {
         public static void main(String[] args) {
             Aluno a1 = new Aluno(100, "José");
             Aluno a2 = new Aluno(200, "João");
             Vetor lista = new Vetor();
             lista.adiciona(a1);
             lista.adiciona(a2);
             System.out.println(lista);                   Saída esperada:
         }                                                [Aluno [matricula=100, nome=José],
    }                                                     Aluno [matricula=200, nome=João]]


Vetores em Java                      ©2012 Ludimila Monjardim Casagrande                       10
Classes para Teste
    package poo.testes;
    import poo.modelo.Aluno;
    import poo.estruturas.Vetor;
    public class TesteAdicionaPorPosicao {
         public static void main(String[] args) {
             Aluno a1 = new Aluno(101, "Rafael");
             Aluno a2 = new Aluno(201, "Paulo");
             Aluno a3 = new Aluno(301, "Ana");
             Vetor lista = new Vetor();
             lista.adiciona(a1);
             lista.adiciona(0, a2);
             lista.adiciona(1, a3);                        Saída esperada:
             System.out.println(lista);                    [Aluno [matricula=201, nome=Paulo],
         }                                                 Aluno [matricula=301, nome=Ana],
    }                                                      Aluno [matricula=101, nome=Rafael]]

Vetores em Java                       ©2012 Ludimila Monjardim Casagrande                        11
Classes para Teste
  package poo.testes;
  import poo.modelo.Aluno;
  import poo.estruturas.Vetor;
  public class TesteRecuperaPorPosicao {
       public static void main(String[] args) {
            Aluno a1 = new Aluno(101, "Rafael");
            Aluno a2 = new Aluno(201, "Paulo");
            Vetor lista = new Vetor();
            lista.adiciona(a1);
            lista.adiciona(a2);
            Aluno aluno1 = lista.recupera(0);
            Aluno aluno2 = lista.recupera(1);
                                                          Saída esperada:
            System.out.println(aluno1);                   Aluno [matricula=101, nome=Rafael]
            System.out.println(aluno2);                   Aluno [matricula=201, nome=Paulo]
       }
  }
Vetores em Java                      ©2012 Ludimila Monjardim Casagrande                       12
Classes para Teste
   package poo.testes;
   import poo.modelo.Aluno;
   import poo.estruturas.Vetor;
   public class TesteRemovePorPosicao {
        public static void main(String[] args) {
             Aluno a1 = new Aluno(101, "Rafael");
             Aluno a2 = new Aluno(201, "Paulo");
             Vetor lista = new Vetor();
             lista.adiciona(a1);
             lista.adiciona(a2);
             lista.remove(0);
             System.out.println(lista);                    Saída esperada:
        }                                                  Aluno [matricula=201, nome=Paulo]
   }


Vetores em Java                       ©2012 Ludimila Monjardim Casagrande                      13
Classes para Teste
   package poo.testes;
   import poo.modelo.Aluno;
   import poo.estruturas.Vetor;
   public class TesteContemAluno {
        public static void main(String[] args) {
             Aluno a1 = new Aluno(101, "Rafael");
             Aluno a2 = new Aluno(201, "Paulo");
             Vetor lista = new Vetor();
             lista.adiciona(a1);
             lista.adiciona(a2);
             System.out.println(lista.contem(a1));
                                                                           Saída esperada:
             System.out.println(lista.contem(a2));                         true
             Aluno a3 = new Aluno(301, "Ana");                             true
             System.out.println(lista.contem(a3));                         false
        }
   }
Vetores em Java                      ©2012 Ludimila Monjardim Casagrande                     14
Classes para Teste
   package poo.testes;
   import poo.modelo.Aluno;
   import poo.estruturas.Vetor;
   public class TesteRecuperaTamanhoDaLista {
        public static void main(String[] args) {
             Aluno a1 = new Aluno(101, "Rafael");
             Aluno a2 = new Aluno(201, "Paulo");
             Aluno a3 = new Aluno();
             Vetor lista = new Vetor();
             lista.adiciona(a1);
             lista.adiciona(a2);
                                                                           Saída esperada:
             System.out.println(lista.obtemTotalDeElementos());            2
             lista.adiciona(a3);                                           3
             System.out.println(lista.obtemTotalDeElementos());
        }
   }
Vetores em Java                      ©2012 Ludimila Monjardim Casagrande                     15
Método: adiciona(Aluno aluno)




Possível
implementação:




Vetores em Java   ©2012 Ludimila Monjardim Casagrande   16
Método: adiciona(Aluno aluno)

     Problema da implementação anterior:
           O consumo de tempo do
            método piora proporcional-
            mente na medida em que
            o número de elementos
            que existem no vetor
            aumenta, o que representa
            um consumo linear de tempo.




Vetores em Java          ©2012 Ludimila Monjardim Casagrande   17
Complexidade de Algoritmos

     Consumo Linear x Consumo Constante:
           Consumo
            (ou complexidade) linear:
            proporcional ao número
            de elementos do vetor.
            Indicado por: O(n).
           Consumo (ou complexidade)
            constante: não varia em
            função do número de
            elementos do vetor.
            Indicado por: O(1).
                                                      Consumo Linear x Consumo Constante

Vetores em Java           ©2012 Ludimila Monjardim Casagrande                          18
Método: adiciona(Aluno aluno)

                                                              Implementação alternativa
                                                              com consumo (complexidade)
                                                              constante:




 Quantidade de elementos = Índice da
 primeira posição vazia




                                                  Implementação parcial. Ainda falta
                                                  verificar se o vetor está cheio, isto é,
                                                  se totalDeAlunos < alunos.length.

Vetores em Java                ©2012 Ludimila Monjardim Casagrande                           19
Método: adiciona(int posicao, Aluno aluno)




     Verifique se o vetor está cheio.
     Verifique se a posição desejada é válida. As posições válidas são
      as posições ocupadas e a primeira posição desocupada
      (=totalDeAlunos). Além disso, a posição desejada deve ser menor
      do que o tamanho do vetor.
     Se a posição desejada for a última posição válida, apenas adicione
      o elemento nesta posição.

Vetores em Java             ©2012 Ludimila Monjardim Casagrande            20
Método: adiciona(int posicao, Aluno aluno)




     Se a posição desejada for uma posição ocupada, desloque os
        elementos para a direita até desocupar a posição desejada. Por fim,
        adicione o elemento nesta posição e incremente o total de alunos.



Vetores em Java              ©2012 Ludimila Monjardim Casagrande              21
Método: recupera(int posicao)




     A dica em relação a esse método é primeiro verificar se a posição
      desejada é uma posição ocupada, isto é, se a posição pertence ao
      intervalo de 0 a totalDeAlunos - 1.
     Se sim, basta recuperar o objeto desta posição.




Vetores em Java             ©2012 Ludimila Monjardim Casagrande           22
Método: remove(int posicao)




     Verifique se a posição desejada é uma posição ocupada.
     Se for, remova o objeto alterando o valor da posição para null.
     Em seguida, desloque os objetos à direita do objeto removido uma
      posição para a esquerda, caso eles existam.
     Decremente o número total de alunos.

Vetores em Java            ©2012 Ludimila Monjardim Casagrande           23
Método: contem(Aluno aluno)




     Nesta operação, precisamos comparar o aluno dado com todos os
        alunos existentes no vetor.
     Para isso implemente um laço e compare os objetos usando o
        método equals.


Vetores em Java              ©2012 Ludimila Monjardim Casagrande      24
Caixas de Diálogo

     Você pode exibir mensagens de erro ou
        informativas para o usuário usando uma caixa
        de diálogo da seguinte forma:




Vetores em Java       ©2012 Ludimila Monjardim Casagrande   25
Referências

     CS-14: Algoritmos e Estruturas de Dados em Java.
        Caelum: Ensino e Inovação.
        http://www.caelum.com.br/curso/cs-14-algoritmos-estruturas-dados-
        java/

     Capítulo 4 – Arrays.
        Orientação a Objetos em Java.
        K19 Treinamentos.
        http://www.k19.com.br/downloads/apostilas-java.

     Capítulo 16 – Collections framework.
        Caelum: Ensino e Inovação.
        http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/


Vetores em Java              ©2012 Ludimila Monjardim Casagrande            26

Mais conteúdo relacionado

Mais procurados

Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
Pacc UAB
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
Armando Daniel
 

Mais procurados (20)

Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Aula 3 algoritmos
Aula 3   algoritmosAula 3   algoritmos
Aula 3 algoritmos
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs Java
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
O que é um Banco de Dados Relacional?
O que é um Banco de Dados Relacional?O que é um Banco de Dados Relacional?
O que é um Banco de Dados Relacional?
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Algoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introduçãoAlgoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introdução
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Exercicios resolvidos algoritmos
Exercicios resolvidos algoritmosExercicios resolvidos algoritmos
Exercicios resolvidos algoritmos
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Tratamento de erros
Tratamento de errosTratamento de erros
Tratamento de erros
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 

Destaque

Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
Charles Jungbeck
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
PeslPinguim
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
PeslPinguim
 
Estrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesEstrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e Funções
Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Adriano Teixeira de Souza
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizes
Armando Daniel
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Adriano Teixeira de Souza
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
Ludimila Monjardim Casagrande
 
Revolução americana
Revolução americanaRevolução americana
Revolução americana
bolonas
 

Destaque (20)

Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
POO - Aula 05 - Referências e Vetores
POO - Aula 05 - Referências e VetoresPOO - Aula 05 - Referências e Vetores
POO - Aula 05 - Referências e Vetores
 
Vetores e matrizes
Vetores e matrizesVetores e matrizes
Vetores e matrizes
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
JAVA - Vetores
JAVA - VetoresJAVA - Vetores
JAVA - Vetores
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Trabalho vetores
Trabalho vetoresTrabalho vetores
Trabalho vetores
 
JAVA - Matrizes
JAVA - MatrizesJAVA - Matrizes
JAVA - Matrizes
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
Estrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesEstrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e Funções
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizes
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 
Revolução americana
Revolução americanaRevolução americana
Revolução americana
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 

Semelhante a POO - 14 - Vetores

Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
Carlos Melo
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
elliando dias
 

Semelhante a POO - 14 - Vetores (20)

POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IV
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Aula5
Aula5Aula5
Aula5
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
04 modelagem classes
04 modelagem classes04 modelagem classes
04 modelagem classes
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Java
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
Exemplo de Sobrecarga.pdf
Exemplo de Sobrecarga.pdfExemplo de Sobrecarga.pdf
Exemplo de Sobrecarga.pdf
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
 
Lp3
Lp3Lp3
Lp3
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 

Mais de Ludimila Monjardim Casagrande

Mais de Ludimila Monjardim Casagrande (17)

Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
POO - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de EncapsulamentoPOO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
POO - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 

Último

Último (8)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfAula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
Convergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoConvergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor Sucroenergético
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 

POO - 14 - Vetores

  • 1. Fundamentos da Linguagem Java Vetores em Java Implementação de Estruturas de Dados Ludimila Monjardim Casagrande 2012
  • 2. Vetor  Um vetor é uma lista implementada usando um array.  O que são listas?  Lista é uma estrutura de dados que, por definição, permite objetos duplicados e é ordenada.  Uma estrutura de dados deve definir:  A maneira como o dado será armazenado;  A interface ou operações disponíveis para uso. Vetores em Java ©2012 Ludimila Monjardim Casagrande 2
  • 3. Vetor  Um array é uma porção de memória fixa e sequencial dividida em pedaços idênticos indexados a partir de 0.  A capacidade de um array é fixa e deve ser informada no momento da criação do array. Vetores em Java ©2012 Ludimila Monjardim Casagrande 3
  • 4. Vetor de Objetos  Em cada posição do array (ou vetor), podemos guardar um objeto. Na verdade, cada posição pode guardar uma referência para um objeto. Exemplo: Array, vetor ou lista de Alunos. Vetores em Java ©2012 Ludimila Monjardim Casagrande 4
  • 5. O que vamos implementar?  Vamos implementar um vetor para a listagem de Alunos.  Para isso, precisamos primeiro implementar a classe Aluno.  Em seguida, precisamos definir a interface da lista, isto é, as operações públicas disponíveis para a manipulação de dados nessa estrutura. Vetores em Java ©2012 Ludimila Monjardim Casagrande 5
  • 6. Classe Aluno package poo.modelo; @Override public class Aluno { public String toString() { private int matricula; return "Aluno [matricula=" + matricula + ", nome=" + nome + "]"; private String nome; } public Aluno(int matricula, String nome) { @Override this.nome = nome; public boolean equals(Object obj) { this.matricula = matricula; if (this == obj) { } return true; } public int getMatricula() { if (obj == null) { return matricula; return false; } } public void setMatricula(int matricula) { if (!(obj instanceof Aluno)) { this.matricula = matricula; return false; } } public String getNome() { Aluno a = (Aluno) obj; return nome; if (matricula != a.matricula) { } return false; } public void setNome(String nome) { return true; Obs.: Incluir o this.nome = nome; } construtor default. } } Vetores em Java ©2012 Ludimila Monjardim Casagrande 6
  • 7. Operações da Lista  Vamos implementar as seguintes operações:  Adicionar um dado objeto no fim da lista;  Adicionar um dado objeto em uma dada posição;  Recuperar o objeto de uma dada posição;  Remover o objeto de uma dada posição;  Verificar se um dado objeto está contido na lista;  Obter a quantidade de objetos (elementos) da lista.  Imprimir a lista (implementar o método toString()). Vetores em Java ©2012 Ludimila Monjardim Casagrande 7
  • 8. Estrutura da Classe Vetor package poo.estruturas; public Aluno recupera(int posicao) { import poo.modelo.Aluno; // TODO implementação public class Vetor { return null; /** Declaração e inicialização de um array de } * objetos do tipo Aluno public void remove(int posicao) { * com capacidade para 100 objetos. */ // TODO implementação private Aluno[] alunos = new Aluno[100]; } public boolean contem(Aluno aluno) { /** Numero atual de elementos do array. */ // TODO implementação private int totalDeElementos; return false; } public void adiciona(Aluno aluno) { public int obtemTotalDeElementos() { // TODO implementação // TODO implementação } return 0; public void adiciona(int posicao, Aluno aluno) { } // TODO implementação } Obs.: Incluir também o } método toString(). Vetores em Java ©2012 Ludimila Monjardim Casagrande 8
  • 9. Considerações sobre o Vetor  Considere que os elementos do vetor devam estar estão todos compactados à esquerda, isto é, não existem posições vazias entre as posições ocupadas. Vetores em Java ©2012 Ludimila Monjardim Casagrande 9
  • 10. Classes para Teste package poo.testes; import poo.modelo.Aluno; import poo.estruturas.Vetor; public class TesteAdicionaNoFim { public static void main(String[] args) { Aluno a1 = new Aluno(100, "José"); Aluno a2 = new Aluno(200, "João"); Vetor lista = new Vetor(); lista.adiciona(a1); lista.adiciona(a2); System.out.println(lista); Saída esperada: } [Aluno [matricula=100, nome=José], } Aluno [matricula=200, nome=João]] Vetores em Java ©2012 Ludimila Monjardim Casagrande 10
  • 11. Classes para Teste package poo.testes; import poo.modelo.Aluno; import poo.estruturas.Vetor; public class TesteAdicionaPorPosicao { public static void main(String[] args) { Aluno a1 = new Aluno(101, "Rafael"); Aluno a2 = new Aluno(201, "Paulo"); Aluno a3 = new Aluno(301, "Ana"); Vetor lista = new Vetor(); lista.adiciona(a1); lista.adiciona(0, a2); lista.adiciona(1, a3); Saída esperada: System.out.println(lista); [Aluno [matricula=201, nome=Paulo], } Aluno [matricula=301, nome=Ana], } Aluno [matricula=101, nome=Rafael]] Vetores em Java ©2012 Ludimila Monjardim Casagrande 11
  • 12. Classes para Teste package poo.testes; import poo.modelo.Aluno; import poo.estruturas.Vetor; public class TesteRecuperaPorPosicao { public static void main(String[] args) { Aluno a1 = new Aluno(101, "Rafael"); Aluno a2 = new Aluno(201, "Paulo"); Vetor lista = new Vetor(); lista.adiciona(a1); lista.adiciona(a2); Aluno aluno1 = lista.recupera(0); Aluno aluno2 = lista.recupera(1); Saída esperada: System.out.println(aluno1); Aluno [matricula=101, nome=Rafael] System.out.println(aluno2); Aluno [matricula=201, nome=Paulo] } } Vetores em Java ©2012 Ludimila Monjardim Casagrande 12
  • 13. Classes para Teste package poo.testes; import poo.modelo.Aluno; import poo.estruturas.Vetor; public class TesteRemovePorPosicao { public static void main(String[] args) { Aluno a1 = new Aluno(101, "Rafael"); Aluno a2 = new Aluno(201, "Paulo"); Vetor lista = new Vetor(); lista.adiciona(a1); lista.adiciona(a2); lista.remove(0); System.out.println(lista); Saída esperada: } Aluno [matricula=201, nome=Paulo] } Vetores em Java ©2012 Ludimila Monjardim Casagrande 13
  • 14. Classes para Teste package poo.testes; import poo.modelo.Aluno; import poo.estruturas.Vetor; public class TesteContemAluno { public static void main(String[] args) { Aluno a1 = new Aluno(101, "Rafael"); Aluno a2 = new Aluno(201, "Paulo"); Vetor lista = new Vetor(); lista.adiciona(a1); lista.adiciona(a2); System.out.println(lista.contem(a1)); Saída esperada: System.out.println(lista.contem(a2)); true Aluno a3 = new Aluno(301, "Ana"); true System.out.println(lista.contem(a3)); false } } Vetores em Java ©2012 Ludimila Monjardim Casagrande 14
  • 15. Classes para Teste package poo.testes; import poo.modelo.Aluno; import poo.estruturas.Vetor; public class TesteRecuperaTamanhoDaLista { public static void main(String[] args) { Aluno a1 = new Aluno(101, "Rafael"); Aluno a2 = new Aluno(201, "Paulo"); Aluno a3 = new Aluno(); Vetor lista = new Vetor(); lista.adiciona(a1); lista.adiciona(a2); Saída esperada: System.out.println(lista.obtemTotalDeElementos()); 2 lista.adiciona(a3); 3 System.out.println(lista.obtemTotalDeElementos()); } } Vetores em Java ©2012 Ludimila Monjardim Casagrande 15
  • 16. Método: adiciona(Aluno aluno) Possível implementação: Vetores em Java ©2012 Ludimila Monjardim Casagrande 16
  • 17. Método: adiciona(Aluno aluno)  Problema da implementação anterior:  O consumo de tempo do método piora proporcional- mente na medida em que o número de elementos que existem no vetor aumenta, o que representa um consumo linear de tempo. Vetores em Java ©2012 Ludimila Monjardim Casagrande 17
  • 18. Complexidade de Algoritmos  Consumo Linear x Consumo Constante:  Consumo (ou complexidade) linear: proporcional ao número de elementos do vetor. Indicado por: O(n).  Consumo (ou complexidade) constante: não varia em função do número de elementos do vetor. Indicado por: O(1). Consumo Linear x Consumo Constante Vetores em Java ©2012 Ludimila Monjardim Casagrande 18
  • 19. Método: adiciona(Aluno aluno) Implementação alternativa com consumo (complexidade) constante: Quantidade de elementos = Índice da primeira posição vazia Implementação parcial. Ainda falta verificar se o vetor está cheio, isto é, se totalDeAlunos < alunos.length. Vetores em Java ©2012 Ludimila Monjardim Casagrande 19
  • 20. Método: adiciona(int posicao, Aluno aluno)  Verifique se o vetor está cheio.  Verifique se a posição desejada é válida. As posições válidas são as posições ocupadas e a primeira posição desocupada (=totalDeAlunos). Além disso, a posição desejada deve ser menor do que o tamanho do vetor.  Se a posição desejada for a última posição válida, apenas adicione o elemento nesta posição. Vetores em Java ©2012 Ludimila Monjardim Casagrande 20
  • 21. Método: adiciona(int posicao, Aluno aluno)  Se a posição desejada for uma posição ocupada, desloque os elementos para a direita até desocupar a posição desejada. Por fim, adicione o elemento nesta posição e incremente o total de alunos. Vetores em Java ©2012 Ludimila Monjardim Casagrande 21
  • 22. Método: recupera(int posicao)  A dica em relação a esse método é primeiro verificar se a posição desejada é uma posição ocupada, isto é, se a posição pertence ao intervalo de 0 a totalDeAlunos - 1.  Se sim, basta recuperar o objeto desta posição. Vetores em Java ©2012 Ludimila Monjardim Casagrande 22
  • 23. Método: remove(int posicao)  Verifique se a posição desejada é uma posição ocupada.  Se for, remova o objeto alterando o valor da posição para null.  Em seguida, desloque os objetos à direita do objeto removido uma posição para a esquerda, caso eles existam.  Decremente o número total de alunos. Vetores em Java ©2012 Ludimila Monjardim Casagrande 23
  • 24. Método: contem(Aluno aluno)  Nesta operação, precisamos comparar o aluno dado com todos os alunos existentes no vetor.  Para isso implemente um laço e compare os objetos usando o método equals. Vetores em Java ©2012 Ludimila Monjardim Casagrande 24
  • 25. Caixas de Diálogo  Você pode exibir mensagens de erro ou informativas para o usuário usando uma caixa de diálogo da seguinte forma: Vetores em Java ©2012 Ludimila Monjardim Casagrande 25
  • 26. Referências  CS-14: Algoritmos e Estruturas de Dados em Java. Caelum: Ensino e Inovação. http://www.caelum.com.br/curso/cs-14-algoritmos-estruturas-dados- java/  Capítulo 4 – Arrays. Orientação a Objetos em Java. K19 Treinamentos. http://www.k19.com.br/downloads/apostilas-java.  Capítulo 16 – Collections framework. Caelum: Ensino e Inovação. http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/ Vetores em Java ©2012 Ludimila Monjardim Casagrande 26