1
resposta

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

package br.com.alura.Screenmatch.modellos;

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

public int getTotalDeAvaliacoes(){
return totalDeAvaliacoes;
}

public String getNome() {
return nome;
}

public int getAnoDeLancamento() {
return anoDeLancamento;
}

public boolean isIncluidoNoPlano() {
return incluidoNoPlano;
}

public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}

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

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

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

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

public void exibeFichaTecnica(){
System.out.println("Nome do filme: " + nome);
System.out.println("Ano de lançamento: " + anoDeLancamento);
}

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

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

}

package br.com.alura.Screenmatch.modellos;

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


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

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

public int getMinutosPorEpisodio() {
return minutosPorEpisodio;
}

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

@Override //anotacao no momento nao tem muita importancia
public int getDuracaoEmMinutos() {
return temporadas * episodiosPorTemporrada * minutosPorEpisodio;
}

}

package br.com.alura.Screenmatch.calculos;

import br.com.alura.Screenmatch.modellos.Titulo;

public class CalculadoraDeTempo {
private int tempoTotal;

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

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

Oi, Henrique! Como vai?

Agradeço por compartilhar.

Gostei de como você aplicou herança e polimorfismo usando extends na classe Serie e sobrescrevendo o método getDuracaoEmMinutos(). Isso mostra bem como um mesmo método pode ter comportamentos diferentes dependendo do tipo do objeto, o que é um ponto importante da orientação a objetos.

Você pode usar o método toString() para melhorar a exibição dos objetos quando você faz um System.out.println().


public String toString() {
    return "Titulo: " + nome + " (" + anoDeLancamento + ")";
}

Esse código permite que, ao imprimir o objeto, você veja informações mais claras ao invés de algo genérico. Isso facilita bastante na depuração e leitura do sistema.

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