// Importa a classe ArrayList para armazenar objetos dinamicamente
import java.util.ArrayList;
// Importa a classe Scanner para leitura de dados do usuário
import java.util.Scanner;
// Classe que representa o objeto Pessoa
class Pessoa {
// Atributo privado para aplicar encapsulamento
private String nome;
// Atributo privado para armazenar a idade
private int idade;
// Método GET para retornar o nome
public String getNome() {
return nome;
}
// Método SET para definir o nome
public void setNome(String nome) {
this.nome = nome;
}
// Método GET para retornar a idade
public int getIdade() {
return idade;
}
// Método SET para definir a idade
public void setIdade(int idade) {
this.idade = idade;
}
}
// Classe principal do sistema
public class Main {
// Método principal do programa
public static void main(String[] args) {
// Cria um Scanner para entrada de dados
Scanner scanner = new Scanner(System.in);
// Cria uma lista para armazenar pessoas
ArrayList<Pessoa> lista = new ArrayList<>();
// Variável de controle do menu
int opcao;
// Estrutura de repetição do sistema
do {
// Exibe o menu do CRUD
System.out.println("\n1 - Cadastrar");
System.out.println("2 - Listar");
System.out.println("3 - Atualizar");
System.out.println("4 - Remover");
System.out.println("0 - Sair");
// Lê a opção escolhida
opcao = scanner.nextInt();
// Limpa o buffer do Scanner
scanner.nextLine();
// Verifica a opção escolhida
switch(opcao) {
// CREATE - Cadastro
case 1:
// Cria um novo objeto Pessoa
Pessoa p = new Pessoa();
// Solicita o nome
System.out.println("Digite o nome:");
// Define o nome usando encapsulamento
p.setNome(scanner.nextLine());
// Solicita a idade
System.out.println("Digite a idade:");
// Define a idade usando encapsulamento
p.setIdade(scanner.nextInt());
// Limpa buffer
scanner.nextLine();
// Adiciona a pessoa na lista
lista.add(p);
// Mensagem de sucesso
System.out.println("Pessoa cadastrada!");
break;
// READ - Listagem
case 2:
// Percorre toda a lista
for(int i = 0; i < lista.size(); i++) {
// Exibe os dados da pessoa
System.out.println(
i + " - " +
lista.get(i).getNome() +
" | " +
lista.get(i).getIdade()
);
}
break;
// UPDATE - Atualização
case 3:
// Solicita o índice
System.out.println("Digite o índice:");
// Lê o índice
int indiceAtualizar = scanner.nextInt();
// Limpa buffer
scanner.nextLine();
// Verifica se o índice existe
if(indiceAtualizar < lista.size()) {
// Solicita novo nome
System.out.println("Novo nome:");
// Atualiza o nome
lista.get(indiceAtualizar)
.setNome(scanner.nextLine());
// Solicita nova idade
System.out.println("Nova idade:");
// Atualiza a idade
lista.get(indiceAtualizar)
.setIdade(scanner.nextInt());
// Limpa buffer
scanner.nextLine();
// Mensagem de sucesso
System.out.println("Pessoa atualizada!");
}
break;
// DELETE - Remoção
case 4:
// Solicita o índice
System.out.println("Digite o índice:");
// Lê o índice
int indiceRemover = scanner.nextInt();
// Limpa buffer
scanner.nextLine();
// Verifica se o índice existe
if(indiceRemover < lista.size()) {
// Remove a pessoa da lista
lista.remove(indiceRemover);
// Mensagem de sucesso
System.out.println("Pessoa removida!");
}
break;
// Encerramento do sistema
case 0:
// Exibe mensagem de saída
System.out.println("Sistema encerrado!");
break;
// Caso a opção seja inválida
default:
// Exibe mensagem de erro
System.out.println("Opção inválida!");
}
// Continua enquanto a opção for diferente de 0
} while(opcao != 0);
// Fecha o Scanner
scanner.close();
}
}