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: declarando constructores

te presento la clase PrincipalConListas que implementa el código que has proporcionado, junto con explicaciones detalladas para ayudarte a comprender cada paso:

import java.util.ArrayList;

class Titulo { private String nombre;

public Titulo(String nombre) {
    this.nombre = nombre;
}

public String getNombre() {
    return nombre;
}

}

class Pelicula extends Titulo { private int clasificacion;

public Pelicula(String nombre, int anio) {
    super(nombre);
}

public void evalua(int clasificacion) {
    this.clasificacion = clasificacion;
}

public int getClasificacion() {
    return clasificacion;
}

}

class Serie extends Titulo { public Serie(String nombre, int anio) { super(nombre); } }

public class PrincipalConListas { public static void main(String[] args) { Pelicula favorita = new Pelicula("El señor de los anillos", 2001); favorita.evalua(10);

    Pelicula otra = new Pelicula("John Wick", 2014);
    otra.evalua(9);

    Serie serie = new Serie("La Casa de Papel", 2017);

    ArrayList<Titulo> lista = new ArrayList<>();
    lista.add(favorita);
    lista.add(otra);
    lista.add(serie);

    for (Titulo item : lista) {
        System.out.println("Nombre: " + item.getNombre());

        // Verificar si el item es una instancia de Pelicula
        if (item instanceof Pelicula) {
            Pelicula pelicula = (Pelicula) item; // Realizar el casting

            // Verificar si la película tiene una clasificación mayor a 2
            if (pelicula.getClasificacion() > 2) {
                System.out.println("Clasificacion: " + pelicula.getClasificacion());
            }
        }
    }
}

}

Explicación:

Clases Titulo, Pelicula y Serie:

Titulo: Clase base que representa cualquier título (película o serie) y almacena su nombre. Pelicula: Clase derivada de Titulo que representa una película. Almacena su clasificación y proporciona métodos para evaluarla y obtenerla. Serie: Clase derivada de Titulo que representa una serie. No tiene atributos adicionales en este ejemplo. Método main:

Crea instancias de Pelicula y Serie. Crea un ArrayList llamado lista para almacenar objetos de tipo Titulo. Agrega las películas y la serie a la lista. Itera sobre la lista usando un bucle for-each. Para cada elemento item en la lista: Imprime el nombre del título. Verifica si item es una instancia de Pelicula usando instanceof. Si es así, realiza un casting a Pelicula para acceder a sus métodos específicos. Verifica si la clasificación de la película es mayor que 2. Si es así, imprime la clasificación. Puntos clave:

instanceof: Se utiliza para verificar si un objeto es una instancia de una clase específica. Esto es crucial antes de realizar un casting, ya que un casting incorrecto puede generar una excepción en tiempo de ejecución. Casting: Convierte un objeto de un tipo a otro tipo compatible. En este caso, convertimos un objeto de tipo Titulo a Pelicula para poder acceder al método getClasificacion(). Polimorfismo: La capacidad de un objeto de tomar muchas formas. En este caso, el ArrayList lista puede contener objetos de diferentes clases derivadas de Titulo, lo que permite tratarlos de manera uniforme a través de la clase base. Salida esperada:

Nombre: El señor de los anillos Clasificacion: 10 Nombre: John Wick Clasificacion: 9 Nombre: La Casa de Papel

1 respuesta

Hola Frank, espero que estés bien

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!