Sei sulla pagina 1di 2

UNISAL – Ciência da Computação Atividade4: Observe a classe Vetor abaixo e responda às seguintes questões:

Aula 05
Disc.: Estrutura de Dados import java.util.*;
18/03/2011
Prof.: Aníbal Fernandes
Temática: Implementação de Lista via Vetor public class Vetor {
private Aluno[ ] alunos;
Na aula anterior estudamos a estrutura de dados Lista. Nesta aula, vamo
Implementar uma Lista com um estrutura denominada Vetor.
Vetor( ) {
Vamos continuar nosso estudos com a criação de uma classe chamada Vetor alunos = new Aluno[100];
que tem por função armazenar os alunos em array e oferecer serviços para }
que possamos manipular a Lista, encapsulando o acesso a este Array. Vetor(int tam ) {
alunos = new Aluno[tam];
Atividade1: Descreva o funcionamento
da estrutura de dados do tipo Fila, }
conforme estudado na aula anterior e
apresentado na Figura 1 ao lado. public void adicionarAluno(Aluno aluno) {
// implementação
}
Figura 1 – Fila via Array de Referências public void adicionaAluno(int posicao, Aluno aluno) {
Vamos implementar um aplicativo que capaz de manipular uma LISTA de alunos // implementação
Primeiramente precisamos ter uma n=maneira de armazenar o aluno. A classe }
Aluno abaixo foi projetada para essa finalidade. public Aluno getAluno(int posicao) {
Classe: Aluno.java // implementação
public class Aluno { Atividade2: Descreva o Diagrama
}
private String nome; de Classes UML da classe Aluno
public void removerAluno(int posicao) {
Aluno( ) { } Aluno // implementação
Aluno(String a) { nome=a;} }
public boolean contemAluno(Aluno aluno) {
public String getNome() {
// implementação
return nome;
} }
public void setNome(String nome) { public int getTamanho() {
this.nome = nome; // implementação
} }
public String toString() {
return this.nome;
public String toString() {
} return Arrays.toString(alunos);
public boolean equals(Object o) { }
Aluno outro = (Aluno)o; }
return this.nome.equals(outro.nome);
}
}
4.1 Quantas maneiras diferentes podemos criar objetos da classe Vetor?
4.2 Qual é o relacionamento UML entre a classe Aluno e a classe Vetor?
Atividade3: Descreva a função e o tipo de retorno de cada um dos métodos da Descreva o Diagrama de classe UML desse relacionamento.
classe Aluno.java apresentada acima. 4.2 Por que a classe Vetor não compila ainda?
Atividade5: Inserindo o código nos métodos da classe Vetor 7.3 Comparar um dado aluno com todos os alunos existentes na Lista.
5.1 - Implementar o método adicionarAluno(Aluno aluno) na classe Vetor public boolean contemAluno(Aluno aluno) {
for (int i = 0; i < this.alunos.length; i++) {
if (aluno == this.alunos[i]) {
return true;
}
}
return false;
}
5.2 Faça uma análise do método acima e responda:
7.4 Adicionar um aluno na Lista
Conforme os alunos forem inseridos com esse método, o desempenho do
aplicativo será pior ou melhor? Justifique sua resposta! public void adicionarAluno(int posicao, Aluno aluno) {
5.3 Por que o consumo de tempo desse método é chamado linear. if (!this.posicaoValida(posicao)) {
Melhorias throw new IllegalArgumentException("Posição inválida");
Será que existe alguma maneira para melhorar este consumo de tempo? }
Uma pequena modificação é capaz de melhorar muito o desempenho do for (int i = this.totalDeAlunos - 1; i >= posicao; i-=1) {
método adicionarAluno(Aluno). Vamos acompanhar abaixo. this.alunos[i + 1] = this.alunos[i];
}
Para armazenar a quantidade de alunos existentes na Lista definiremos um this.alunos[posicao] = aluno;
atributo na classe Vetor do tipo int. this.totalDeAlunos++;
import java.util.*; Atividade6: Descreva a razão }
public class Vetor { principal que faz do método
private Aluno[ ] alunos; adicionarAluno(Aluno aluno) da // para o método adicionar aluno acima, há necessidade do método abaixo
private int totalDeAlunos = 0; classe Vetor ao lado ser mais private boolean posicaoValida(int posicao) {
eficiente que o anterior? return posicao >= 0 && posicao <= this.totalDeAlunos;
Vetor( ) { }
alunos = new Aluno[100];
Justifique a necessidade da utilização do método posicaoValida(int posicao)
}
para adicionar um aluno na lista com mais garantias.
Vetor(int tam ) {
alunos = new Aluno[tam]; É interessante de observar 7.5 Implemente o aplicativo TestaVetor.java
} que modificamos nossa
public class TestaVetor 7.6 Execute a aplicativo e
public void adicionarAluno(Aluno aluno) { implementação sem
{ comente sua saída.
this.alunos[this.totalDeAlunos] = aluno; alterar nossa interface, e
conseguimos deixar o método public static void main(String args[]) {
this.totalDeAlunos++;
adicionarAluno() mais rápido. Vetor vlista = new Vetor();
} 7.7 Faça um texto explicativo
Aluno a1 = new Aluno("Dilma Rousseff");
} sobre o Diagrama UML
Aluno a2 = new Aluno("Barack Obama");
abaixo.
Atividade7: Implemente os métodos abaixo na classe Vetor e faça a compilação vlista.adicionarAluno(a1);
7.1 Verificar o tamanho da Lista 7.2 Retornar o aluno de uma dada posição vlista.adicionarAluno(a2);
public int getTamanho( ) { do array da Lista
System.out.println(vlista.toString());
return this.totalDeAlunos; public Aluno getAluno(int posicao) { }
} return this.alunos[posicao]; }
}

Potrebbero piacerti anche