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.
- 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);
}
}
- 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);
}
}
- 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!