1
resposta

Faça como eu fiz: aplicando polimorfismo com herança

Segue a atividade proposta:
Classe Titulo:

package br.com.alura.screenmatch.modelos;

public class Titulo {
    private String nome;
    private int anoDeLancamento;
    private int duracaoEmMinutos;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacoes;

    public String getNome() {
        return nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

    public int getTotalDeAvaliacoes() {
        return totalDeAvaliacoes;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

    public void setDuracaoEmMinutos(int duracaoEmMinutos) {
        this.duracaoEmMinutos = duracaoEmMinutos;
    }

    public void setIncluidoNoPlano(boolean incluidoNoPlano) {
        this.incluidoNoPlano = incluidoNoPlano;
    }

    public double pegaMedia() {
        if (totalDeAvaliacoes != 0) {
            return somaDasAvaliacoes/totalDeAvaliacoes;
        } else {
            return 0.0;
        }
    }

    public void avalia(double avaliacao){
        somaDasAvaliacoes += avaliacao;
        totalDeAvaliacoes++;
    }

    @Override
    public String toString() {
        return "Nome Título: " + getNome() +
                ", Ano de Lançamento: " + getAnoDeLancamento() +
                ", Duração em minutos: " + getDuracaoEmMinutos() +
                ", Avaliação: " + pegaMedia();
    }
}

Classe Filme:

package br.com.alura.screenmatch.modelos;

public class Filme extends Titulo {
    private String diretor;

    public String getDiretor() {
        return diretor;
    }

    public void setDiretor(String diretor) {
        this.diretor = diretor;
    }
}

Classe Serie:

package br.com.alura.screenmatch.modelos;

public class Serie extends Titulo {
    private int numeroTemporadas;
    private boolean ativa;
    private int episodiosPortemporada;
    private int minutosPorEpisodio;

    public int getNumeroTemporadas() {
        return numeroTemporadas;
    }

    public void setNumeroTemporadas(int numeroTemporadas) {
        this.numeroTemporadas = numeroTemporadas;
    }

    public boolean isAtiva() {
        return ativa;
    }

    public void setAtiva(boolean ativa) {
        this.ativa = ativa;
    }

    public int getEpisodiosPortemporada() {
        return episodiosPortemporada;
    }

    public void setEpisodiosPortemporada(int episodiosPortemporada) {
        this.episodiosPortemporada = episodiosPortemporada;
    }

    public int getMinutosPorEpisodio() {
        return minutosPorEpisodio;
    }

    public void setMinutosPorEpisodio(int minutosPorEpisodio) {
        this.minutosPorEpisodio = minutosPorEpisodio;
    }

    @Override
    public int getDuracaoEmMinutos() {
        return minutosPorEpisodio * episodiosPortemporada * numeroTemporadas;
    }
}

Classe Main:

import br.com.alura.screenmatch.calculos.CalculadoraDeTempo;
import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;

public class Main {
    public static void main(String[] args) {
        Filme filme1 = new Filme();

        filme1.setNome("Forest Gump");
        filme1.setAnoDeLancamento(1994);
        filme1.setDuracaoEmMinutos(142);
        filme1.setIncluidoNoPlano(true);

        filme1.avalia(8.7);
        filme1.avalia(9.0);
        filme1.avalia(9.2);
        filme1.avalia(9.1);

        System.out.println(filme1.toString());

        Serie serie1 = new Serie();
        serie1.setNome("Brothrs in Arms");
        serie1.setAnoDeLancamento(2001);
        serie1.setMinutosPorEpisodio(62);
        serie1.setEpisodiosPortemporada(10);
        serie1.setNumeroTemporadas(1);

        serie1.setIncluidoNoPlano(false);

        serie1.avalia(7.7);
        serie1.avalia(9.0);
        serie1.avalia(9.2);
        serie1.avalia(8.6);

        System.out.println(serie1.toString());

        CalculadoraDeTempo calculadoraDeTempo = new CalculadoraDeTempo();
        calculadoraDeTempo.inclui(filme1);
        calculadoraDeTempo.inclui(serie1);
        System.out.println("tempo total para maratonar: " + calculadoraDeTempo.getTempoTotal());
        }
    }

Output:

Nome Título: Forest Gump, Ano de Lançamento: 1994, Duração em minutos: 142, Avaliação: 9.0
Nome Título: Brothrs in Arms, Ano de Lançamento: 2001, Duração em minutos: 620, Avaliação: 8.625
tempo total para maratonar: 762

Process finished with exit code 0
1 resposta

Olá, Raoni! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso da herança para estruturar classes de forma organizada, utilizou muito bem os métodos sobrescritos para adaptar comportamentos específicos e ainda compreendeu a importância da reutilização de código para manter o projeto mais limpo e eficiente.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!