Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos en aula: aplicando polimorfismo con herencia

te presento la implementación de las clases Título, Serie y CalculadoraDeTiempo, siguiendo los principios de herencia y polimorfismo, tal como lo vimos en la lección.

  1. Clase Título

Esta clase será la base para representar cualquier tipo de título, ya sea una película o una serie.

class Título { protected String nombre; protected int fechaDeLanzamiento; protected int duracionEnMinutos;

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public int getFechaDeLanzamiento() {
    return fechaDeLanzamiento;
}

public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
    this.fechaDeLanzamiento = fechaDeLanzamiento;
}

public int getDuracionEnMinutos() {
    return duracionEnMinutos;
}

public void setDuracionEnMinutos(int duracionEnMinutos) {
    this.duracionEnMinutos = duracionEnMinutos;
}

public void muestraFichaTecnica() {
    System.out.println("Nombre: " + nombre);
    System.out.println("Fecha de Lanzamiento: " + fechaDeLanzamiento);
    System.out.println("Duración en minutos: " + duracionEnMinutos);
}

}

  1. Clase Serie

Esta clase hereda de Título y añade atributos específicos de las series.

class Serie extends Título { private int temporadas; private int episodiosPorTemporada; private int minutosPorEpisodio;

public int getTemporadas() {
    return temporadas;
}

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

public int getEpisodiosPorTemporada() {
    return episodiosPorTemporada;
}

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

public int getMinutosPorEpisodio() {
    return minutosPorEpisodio;
}

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

@Override
public int getDuracionEnMinutos() {
    return temporadas * episodiosPorTemporada * minutosPorEpisodio;
}

@Override
public void muestraFichaTecnica() {
    super.muestraFichaTecnica();
    System.out.println("Temporadas: " + temporadas);
    System.out.println("Episodios por temporada: " + episodiosPorTemporada);
    System.out.println("Minutos por episodio: " + minutosPorEpisodio);
}

}

  1. Clase CalculadoraDeTiempo

Esta clase utiliza el polimorfismo para calcular el tiempo total de visualización de una colección de títulos.

class CalculadoraDeTiempo { private ArrayList<Título> titulos = new ArrayList<>();

public void incluye(Título titulo) {
    titulos.add(titulo);
}

public int getTiempoTotal() {
    int tiempoTotal = 0;
    for (Título titulo : titulos) {
        tiempoTotal += titulo.getDuracionEnMinutos(); 
    }
    return tiempoTotal;
}

}

Puntos Clave:

Herencia: Serie hereda de Título, reutilizando sus atributos y métodos. Polimorfismo: CalculadoraDeTiempo trabaja con una lista de Título, pero cada título puede ser una película (clase Título) o una serie (clase Serie). El método getDuracionEnMinutos() se ejecuta de forma específica para cada tipo de título gracias al polimorfismo. Sobreescritura de métodos: Serie sobreescribe getDuracionEnMinutos() y muestraFichaTecnica() para adaptarse a sus características particulares. ¡Ahora puedes crear objetos de películas y series, agregarlos a la calculadora y obtener el tiempo total de visualización!

1 respuesta

Hola Frank, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!