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.
Passo 1
Beleza, então a gente tem que criar duas classes: Serie e Inflacao, conforme o diagrama UML que você compartilhou. A matéria aqui é Programação Orientada a Objetos (POO), especificamente sobre como definir classes, atributos e métodos em Java. Vamos precisar entender como estruturar uma classe, declarar atributos privados, criar construtores e implementar métodos públicos para acessar e modificar esses atributos.
Passo 2
Vamos começar criando a classe Serie. Primeiro, definimos os atributos privados
descricao
do tipo String
e dados
que é um array de double
. Em Java, usamos private
para encapsular os dados, garantindo que só possam ser acessados através dos métodos da classe.public class Serie {
private String descricao;
private double[] dados;
// Construtor
public Serie(String desc, double[] dados) {
this.descricao = desc;
this.dados = dados;
}
}
Passo 3
Agora, vamos adicionar os métodos da classe Serie. Primeiro, o método
dados()
que retorna o array de double
:public double[] dados() {
return this.dados;
}
Passo 4
Em seguida, o método
valor(int ind)
que retorna o valor no índice especificado do array dados
. Precisamos verificar se o índice está dentro dos limites do array para evitar erros:public double valor(int ind) {
if(ind >= 0 && ind < dados.length) {
return dados[ind];
} else {
throw new IndexOutOfBoundsException("Índice fora dos limites.");
}
}
Passo 5
O método
descricao()
simplesmente retorna a descrição da série:public String descricao() {
return this.descricao;
}
Passo 6
O método
toString()
é usado para retornar uma representação em forma de string do objeto. Vamos sobrescrevê-lo para mostrar a descrição e os dados:@Override
public String toString() {
return "Descricao: " + descricao + ", Dados: " + Arrays.toString(dados);
}
Passo 7
O método
equals(Object obj)
serve para comparar se dois objetos Serie são iguais. Vamos verificar se os objetos são da mesma classe e se seus atributos são iguais:@Override
public boolean equals(Object obj) {
if(this == obj) return true;
if(obj == null || getClass() != obj.getClass()) return false;
Serie serie = (Serie) obj;
return Objects.equals(descricao, serie.descricao) && Arrays.equals(dados, serie.dados);
}
Passo 8
Agora, vamos criar a classe Inflacao que estende a classe Serie. Além dos atributos de Serie, ela tem
ano
e acumulado
. Vamos definir esses atributos e o construtor:public class Inflacao extends Serie {
private int ano;
private double acumulado;
public Inflacao(String desc, int ano, double[] valores, double acumulado) {
super(desc, valores);
this.ano = ano;
this.acumulado = acumulado;
}
}
Passo 9
Vamos adicionar os métodos da classe Inflacao. Primeiro,
indices()
que retorna o array de índices:public double[] indices() {
return this.dados();
}
Passo 10
O método
ano()
retorna o ano da inflação:public int ano() {
return this.ano;
}
Passo 11
O método
indiceMes(int mes)
retorna o índice de inflação para um determinado mês. Novamente, precisamos verificar se o mês está dentro dos limites do array:public double indiceMes(int mes) {
return valor(mes);
}
Passo 12
O método
acumulado()
retorna o valor acumulado da inflação:public double acumulado() {
return this.acumulado;
}
Passo 13
Implementamos o método
toString()
para Inflacao, sobrescrevendo o método da classe Serie:@Override
public String toString() {
return super.toString() + ", Ano: " + ano + ", Acumulado: " + acumulado;
}
Passo 14
Por fim, implementamos o método
equals(Object obj)
para Inflacao, garantindo que também compara os novos atributos:@Override
public boolean equals(Object obj) {
if(!super.equals(obj)) return false;
Inflacao inflacao = (Inflacao) obj;
return ano == inflacao.ano && Double.compare(inflacao.acumulado, acumulado) == 0;
}
Resposta
As classes Serie e Inflacao foram criadas conforme o diagrama UML, com todos os atributos, construtores e métodos implementados corretamente.
Exercícios relacionados
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.
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.
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)
Os registros mostram que a probabilidade de um vendedor fazer uma venda em uma visita a um cliente potencial é 0,4 . Supondo que as decisões de compra dos clientes são eventos independentes, então a probabilidade de que o vendedor faça no mínimo uma venda em três visitas é igual a:
a) 0,624
b) 0,064
d) 0,568
e) 0,784
a) 0,624
b) 0,064
d) 0,568
e) 0,784