Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

1
resposta

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

import br.com.alura.screenmatch.calculos.CalculadoraDeTempo;
import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;
public class Principal {
    public static void main(String[] args) {
        Filme meuFilme = new Filme();
        meuFilme.setNome("Vigadores: Guerra Infinita");
        meuFilme.setAnoDeLancamento(2018);
        meuFilme.setDuracaoEmMinutos(149);
        meuFilme.setIncluidoNoPlano(true);
        System.out.println("A duração do filme é: " + meuFilme.getDuracaoEmMinutos());
        meuFilme.exibeFichaTecnica();
        meuFilme.avalia(8);
        meuFilme.avalia(5);
        meuFilme.avalia(10);
        System.out.println("Total de avaliações: " + meuFilme.getTotalDeAvaliacoes());
        System.out.println(meuFilme.calculoMedia());
        //meuFilme.somaDasAvaliacoes = 10;
        //meuFilme.totalDeAvaliacoes = 1;
        //System.out.println(meuFilme.calculoMedia());
        Serie lost = new Serie();
        lost.setNome("Lost");
        lost.setAnoDeLancamento(2000);
        lost.exibeFichaTecnica();
        lost.setTemporadas(10);
        lost.setEpisodiosPorTemporada(10);
        lost.setMinutosPorEpisodios(50);
        System.out.println("Duração em minutos de todos os episodios da serie: " + lost.getDuracaoEmMinutos());
        Filme outroFilme = new Filme();
        outroFilme.setNome("Avatar");
        outroFilme.setAnoDeLancamento(2009);
        outroFilme.setDuracaoEmMinutos(162);
        outroFilme.setIncluidoNoPlano(true);
        System.out.println("A duração do filme é: " + outroFilme.getDuracaoEmMinutos());
        CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
        calculadora.inclui(meuFilme);
        calculadora.inclui(outroFilme);
        calculadora.inclui(lost);
        System.out.println(calculadora.getTempoTotal());
    }
}
package br.com.alura.screenmatch.modelos;
public class Titulo {
    private String nome;
    private int anoDeLancamento;
    private boolean incluidoNoPlano;
    private double somaDasAvalicoes;
    private int totalDeAvaliacoes;
    private int duracaoEmMinutos;
    public String getNome() {
        return nome;
    }
    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }
    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }
    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }
    public int getTotalDeAvaliacoes(){
        return totalDeAvaliacoes;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public void setIncluidoNoPlano(boolean incluidoNoPlano) {
        this.incluidoNoPlano = incluidoNoPlano;
    }
    public void setDuracaoEmMinutos(int duracaoEmMinutos) {
        this.duracaoEmMinutos = duracaoEmMinutos;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }
    public void exibeFichaTecnica (){
        System.out.println("O filme é: " + nome);
        System.out.println("O ano de lançamento é: " + anoDeLancamento);
        System.out.println("Você esta no plano " + incluidoNoPlano);
    }
    public void avalia (double nota){
        somaDasAvalicoes += nota;
        totalDeAvaliacoes++;
    }
    public double calculoMedia (){
        return somaDasAvalicoes / totalDeAvaliacoes;
    }
}
package br.com.alura.screenmatch.modelos;

public class Filme extends Titulo {
    private String Diretor;

    public void setDiretor(String diretor) {
        Diretor = diretor;
    }
    public String getDiretor() {
        return Diretor;
    }
}
package br.com.alura.screenmatch.modelos;
public class Serie extends Titulo {
    private int temporadas;
    private boolean ativa;
    private int episodiosPorTemporada;
    private int minutosPorEpisodios;
    public int getTemporadas() {
        return temporadas;
    }
    public void setTemporadas(int temporadas) {
        this.temporadas = temporadas;
    }
    public boolean isAtiva() {
        return ativa;
    }
    public void setAtiva(boolean ativa) {
        this.ativa = ativa;
    }
    public int getEpisodiosPorTemporada() {
        return episodiosPorTemporada;
    }
    public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
        this.episodiosPorTemporada = episodiosPorTemporada;
    }
    public int getMinutosPorEpisodios() {
        return minutosPorEpisodios;
    }
    public void setMinutosPorEpisodios(int minutosPorEpisodios) {
        this.minutosPorEpisodios = minutosPorEpisodios;
    }
    @Override
    public int getDuracaoEmMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodios;
    }
}

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

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

Oi, Alfredo! Como vai?

No seu exemplo, ficou bem claro como você organizou herança e usou o polimorfismo ao sobrescrever getDuracaoEmMinutos() na classe Serie. Neste ponto, a forma como você estruturou os objetos deixou o cálculo de duração bem flexível.

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