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

Aplicando polimorfismo com herança

Titulo:

package alura.desafioheranca.modelo;

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


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

    public String getNome(){
        return nome;
    }

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

    public int getAnoDeLancamento(){
        return anoDeLancamento;
    }

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

    public int getDuracaoEmMinutos(){
        return duracaoEmMinutos;
    }

    public void setIncluidoNoPlano(){
        if (anoDeLancamento >= 2022){
            incluidoNoPlano = false;
        }
        incluidoNoPlano = true;
    }

    public boolean getIncluidoNoPlano(){
        return incluidoNoPlano;
    }

    public int getTotalAvaliacoes(){
        return totalAvaliacoes;
    }

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

    public double pegaMedia(){
        if (totalAvaliacoes == 0){
            return 0;
        }
        return somaDasAvaliacoes / totalAvaliacoes;
    }

    public void exibirFichaTecnica(){
        System.out.printf("Nome do Filme: %s", getNome());
        System.out.printf("\nAno de lançamento: %d", getAnoDeLancamento());
        System.out.printf("\nDuraçao: %d minutos", getDuracaoEmMinutos());
        System.out.printf("\nIncluido no plano: %b", getIncluidoNoPlano());
        System.out.printf("\nTotal de avaliaçoes: %d", getTotalAvaliacoes());
        System.out.printf("\nMédia Geral: %.1f ", pegaMedia());
    }
}

Filme:

package alura.desafioheranca.modelo;

public class Filme extends Titulo {
    private String diretor;

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

}

Serie:

package alura.desafioheranca.modelo;

public class Serie extends Titulo {
    private int temporadas;
    private int epPorTemp;
    private boolean ativa;
    private int minutosPorEpisodio;

    public int getTemporadas() {
        return temporadas;
    }

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

    public int getEpPorTemp() {
        return epPorTemp;
    }

    public void setEpPorTemp(int epPorTemp) {
        this.epPorTemp = epPorTemp;
    }

    public boolean getAtiva() {
        return ativa;
    }

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

    public int getMinutosPorEpisodio() {
        return minutosPorEpisodio;
    }

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

    @Override

    public int getDuracaoEmMinutos(){
        return temporadas * epPorTemp * minutosPorEpisodio;
    }
}

CalculadoraDeTempo:

package alura.desafioheranca.modelo.calculos;

import alura.desafioheranca.modelo.Titulo;

public class CalculaTempo {
    private int tempoTotal;

    public int getTempoTotal(){
        return tempoTotal;
    }

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

Principal:

import alura.desafioheranca.modelo.Filme;
import alura.desafioheranca.modelo.Serie;
import alura.desafioheranca.modelo.calculos.CalculaTempo;

public class Principal {
    public static void main(String[] args) {
        Filme filme = new Filme();
        filme.setNome("Férias Frustradas");
        filme.setAnoDeLancamento(2015);
        filme.setDuracaoEmMinutos(131);
        filme.setIncluidoNoPlano();
        filme.avalia(10);
        filme.avalia(9);
        filme.avalia(7);

        filme.exibirFichaTecnica();
        System.out.println("\n");

        Serie serie = new Serie();
        serie.setNome("Alice in boderland");
        serie.setAnoDeLancamento(2020);
        serie.setIncluidoNoPlano();
        serie.setTemporadas(3);
        serie.setAtiva(true);
        serie.setEpPorTemp(8);
        serie.setMinutosPorEpisodio(40);
        serie.avalia(10);
        serie.avalia(7);
        serie.avalia(10);
        serie.avalia(10);

        serie.exibirFichaTecnica();

        System.out.print("\n");
        CalculaTempo calculadora = new CalculaTempo();
        calculadora.inclui(serie);
        calculadora.inclui(filme);
        System.out.printf("\nTempo total: %d minutos.", calculadora.getTempoTotal());
    }
}

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi, Vinicius! Como vai?

Agradeço por compartilhar.

Gostei muito da sua implementação! Você aplicou bem o conceito de herança ao fazer Filme e Serie herdarem de Titulo, e também usou polimorfismo de forma correta ao sobrescrever o método getDuracaoEmMinutos() na classe Serie. Isso mostra que você entendeu como aproveitar o comportamento da superclasse e adaptá-lo para as necessidades específicas.

Continue praticando dessa forma.

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