Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

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

Desafio: Polimorfismo com Herança

Título

package br.com.alura.screenmatch.modelos;

public class Titulo {
    private String nome;
    private int anoLancamento;
    private boolean inclusoPlano;
    private double somaAvaliacoes;
    private int totalAvaliacoes;
    private int duracaoEmMinutos;

    public String getNome() {
        return nome;
    }

    public int getAnoLancamento() {
        return anoLancamento;
    }

    public boolean isInclusoPlano() {
        return inclusoPlano;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

    public int getTotalAvaliacoes() {
        return totalAvaliacoes;
    }

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

    public void setAnoLancamento(int anoLancamento) {
        this.anoLancamento = anoLancamento;
    }

    public void setInclusoPlano(boolean inclusoPlano) {
        this.inclusoPlano = inclusoPlano;
    }

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

    public void exibeFichaTecnica() {
        System.out.println("Nome do Título: " + nome);
        System.out.println("Ano de Lançamento: " + anoLancamento);
    }

    public void avalia(double nota){
        somaAvaliacoes += nota;
        totalAvaliacoes++;
    }

    public double obtemMedia(){
        return  somaAvaliacoes / totalAvaliacoes;
    }
}

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;
    }
}

Série

package br.com.alura.screenmatch.modelos;

public class Serie extends Titulo {
    private int temporadas;
    private int epsTemporada;
    private int minutosEpisodio;
    private boolean ativa;

    public int getTemporadas() {
        return temporadas;
    }

    public int getEpsTemporada() {
        return epsTemporada;
    }

    public int getMinutosEpisodio() {
        return minutosEpisodio;
    }

    public boolean isAtiva() {
        return ativa;
    }

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

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

    public void setMinutosEpisodio(int minutosEpisodio) {
        this.minutosEpisodio = minutosEpisodio;
    }

    public void setEpsTemporada(int epsTemporada) {
        this.epsTemporada = epsTemporada;
    }

    @Override
    public int getDuracaoEmMinutos() {
        return temporadas * epsTemporada * minutosEpisodio;
    }
}

Calculadora de Tempo

package br.com.alura.screenmatch.calculos;

import br.com.alura.screenmatch.modelos.Titulo;

public class CalcularTempo {
    private int tempoTotal = 0;

    public int getTempoTotal() {
        return this.tempoTotal;
    }

    public void inclui(Titulo titulo){
        this.tempoTotal += titulo.getDuracaoEmMinutos();
    }
}

Principal

import br.com.alura.screenmatch.calculos.CalcularTempo;
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("Jogador Nº 1");
        filme1.setAnoLancamento(2018);
        filme1.setDuracaoEmMinutos(140);
        filme1.setDiretor("Steven Spielberg");

        filme1.exibeFichaTecnica();
        filme1.avalia(7.4);
        filme1.avalia(9.4);
        filme1.avalia(6.8);
        System.out.println("Total de Avalições: " + filme1.getTotalAvaliacoes());
        System.out.println(filme1.obtemMedia());

        Filme filme2 = new Filme();
        filme2.setNome("Tropa de Elite");
        filme2.setAnoLancamento(2007);
        filme2.setDuracaoEmMinutos(115);
        filme2.setDiretor("José Padilha");

        Serie serie1 = new Serie();
        serie1.setNome("Lucifer");
        serie1.setAnoLancamento(2021);
        serie1.setTemporadas(6);
        serie1.setEpsTemporada(13);
        serie1.setMinutosEpisodio(45);
        serie1.exibeFichaTecnica();
        System.out.println("A Sua Maratona vai durar: " + serie1.getDuracaoEmMinutos() + " Minutos.");

        CalcularTempo calculadora = new CalcularTempo();
        calculadora.inclui(filme1);
        calculadora.inclui(filme2);
        calculadora.inclui(serie1);
        System.out.println("Tempo total para assistir à esses Títulos: " + calculadora.getTempoTotal());
    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Oi, Kevin! Como vai?

Com o que você descreveu, sua solução ficou organizada, e o uso de Math.min e Math.max para avaliar os preços chamou atenção pela clareza. O método exibirDetalhes() na subclasse também ficou direto e fácil de entender.

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