Sei sulla pagina 1di 27

Vetores Aulas 2

Prof. Me. André Vitorino Gonçalves


Conceitos iniciais
• Um Vetor é uma Lista implementada com Array
• É a estrutura de dados mais simples que existe
• Um vetor trabalha com valores do mesmo tipo
Exemplo

double[] gastosdia = new double[10] ;

0 1 2 3 4 5 6 7 8 9
A classe Vetor
Quais seriam os métodos que deveríamos cria caso fossemos construir uma classe para manipularmos
uma lista do tipo vetor?
construtor(capacidade)
adicionarProximo(elemento)
adicionarPosição(posição, elemento)
remover (posição)
buscaElemento(posição)
atualizarElemento(posição,elemento)
aumentar Capacidade()
tamanhoReal()
taVazio()
mostrarVetor()
Criando a classe Vetor Declarando o vetor

public class Vetor { Definindo uma variável para


identificar o tamanho atual do
private String[] elementos;
vetor
private int tamanho;
public Vetor(int capacidade){
this.elementos = new String[capacidade];
this.tamanho = 0;
}
} Construtor
Capacidade passada por
parâmetro e tamanho igual a
zero
Adicionar Próximo Elemento
Como desenvolver esse método?
Adicionar Próximo Elemento Elemento a ser
inserido

public boolean adicionarProximo (String elemento) {


Comparando se o
if (this.tamanho < this.elementos.length){ tamanho do real
Inserindo do array é do que
elemento na this.elementos[this.tamanho] = elemento;
sua capacidade
posição tamanho
real this.tamanho++;
Incrementando o
return true; tamanho para o
próximo elemento
}
ser adicionado
return false;
}
Adicionar Próximo Elemento em
Qualquer posição
Como desenvolver esse método?
Adicionar Próximo Elemento em Elemento a ser
Qualquer posição inserido e posição
escolhida
public boolean adicionarPosicao(int posicao, String elemento){
Abrindo espaço if (!(posicao >= 0 && posicao < tamanho)){
throw new IllegalArgumentException("Posição inválida");
This.tamanho-1 é a }
posição final do for (int i=this.tamanho-1; i>=posicao; i--){
vetor real this.elementos[i+1] = this.elementos[i];
} Verificando se a
Inserindo this.elementos[posicao] = elemento; posição é valida
elemento na this.tamanho++;
posição escolhida return true;
} Incrementando o
tamanho para o
próximo elemento
ser adicionado
Removendo um Elemento
Como desenvolver esse método?
Removendo um Elemento Verificando se a
posição é valida
public void remover(int posicao){
Deslocando os if (!(posicao >= 0 && posicao < tamanho)){
valores uma casa
para frente throw new IllegalArgumentException("Posição inválida");
partindo da
posição indicada
}

Decrementando o
for (int i=posicao; i<this.tamanho-1; i++){
tamanho real do this.elementos[i] = this.elementos[i+1];
vetor para
despresar o o }
ultimo elemento
que é repitido this.tamanho--;
}
buscar um Elemento indicando a
posição
Como desenvolver esse método?
buscar um Elemento indicando a
posição Verificando se a
posição é valida
public String buscaElemento(int posicao){
if (!(posicao >= 0 && posicao < tamanho)){
throw new IllegalArgumentException("Posição inválida");
}
return this.elementos[posicao];
}
Retornando
elemento
Atualizar Elemento indicando a
posição
Como desenvolver esse método?
Atualizar Elemento indicando a
posição
public void atualizarElemento(int posicao, String novoelemento){
if (!(posicao >= 0 && posicao < tamanho)){
throw new IllegalArgumentException("Posição inválida");
}
elementos[posicao]=novoelemento;
}
Aumentar a capacidade do vetor
Como desenvolver esse método?
Método privado pois
Aumentar a capacidade do vetor só é acessado dentro
da classe
private void aumentaCapacidade(){
if (this.tamanho == this.elementos.length){
Verificando a
necessidade de String[] elementosNovos = new String[this.elementos.length * 2];
aumentar a
capacidade do vetor for (int i=0; i<this.elementos.length; i++){
(Tamanho real =
capacidade do vetor?)
elementosNovos[i] = this.elementos[i];
} Declarando outro
this.elementos = elementosNovos; vetor com o dobro do
tamanho
}
} Atribuindo o novo Transferindo valores
vetor ao vetor de um vetor para o
utilizado pela classe outro
(custo elevado)
Retornar o tamanho do vetor
Como desenvolver esse método?
Retornar o tamanho real do vetor
public int tamanhoReal(){
Retornando o
return this.tamanho; valor da variável
tamanho
}
Mostrar se o vetor está vazio
Como desenvolver esse método?
Mostrar se o vetor está vazio
public boolean estaVazio(){
return tamanhoReal() = = 0;
}
Mostrar elementos do vetor
Como desenvolver esse método?
Mostrar elementos do vetor
Sobrecarga

@Override
public String toString() {
return Arrays.toString(elementos);
}
} Utilizando o método
toString pertencente a
classe Arrays que é
nativa do java
Mostrar elementos do vetor Real
Como desenvolver esse método?
Mostrar elementos do vetor Real Declarando um objeto
@Override da classe StringBuildes
public String toString() { (classe especifica para
StringBuilder s = new StringBuilder(); tratar concatenação)
Preenchendo os s.append("[");
elementos separados for (int i=0; i<this.tamanho-1; i++){
por virgula no objeto Inserindo o ultimo
StringBuider
s.append(this.elementos[i]); elemento do vetor
s.append(", "); real
}
Inserindo o if (this.tamanho>0){
fechamento do s.append(this.elementos[this.tamanho-1]);
colchete }
s.append("]");
return s.toString();
} Retornado todo o objeto s
no formato de String
Testar
Desenvolva uma classe vetor e teste a mesma para verificar as
funcionalidades do método apresentados (é isso mesmo replicar a
classe vetor no computador e testar).
Exercício
Para GOODRICH e TAMASSIA (2002) não é necessário a criação dos métodos
abaixo:
adicionarProximo(elemento)  funcionalidade já resolvida por outro método
aumentarCapacidade()  processo interno a funcionalidade de outro método
Sendo assim como seria possível utilizar a classe vetor para solucionar os
problemas abaixo? Demonstre como utilizando a classe de teste.
 Retornar primeiro elemento  Retornar ultimo elemento
 Inserir elemento na primeira posição
 Inserir elemento na ultima posição
 Remover primeiro elemento  Remover ultimo elemento

Potrebbero piacerti anche