Utilizando as classes criadas no exercício anterior crie uma nova classe Turma como mostrado no diagrama UML abaixo:
Turma |
---|
- vetor : ArrayList<Aluno> |
+ Turma() |
+ numeroAlunos() : int |
+ adicionaAluno(aluno : Aluno) |
+ toString() : String |
+ buscaAluno(nome : String) : ArrayList<Aluno> |
+ removeAluno(ra : int) : boolean |
+ lerAluno(input : Scanner) : Aluno |
+ main(args: String[]) |
No método main crie um objeto de tipo Turma e um menú com opções para: adicionar um aluno na turma, visualizar as características de todos os alunos da turma, remover um aluno pelo RA, buscar alunos pelo nome e sair do programa. Um aluno só pode ser adicionado se não existe outro idêntico em vetor.
Passo 1
Beleza, vamos lá! O exercício pede para criar uma nova classe chamada
Turma
usando as classes que você já criou antes. A matéria que vamos usar aqui é Programação Orientada a Objetos em Java, mais especificamente sobre classes, objetos, listas e métodos. Para resolver isso, vamos precisar entender como criar uma classe, adicionar métodos nela, e manipular uma lista de objetos Aluno
.Passo 2
Primeiro, vamos criar a classe
Turma
. Ela vai ter um atributo chamado vetor
, que é uma lista (ArrayList
) de objetos do tipo Aluno
. Para isso, vamos importar java.util.ArrayList
.Passo 3
Agora, vamos criar o construtor
Turma()
. Esse método especial é chamado quando criamos um novo objeto da classe. Aqui, vamos inicializar o vetor
como uma nova ArrayList
de Aluno
.Passo 4
Vamos criar o método
numeroAlunos()
. Esse método vai retornar a quantidade de alunos na turma. Para isso, usamos o método size()
da ArrayList
.Passo 5
Em seguida, vamos criar o método
adicionaAluno(Aluno aluno)
. Esse método vai adicionar um aluno na turma, mas só se não existir outro aluno com o mesmo RA (Registro Acadêmico). Primeiro, vamos verificar se já existe um aluno com o mesmo RA. Se não existir, adicionamos o aluno na lista.Passo 6
Vamos criar o método
toString()
. Esse método vai retornar uma representação em string de todos os alunos na turma. Vamos usar um StringBuilder
para concatenar as informações de cada aluno.Passo 7
Agora, vamos implementar o método
buscaAluno(String nome)
. Esse método vai buscar e retornar uma lista de alunos com o nome especificado. Vamos percorrer o vetor
e adicionar na lista de resultados os alunos que tiverem o nome igual ao que foi passado.Passo 8
Vamos criar o método
removeAluno(int ra)
. Esse método vai remover um aluno pelo RA. Percorremos a lista de alunos, e se encontrarmos um com o RA correspondente, removemos ele e retornamos true
. Se não encontrarmos, retornamos false
.Passo 9
O método
lerAluno(Scanner input)
vai ler os dados de um aluno do usuário. Vamos pedir para o usuário digitar o RA, nome e outros dados necessários, e então criar e retornar um objeto Aluno
com essas informações.Passo 10
Finalmente, vamos criar o método
main
. Dentro dele, vamos criar um objeto da classe Turma
e um menu que permite ao usuário adicionar alunos, visualizar todos os alunos, remover um aluno pelo RA, buscar alunos pelo nome e sair do programa. Vamos usar um loop while
para mostrar o menu até que o usuário decida sair.Resposta
import java.util.ArrayList;
import java.util.Scanner;
public class Turma {
private ArrayList<Aluno> vetor;
public Turma() {
this.vetor = new ArrayList<>();
}
public int numeroAlunos() {
return vetor.size();
}
public void adicionaAluno(Aluno aluno) {
for (Aluno a : vetor) {
if (a.getRa() == aluno.getRa()) {
System.out.println("Aluno com RA " + aluno.getRa() + " já existe.");
return;
}
}
vetor.add(aluno);
System.out.println("Aluno adicionado com sucesso!");
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (Aluno a : vetor) {
sb.append(a.toString()).append("\n");
}
return sb.toString();
}
public ArrayList<Aluno> buscaAluno(String nome) {
ArrayList<Aluno> resultado = new ArrayList<>();
for (Aluno a : vetor) {
if (a.getNome().equalsIgnoreCase(nome)) {
resultado.add(a);
}
}
return resultado;
}
public boolean removeAluno(int ra) {
for (Aluno a : vetor) {
if (a.getRa() == ra) {
vetor.remove(a);
System.out.println("Aluno removido com sucesso!");
return true;
}
}
System.out.println("Aluno com RA " + ra + " não encontrado.");
return false;
}
public Aluno lerAluno(Scanner input) {
System.out.print("Digite o RA do aluno: ");
int ra = input.nextInt();
input.nextLine(); // Consumir a quebra de linha
System.out.print("Digite o nome do aluno: ");
String nome = input.nextLine();
// Adicione mais campos se necessário
return new Aluno(ra, nome);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Turma turma = new Turma();
int opcao = 0;
while (opcao != 5) {
System.out.println("Menu:");
System.out.println("1. Adicionar aluno");
System.out.println("2. Visualizar alunos");
System.out.println("3. Remover aluno pelo RA");
System.out.println("4. Buscar aluno pelo nome");
System.out.println("5. Sair");
System.out.print("Escolha uma opção: ");
opcao = input.nextInt();
input.nextLine(); // Consumir a quebra de linha
switch (opcao) {
case 1:
Aluno novoAluno = turma.lerAluno(input);
turma.adicionaAluno(novoAluno);
break;
case 2:
System.out.println("Alunos na turma:");
System.out.println(turma.toString());
break;
case 3:
System.out.print("Digite o RA do aluno a remover: ");
int ra = input.nextInt();
input.nextLine(); // Consumir a quebra de linha
turma.removeAluno(ra);
break;
case 4:
System.out.print("Digite o nome do aluno a buscar: ");
String nome = input.nextLine();
ArrayList<Aluno> encontrados = turma.buscaAluno(nome);
if (encontrados.isEmpty()) {
System.out.println("Nenhum aluno encontrado com o nome " + nome);
} else {
System.out.println("Alunos encontrados:");
for (Aluno a : encontrados) {
System.out.println(a.toString());
}
}
break;
case 5:
System.out.println("Saindo do programa.");
break;
default:
System.out.println("Opção inválida. Tente novamente.");
}
}
input.close();
}
}