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! 🚀Exercícios relacionados
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.
O rebanho caprino de uma ilha do mediterrâneo está sujeito a uma radiação natural que provoca a mutação do gene responsável pela pelagem parda ( B , dominante) para o gene responsável pela pelagem albina (b, recessivo), numa taxa de 0,25. Em 2005, dos 8 mil caprinos dessa ilha, 5000 eram homozigotos, dos quais apenas 500 eram albinos. Se, a partir desse ano, uma usina nuclear começa a emitir radiação que desencadeie uma mutação do gene b para o B na taxa de 1:100, qual a frequência genotípica de animais albinos, após uma geração?
Criar as classes Serie e Inflacao como descritas no diagrama UML mostrado a seguir:
Serie |
---|
- descricao : String |
- dados : double[] |
+ Serie(desc: String, dados : double[]) |
+ dados() : double[] |
+ valor(ind : int) : double |
+ descricao(): String |
+ toString(): String |
+ equals(obj : Object) : boolean |
Inflacao
- ano : int
- acumulado: double
- Inflacao(desc : String, ano : int, valores : double[], acumulado : double)
- indices ()
double[] - ano() : int
- indiceMes(mes : int) : double
- acumulado() : double
- toString() : String
- equals(obj: Object) : boolean
Observe a assinatura dos métodos para descobrir sua funcionalidade.
Para realizar a divulgação de um filme, um cinema fez a seguinte promoção: irá sortear cinco copos personalizados do filme entre os participantes de uma certa sessão. Dois amigos estão assistindo o filme na sessão em que será realizado o sorteio dos copos. Se 40 pessoas estão presentes na sessão, a probabilidade de os dois amigos serem sorteados é
a)
b)
c)
d)
e)
a)
b)
c)
d)
e)