Beruflich Dokumente
Kultur Dokumente
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
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