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

[Faça como eu fiz] Polimorfismo com Herança

Agora é com você! Faça o mesmo procedimento que eu fiz na aula, aplicando os conceitos de herança e polimorfismo, criando para isso as classes Titulo, Serie e CalculadoraDeTempo.


import java.util.Scanner;
public class Titulo {
    private String nome;
    private int anoDeLancamento;
    private int totalDeAvaliacoes;
    private int duracaoEmMinutos;
    private double somaDasAvaliacoes;
    private boolean incluidoNoPlano;

    Scanner sc = new Scanner(System.in);
    
    public String getNome() {
        return nome;
    }

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

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

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

    public int getTotalDeAvaliacoes() {
        return totalDeAvaliacoes;
    }

    public void setTotalDeAvaliacoes(int totalDeAvaliacoes) {
        this.totalDeAvaliacoes = totalDeAvaliacoes;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

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

    public double getSomaDasAvaliacoes() {
        return somaDasAvaliacoes;
    }

    public void setSomaDasAvaliacoes(double somaDasAvaliacoes) {
        this.somaDasAvaliacoes = somaDasAvaliacoes;
    }

    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

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

    public void cadastrarFichaTecnica() {
        System.out.println("===== ENTRADA DADOS =====");
        System.out.println("Nome do Filme: ");
        this.nome = sc.nextLine();
        System.out.println("Insira o ano do lancamento: ");
        this.anoDeLancamento = sc.nextInt();
        System.out.println("Insira a duração em minutos: ");
        this.duracaoEmMinutos = sc.nextInt();

    }

    public void exibirFichaTecnica() {
        System.out.println("===== SAIDA DADOS =====");
        System.out.println("Nome do filme: " + this.getNome());
        System.out.println("Ano de Lançamento: " + this.getAnoDeLancamento());
        System.out.println("Duração do filme: " + this.getDuracaoEmMinutos() + " minutos");
    }

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

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

public class Serie extends Titulo {
    private String nomeSerie;
    private int temporadas;
    private int episodiosPorTemporadas;
    private boolean ativa;
    private int minutosPorEpisodio;
    int result = 0;

    public int getTemporadas() {
        return temporadas;
    }

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

    public int getEpisodiosPorTemporadas() {
        return episodiosPorTemporadas;
    }

    public void setEpisodiosPorTemporadas(int episodiosPorTemporadas) {
        this.episodiosPorTemporadas = episodiosPorTemporadas;
    }

    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 getDuracaoEmMinutos() {
        return temporadas * episodiosPorTemporadas * minutosPorEpisodio;
    }

    public void cadastrarFichaTecnicaSerie() {
        System.out.println("===== ENTRADA DADOS =====");
        System.out.println("Nome da Série: ");
        setNome(this.nomeSerie = sc.nextLine());
        System.out.println("Insira o ano do lancamento: ");
        this.setAnoDeLancamento(sc.nextInt());
        System.out.println("Duração em minutos: ");
        this.minutosPorEpisodio = sc.nextInt();
        System.out.println("Quantidade de temporadas: ");
        this.temporadas = sc.nextInt();
        System.out.println("Quantidade de episódios por temporada: ");
        this.episodiosPorTemporadas = sc.nextInt();
    }

    public void exibirFichaTecnicaSerie() {
        System.out.println("===== SAIDA DADOS =====");
        System.out.println("Nome da série: " + this.nomeSerie);
        System.out.println("Ano de série: " + this.getAnoDeLancamento());
        System.out.println("Duração em minutos por episódio: " + this.minutosPorEpisodio + " minutos");
        System.out.println("Quantidade de temporadas por série: " + this.episodiosPorTemporadas);
        System.out.println("Tempo total todos os episódios da série: " + getDuracaoEmMinutos());
    }
}

public class CalculadoraDeTempo {
    private int tempoTotal = 0;

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

    public void adiciona(Titulo titulo) {
        this.tempoTotal += titulo.getDuracaoEmMinutos();
    }
}
2 respostas

Continuação!


public class Principal {
    public static void main(String[] args) {
        Titulo titulo = new Titulo();
        Serie serie = new Serie();
        titulo.cadastrarFichaTecnica();
        serie.cadastrarFichaTecnicaSerie();
        titulo.exibirFichaTecnica();
        serie.exibirFichaTecnicaSerie();

        CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
        calculadora.adiciona(titulo);
        calculadora.adiciona(serie);
        System.out.println("Tempo total para maratonar: " + titulo.getNome() + " e " +  serie.getNome()
                            + " são: " + calculadora.getTempoTotal() + " minutos.");
    }
}

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

solução!

Boa tarde Carlos! Tudo bem com você?

Meus parabéns pela conclusão da atividade. Seu código atende muito bem a proposta da aula. Gostaria de aproveitar a oportunidade e deixar como recomendação a leitura do artigo Herança, Interfaces e Polimorfismo (Java) para que você possa aprofundar ainda mais no conhecimento sobre polimorfismo.

Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!