Crie uma classe HistoricoInflacao que utiliza as duas classes do exercício anterior como no diagrama UML a seguir:
| HistoricoInflacao |
|---|
| - serie : java.util.ArrayList |
| + Historicolnflacao() |
| + serie() : java.util.ArrayList |
| + adicionar(infla: Inflacao) |
| + toString() : String |
| + lerınflacao(teclado : java.util.Scanner) : Inflacao |
| + buscar(ano: int) : Inflacao |
| + main(args: String[l]) |
O método adicionar acrescenta um objeto Inflacao à serie somente se não existe outro igual armazenado. O método lerInflacao cria um objeto de tipo Inflacao a partir dos dados fornecidos pelo usuário através do teclado. O main cria um menú com opções para adicionar, visualizar a serie de inflação armazenada, visualizar os dados da inflação de um determinado ano e encerrar a execução do programa.
Passo 1
Beleza, vamos lá! O enunciado pede para criar uma classe chamada
HistoricoInflacao em Java. Essa classe vai usar duas outras classes que foram mencionadas no exercício anterior (como o Inflacao, que provavelmente representa dados de inflação). A matéria aqui envolve Programação Orientada a Objetos e Estruturas de Dados usando ArrayList. Vamos precisar entender como criar classes, métodos, utilizar listas para armazenar objetos e interagir com o usuário via teclado.Passo 2
Primeiro, vamos importar o que precisamos. Vamos usar
java.util.ArrayList para armazenar os objetos de inflação e java.util.Scanner para ler dados do usuário.import java.util.ArrayList;
import java.util.Scanner;
Passo 3
Agora, vamos definir a classe
HistoricoInflacao e declarar um atributo privado chamado serie, que será uma lista (ArrayList) de objetos Inflacao.public class HistoricoInflacao {
private ArrayList<Inflacao> serie;
public HistoricoInflacao() {
serie = new ArrayList<>();
}
Aqui, criamos o construtor que inicializa a lista
serie.Passo 4
Vamos criar os métodos principais. Primeiro, um método para adicionar um objeto
Inflacao à lista, mas somente se não existir outro igual. Para isso, vamos verificar se a lista já contém o objeto antes de adicionar. public void adicionar(Inflacao infla) {
if (!serie.contains(infla)) {
serie.add(infla);
System.out.println("Inflação adicionada com sucesso!");
} else {
System.out.println("Inflação já existe na série.");
}
}
Explicação: Usamos o método
contains da ArrayList para verificar se o objeto já está na lista. Se não estiver, adicionamos com add.Passo 5
Vamos criar o método
lerInflacao que vai ler os dados do usuário e criar um objeto Inflacao. Supondo que a classe Inflacao tem atributos como ano e valor, faremos algo assim: public Inflacao lerInflacao(Scanner teclado) {
System.out.print("Digite o ano: ");
int ano = teclado.nextInt();
System.out.print("Digite a taxa de inflação: ");
double valor = teclado.nextDouble();
return new Inflacao(ano, valor);
}
Explicação: Utilizamos o
Scanner para ler o ano e o valor da inflação e então criamos um novo objeto Inflacao com esses dados.Passo 6
Vamos implementar o método
buscar que encontra uma inflação por ano. public Inflacao buscar(int ano) {
for (Inflacao infla : serie) {
if (infla.getAno() == ano) {
return infla;
}
}
return null; // Se não encontrar
}
Explicação: Percorremos a lista
serie e comparamos o ano de cada objeto Inflacao com o ano buscado. Se encontrar, retornamos o objeto; se não, retornamos null.Passo 7
Vamos sobrescrever o método
toString para facilitar a visualização dos dados. @Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (Inflacao infla : serie) {
sb.append(infla.toString()).append("\n");
}
return sb.toString();
}
Explicação: Usamos um
StringBuilder para concatenar as representações em string de cada objeto Inflacao na lista.Passo 8
Agora, vamos criar o método
main que vai exibir um menu para o usuário interagir. public static void main(String[] args) {
HistoricoInflacao historico = new HistoricoInflacao();
Scanner teclado = new Scanner(System.in);
int opcao;
do {
System.out.println("Menu de Opções:");
System.out.println("1. Adicionar Inflação");
System.out.println("2. Visualizar Série de Inflação");
System.out.println("3. Buscar Inflação por Ano");
System.out.println("4. Sair");
System.out.print("Escolha uma opção: ");
opcao = teclado.nextInt();
switch (opcao) {
case 1:
Inflacao novaInfla = historico.lerInflacao(teclado);
historico.adicionar(novaInfla);
break;
case 2:
System.out.println("Série de Inflação:");
System.out.println(historico.toString());
break;
case 3:
System.out.print("Digite o ano para buscar: ");
int ano = teclado.nextInt();
Inflacao encontrada = historico.buscar(ano);
if (encontrada != null) {
System.out.println("Inflação encontrada: " + encontrada.toString());
} else {
System.out.println("Nenhuma inflação encontrada para o ano " + ano);
}
break;
case 4:
System.out.println("Encerrando o programa.");
break;
default:
System.out.println("Opção inválida. Tente novamente.");
}
} while (opcao != 4);
teclado.close();
}
}
Explicação: O
main cria uma instância de HistoricoInflacao e um Scanner para ler as opções do usuário. Ele mostra um menu com opções para adicionar, visualizar, buscar e sair. Dependendo da escolha, chama os métodos correspondentes.Resposta
Prontinho! Agora você tem a classe
HistoricoInflacao completa, que permite adicionar, visualizar e buscar dados de inflação de forma interativa. Basta garantir que a classe Inflacao esteja bem definida com os métodos necessários como getAno() e toString(). Boa programação! 🚀