1
resposta

[Sugestão] Faça como eu fiz: utilizando interfaces

Interface Classificavel

package br.com.alura.screenmatch.calculos;

public interface Classificavel {
    int getClassificacao();
}

Aplicação da Interface nas classes Movie, Serie e Episode; Respectivamente:

MOVIE

package br.com.alura.screenmatch.modelos;
import br.com.alura.screenmatch.calculos.Classificavel;
public class Movie extends Title implements Classificavel {
private String diretor;

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

    public String getDiretor() {
        return diretor;
    }

    @Override
    public int getClassificacao() {
        return (int)obtermediaNotas();
    }
}

SERIE

package br.com.alura.screenmatch.modelos;

import br.com.alura.screenmatch.calculos.Classificavel;

public class Serie extends Title implements Classificavel {
    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;
    }

    @Override
    public int getClassificacao() {
        return 0;//futuramente eu implemento algo legal
    }
}

EPISODE

package br.com.alura.screenmatch.modelos;

import br.com.alura.screenmatch.calculos.Classificavel;

public class Episode extends Serie implements Classificavel {
    private String Nome;
    private int numero;
    private String diretor;
    private int totalVisualizacoes;

    public int getTotalVizualiacoes() {
        return totalVisualizacoes;
    }

    public void setTotalVizualiacoes(int totalVizualiacoes) {
        this.totalVisualizacoes = totalVizualiacoes;
    }

    public String getNome() {
        return Nome;
    }

    public void setNome(String nome) {
        Nome = nome;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getDiretor() {
        return diretor;
    }

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

    @Override
    public int getClassificacao() {
            if (totalVisualizacoes > 100) {
                return 4;
            } else {
                return 2;
            }
        }
    }
1 resposta

Oi, Gabriel! Como vai?

Agradeço por compartilhar.

Gostei da sua organização ao criar a interface Classificavel e aplicá-la nas classes Movie, Serie e Episode, isso mostra um bom entendimento sobre comportamentos em comum e uso de interfaces para garantir contratos claros no código. Do jeito que você explicou, a lógica de classificação ficou bem distribuída entre as classes, com destaque para a regra aplicada em Episode.

Continue explorando esse tipo de solução, pois ela ajuda muito na manutenção e evolução do projeto.

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