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

aplicando polimorfismo con herencia

package polimorfismo_herencia;

//2-Clase Película:
//La clase Película hereda de Título y añade el atributo director:

public class Pelicula extends Titulo {
    private String director;

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }
}
package polimorfismo_herencia;

//Clase Título:
//Crea una nueva clase llamada Título
public class Titulo {
    private String nombre;
    private int fechaDeLanzamiento;
    private int duracionEnMinutos;
    private boolean incluidoEnElPlan;
    private double sumaDeLasEvaluaciones;
    private int totalDelasEvaluaciones;

    public String getNombre() {
        return nombre;
    }

    public int getFechaDeLanzamiento() {
        return fechaDeLanzamiento;
    }

    public int getDuracionEnMinutos() {
        return duracionEnMinutos;
    }

    public boolean isIncluidoEnElPlan() {
        return incluidoEnElPlan;
    }

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

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

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

    public void setIncluidoEnElPlan(boolean incluidoEnElPlan) {
        this.incluidoEnElPlan = incluidoEnElPlan;
    }

    public int getTotalDelasEvaluaciones(){
        return totalDelasEvaluaciones;
    }

    public void muestraFichaTecnica(){
        System.out.println("El nombre es: " + this.nombre);
        System.out.println("Su fecha de lanzamiento es: " + this.fechaDeLanzamiento);
        System.out.println("Duración en minutos: "+ getDuracionEnMinutos());
    }

    public void evalua(double nota){
        sumaDeLasEvaluaciones += nota;
        totalDelasEvaluaciones++;
    }

    public double calculaMedia(){
        return sumaDeLasEvaluaciones / totalDelasEvaluaciones;
    }
}
package polimorfismo_herencia;

//3-Clase Serie:
//Crea la clase Serie, que también hereda de Título:

public class Serie extends Titulo {
    int temporadas;
    int episodiosPorTemporada;
    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;
    }
}
package polimorfismo_herencia;

//4-Clase CalculadoraDeTiempo:
//Crea la clase CalculadoraDeTiempo

public class CalculadoraDeTiempo {
    private int tiempoTotal;

    public int getTiempoTotal() {
        return tiempoTotal;
    }

    public void incluye(Titulo titulo){
        this.tiempoTotal += titulo.getDuracionEnMinutos();
    }
}
//
package polimorfismo_herencia;

public class Principal {
    public static void main(String[] args) {
        Pelicula peliUno = new Pelicula();
        peliUno.setNombre("Encanto");
        peliUno.setFechaDeLanzamiento(2021);
        peliUno.setDuracionEnMinutos(120);
        peliUno.setIncluidoEnElPlan(true);

        peliUno.muestraFichaTecnica();
        peliUno.evalua(10);
        peliUno.evalua(10);
        peliUno.evalua(7.8);
        System.out.println(peliUno.getTotalDelasEvaluaciones());
        System.out.println("Media de evaluaciones de la película: " + peliUno.calculaMedia());

        Serie casaDragon = new Serie();
        casaDragon.setNombre("La casa del dragón");
        casaDragon.setFechaDeLanzamiento(2022);
        casaDragon.setTemporadas(1);
        casaDragon.setMinutosPorEpisodio(50);
        casaDragon.setEpisodiosPorTemporada(10);
        casaDragon.muestraFichaTecnica();
        System.out.println(casaDragon.getDuracionEnMinutos());

        CalculadoraDeTiempo calculadora = new CalculadoraDeTiempo();
        calculadora.incluye(peliUno);
        calculadora.incluye(casaDragon);
        System.out.println(calculadora.getTiempoTotal());
    }
}
1 respuesta

¡Hola, Carlos, espero que estés bien!

Parece que estás trabajando en un ejercicio sobre herencia y polimorfismo en Java, y estás en el camino correcto. Has creado una estructura básica de clases que implementan estos conceptos. Aquí hay algunos puntos que podrías considerar para asegurarte de que estás aplicando bien el polimorfismo:

  1. Herencia: Ya has implementado la herencia correctamente. Las clases Pelicula y Serie heredan de Titulo, lo que significa que ambas pueden ser tratadas como un Titulo. Esto es fundamental para el polimorfismo.

  2. Polimorfismo: Estás utilizando polimorfismo cuando pasas objetos de Pelicula y Serie a la clase CalculadoraDeTiempo a través del método incluye(Titulo titulo). La clave aquí es que CalculadoraDeTiempo no necesita saber si está trabajando con una Pelicula o una Serie, solo necesita saber que es un Titulo.

  3. Sobrescritura de métodos: Has sobrescrito el método getDuracionEnMinutos en la clase Serie para calcular la duración total de una serie. Esto es un buen ejemplo de polimorfismo, ya que el método se comporta de manera diferente dependiendo de si el objeto es una Serie o una Pelicula.

  4. Ejemplo práctico: En el método main, cuando llamas a calculadora.incluye(peliUno) y calculadora.incluye(casaDragon), estás utilizando el método incluye de manera polimórfica. La CalculadoraDeTiempo suma la duración de cualquier objeto que sea un Titulo, sin importar si es una Pelicula o una Serie.

Tu código parece estar bien encaminado para demostrar herencia y polimorfismo. Si estás buscando expandirlo, podrías considerar añadir más métodos o atributos específicos a Pelicula o Serie que no estén presentes en Titulo, o crear más clases que hereden de Titulo para ver cómo se comporta el polimorfismo con más tipos de objetos.

Espero haber ayudado y buenos estudios!