Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Códigos do Curso

Vou deixar postado os códigos da forma que organizei com os cursos anteriores, espero que ajude quem precise para dar sequência neste curso.

Principal

// Importações
import br.com.alura.screematch.modelos.Episodio;
import br.com.alura.screematch.modelos.Filme;
import br.com.alura.screematch.modelos.Serie;
import br.com.alura.screenmatch.calculos.CalculadoraDeTempo;
import br.com.alura.screenmatch.calculos.FiltroRecomendacao;

public class Principal {
    public static void main(String[] args) {

        // Dados de Classes
        Filme meuFilme = new Filme();
        Filme outroFilme = new Filme();
        Serie lost = new Serie();

        // --------------------------------------

        // Filmes
        //// O poderoso chefão
        meuFilme.setNome("O poderoso chefão");
        meuFilme.setAnoDeLancamento(2000);
        meuFilme.setDuracaoEmMinutos(180);

        //// Avatar
        outroFilme.setNome("Avatar");
        outroFilme.setAnoDeLancamento(2023);
        outroFilme.setDuracaoEmMinutos(200);

        // Series
        //// Lost
        lost.setNome("Lost");
        lost.setAnoDeLancamento(2004);
        lost.setTemporadas(5);
        lost.setEpisodiosPorTemporada(10);
        lost.setMinutosPorEpisodio(50);
        lost.setDuracaoEmMinutos(50);

        // --------------------------------------

        // Avaliações e notas
        //// O poderoso chefão
        meuFilme.avalia(8);
        meuFilme.avalia(5);
        meuFilme.avalia(10);

        //// Serie Lost
        lost.avalia(8);
        lost.avalia(5);
        lost.avalia(10);

        // --------------------------------------

        // Ficha técnica e Avaliações - Filmes

        //// O poderoso chefão
        System.out.println("*** Informações de Filmes ***");
        meuFilme.exibeFichaTecnica();

        System.out.println("\n*** Avaliações - O poderoso chefão ***");
        System.out.println("Soma das avaliações: " + meuFilme.getSomaDasAvaliacao());
        System.out.println("Total de avaliações: " + meuFilme.getTotalDeAvaliacoes());
        System.out.println("A média das avaliações foi de: " + meuFilme.pegaMedia() + " pontos.");

        // Ficha técnica e Avaliações - Series

        //// Serie Lost
        System.out.println("\n*** Informações de Series ***");
        lost.exibeFichaTecnica();
        System.out.println("Duração para maratonar Lost: " + lost.getDuracaoEmMinutos() + " minutos");

        System.out.println("\n*** Avaliações - Serie Lost ***");
        System.out.println("Soma das avaliações: " + lost.getSomaDasAvaliacao());
        System.out.println("Total de avaliações: " + lost.getTotalDeAvaliacoes());
        System.out.println("A média das avaliações foi de: " + lost.pegaMedia() + " pontos.");

        // Calculadora
        CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
        calculadora. inclui(meuFilme);
        calculadora.inclui(outroFilme);
        calculadora.inclui(lost);

        System.out.println("\n*** Tempo total dos filmes e séries ***");
        System.out.println("Tempo total dos filmes: " + calculadora.getTempoTotal() + " Minutos.");

        // Filtro de Recomendação
        FiltroRecomendacao filtro = new FiltroRecomendacao();
        System.out.println("\n*** Recomendados ***");

        Episodio episodio = new Episodio();
        episodio.setNumero(1);
        episodio.setSerie(lost);
        episodio.setTotalVisualizacoes(300);
        filtro.filtra(episodio);

    }
}
9 respostas

FiltroRecomendacao

package br.com.alura.screenmatch.calculos;

public class FiltroRecomendacao {
    // Classes
    private String recomendacao;

    public void filtra(Classificavel classificavel) {
        if (classificavel.getClassificacao() >= 4){
            System.out.println("Esta entre os preferidos do momento.");
        } else if (classificavel.getClassificacao() >= 2){
            System.out.println("Muito bem avaliado no momento!");
        } else {
            System.out.println("Coloque na sua lista para assistir depois.");
        }
    }

}

Classificavel

package br.com.alura.screenmatch.calculos;

public interface Classificavel {

    //Getter
    int getClassificacao();
}

