Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

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

Seguem aqui as classes referidas (Titulo, Serie e CalculadoraDeTempo, Filme) na prática feitas pela minha lógica, quero saber se posso melhorar algum trecho ou se falhei em alguma boa prática.

Classe Title

package br.com.alura.screenmatch.modelos;

public class Title {
    private double mediaNotas;
    private double somaNotas; //encapsulando a soma de notas e o total de notas para que ninguem altere a avaliação dos filmes e a média.
    private int totalNotas;
    private String nome;
    private int tempoDeDuracaoMinutos;
    private int anoDeLancamento;
    private boolean incluidoNoPlano; // encapsulando o verificador de pl

    public int getTotalNotas() {
        return totalNotas;
    }

    public String getNome() {
        return nome;
    }

    public int getTempoDeDuracaoMinutos() {
        return tempoDeDuracaoMinutos;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

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

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

    public void setTempoDeDuracaoMinutos(int tempoDeDuracaoMinutos) {
        this.tempoDeDuracaoMinutos = tempoDeDuracaoMinutos;
    }

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

    public void avaliaTitle(double nota){
        somaNotas += nota;
        totalNotas++;
    }

    public double obtermediaNotas(){
        mediaNotas = somaNotas/totalNotas;
        return mediaNotas;
    }

    public void exibeInfoTitle(){
        System.out.println("Nome do Título: " + nome);
        System.out.println("Ano de lançamento: " + anoDeLancamento);
        System.out.println("Duração (em minutos): " + tempoDeDuracaoMinutos);
        System.out.println("Título incluído no plano: " + incluidoNoPlano);
        System.out.println("Nota do Título: " + obtermediaNotas());
        System.out.println("Total de avaliações: " + totalNotas);
    }
}

Classe Movie

package br.com.alura.screenmatch.modelos;

public class Movie extends Title {
private String diretor;

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

    public String getDiretor() {
        return diretor;
    }
}

Classe Serie

package br.com.alura.screenmatch.modelos;

public class Serie extends Title{
    private int temporadas;
    private int episodiosPorTemporada;
    private int minutosPorEpisodio;
    private boolean ativa;


    public boolean isAtiva() {
        return ativa;
    }

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

    public int getMinutosPorEpisodio() {
        return minutosPorEpisodio;
    }

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

    public int getEpisodiosPorTemporada() {
        return episodiosPorTemporada;
    }

    public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
        this.episodiosPorTemporada = episodiosPorTemporada;
    }

    public int getTemporadas() {
        return temporadas;
    }

    public void setTemporadas(int temporadas) {
        this.temporadas = temporadas;
    }

    @Override
    public int getTempoDeDuracaoMinutos() {
        return temporadas*episodiosPorTemporada*minutosPorEpisodio;
    }
}

Classe CalculadoraDeTempo

package br.com.alura.screenmatch.calculos;
import br.com.alura.screenmatch.modelos.Title;

public class CalculadoraDeTempo {
    private double tempoTotalHora;
    private int tempoTotalEmMinutos;

    public double getTempoTotalHora() {
        return tempoTotalHora;
    }

    public int getTempoTotalEmMinutos() {
        return tempoTotalEmMinutos;
    }
//    };
    public void temporiza(Title t){
        this.tempoTotalEmMinutos += t.getTempoDeDuracaoMinutos();
        this.tempoTotalHora = Math.round(tempoTotalEmMinutos/60);
        System.out.println("Tempo para maratonar (em horas): "+tempoTotalHora);
        System.out.println("Tempo para maratonar (em minutos): "+ tempoTotalEmMinutos);
    }
}
1 resposta
solução!

Olá, Gabriel, tudo bem?

Mandou muito bem na implementação!

Dei uma olhada no seu código e a lógica está certinha. Você aplicou corretamente os conceitos principais do exercício.

Bons estudos!

Sucesso

Imagem da comunidade