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

Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Leinylson Fontinele
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandã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 ArraysLoiane Groner
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5César Augusto Pessôa
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Elaine Cecília Gatto
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aislan Rafael
 
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 controleProfessor Samuel Ribeiro
 

Mais procurados (20)

Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 
Introdução a python
Introdução a pythonIntrodução a python
Introdução a python
 
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
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Arrays em java
Arrays em javaArrays em java
Arrays em java
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
POO - Aula 1
POO - Aula 1POO - Aula 1
POO - Aula 1
 
Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetiçã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
 

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 JavaCharles Jungbeck
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
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 VetoresFelipe J. R. Vieira
 
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 3PeslPinguim
 
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 7PeslPinguim
 
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...Manuel Menezes de Sequeira
 
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çõesAdriano 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 matrizesArmando Daniel
 
Revolução americana
Revolução americanaRevolução americana
Revolução americanabolonas
 
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 ObjetosLudimila Monjardim Casagrande
 
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...Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasBreno Vitorino
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 

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
 
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...
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
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
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 

Semelhante a Implementação de vetores em Java

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 pacoteManuel Menezes de Sequeira
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
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 classesCarlos Melo
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003elliando dias
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IVGabriel Faustino
 
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, ScannerManuel Menezes de Sequeira
 
04 modelagem classes
04 modelagem classes04 modelagem classes
04 modelagem classesjosejunior89
 
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 Javadanrleywillian1
 
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 ...Manuel Menezes de Sequeira
 
Exemplo de Sobrecarga.pdf
Exemplo de Sobrecarga.pdfExemplo de Sobrecarga.pdf
Exemplo de Sobrecarga.pdfJoberthSilva
 
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 JavaArthur Emanuel
 

Semelhante a Implementação de vetores em Java (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 (19)

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 - 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
 
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 - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
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
 

Implementação de vetores em Java

  • 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