Episodio

package br.com.alura.screematch.modelos;

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

public class Episodio implements Classificavel {
    // classes
    private int numero;
    private String nome;
    private Serie serie;
    private int TotalVisualizacoes;

    // Get's
    public int getNumero() {
        return numero;
    }

    public String getNome() {
        return nome;
    }

    public Serie getSerie() {
        return serie;
    }

    public int getTotalVisualizacoes() {
        return TotalVisualizacoes;
    }

    // Setter's
    public void setNumero(int numero) {
        this.numero = numero;
    }

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

    public void setSerie(Serie serie) {
        this.serie = serie;
    }

    public void setTotalVisualizacoes(int totalVisualizacoes) {
        TotalVisualizacoes = totalVisualizacoes;
    }

    // Override
    @Override
    public int getClassificacao() {
        if (TotalVisualizacoes > 100) {
            return 4;
        } else {
            return 2;
        }
    }
}

CalculadoraDeTempo

// Pacotes
package br.com.alura.screenmatch.calculos;

// Importações
import br.com.alura.screematch.modelos.Titulo;

public class CalculadoraDeTempo {
    // Classes
    private int tempoTotal;

    // Get's
    public int getTempoTotal() {
        return tempoTotal;
    }

    // Void's

    public void inclui(Titulo titulo) {
        this.tempoTotal += titulo.getDuracaoEmMinutos();
        System.out.println("Adicionando a duração em minutos de " + titulo);
    }

}

Titulo

// Pacotes
package br.com.alura.screematch.modelos;

public class Titulo {
    //Classes
    private String nome;
    private int anoDeLancamento;
    private int duracaoEmMinutos;

    // Plano
    private boolean incluidoNoPlano;

    // Avaliações
    private int somaDasAvaliacao;
    private int totalDeAvaliacoes;

    // Get's
    public int getTotalDeAvaliacoes() {
        return totalDeAvaliacoes;
    }

    public int getSomaDasAvaliacao() {
        return somaDasAvaliacao;
    }

    public String getNome() {
        return nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

    // Setter's

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

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

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

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

    // void's
    public void exibeFichaTecnica(){
        System.out.println("Nome do Filme: " + nome);
        System.out.println("Ano de lançamento: " + anoDeLancamento);
        System.out.println("Duração do Filme: " + duracaoEmMinutos + " minutos");
    }

    //// Void avaliações
    public void avalia(double nota){
        somaDasAvaliacao += nota;
        totalDeAvaliacoes ++;
    }

    public double pegaMedia(){
        return somaDasAvaliacao / totalDeAvaliacoes;
    }
}

Serie

// Pacotes
package br.com.alura.screematch.modelos;

public class Serie extends Titulo {
    // Classes
    private int temporadas;
    private boolean ativa;
    private int episodiosPorTemporada;
    private int minutosPorEpisodio;

    // Get's
    public int getTemporadas() {
        return temporadas;
    }

    public boolean isAtiva() {
        return ativa;
    }

    public int getEpisodiosPorTemporada() {
        return episodiosPorTemporada;
    }

    public int getMinutosPorEpisodio() {
        return minutosPorEpisodio;
    }

    // Setter's
    public void setTemporadas(int temporadas) {
        this.temporadas = temporadas;
    }

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

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

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

    // Override = Subscrever
    @Override
    public int getDuracaoEmMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodio;
    }
}

Filme

// Pacotes
package br.com.alura.screematch.modelos;

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

public class Filme extends Titulo implements Classificavel {
    //Classes
    private String diretor;

    // Get's
    public String getDiretor() {
        return diretor;
    }

    // Set's
    public void setDiretor(String diretor) {
        this.diretor = diretor;
    }

    // Override - Classificacao
    @Override
    public int getClassificacao() {
        return (int) pegaMedia() / 2;
    }

}

Organização e pasta

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Oi, Luis! Tudo bem?

Parabéns pela dedicação e pelos códigos, é muito bacana poder acompanhar a sua evolução por aqui! Espero que continue a explorar os conteúdos para ampliar seu conhecimento e desenvolver novas habilidades. Caso tenha restado alguma dúvida em relação a qualquer conteúdo do curso ou atividade, não hesite em perguntar, estou disponível e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!