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)
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