Contenido del curso
Pensando en objetos
Construcción de clases y modelado de objetos
- 10

Métodos estáticos para clases utilitarias en Java
08:43 min - 11

Constantes en Java: inmutabilidad con static final
04:08 min - 12

Constructores en Java para objetos con datos
08:10 min - 13

Gestión de memoria en Java: stack, heap y garbage collector
07:04 min - 14

Encapsulamiento en Java: Atributos privados y métodos getter y setter
09:26 min - 15

Listas en Java: agregar, recorrer y eliminar
11:12 min - 16

Asociación, agregación y composición en Java
03:45 min - 17

Menú interactivo en Java con switch
11:37 min - 18

Buscar y eliminar películas en Java
09:20 min
Estructuras de datos y Java moderno
- 19

Streams y lambdas para filtrar listas en Java
11:55 min - 20

Ordenar y transformar listas con streams en Java
11:49 min - 21

Validación de entrada con enums en Java
11:56 min - 22

Excepciones personalizadas en Java
08:16 min - 23

Records para simplificar código inmutable en Java
06:59 min - 24

Mapas en Java para contar visualizaciones de películas
09:47 min - 25

Leer archivos planos con Java nio
13:48 min - 26

Escribir en archivos planos con Files.writeString
09:50 min
Reutilización y diseño orientado a objetos
Operador instanceof para identificar tipos de objetos en Java
Resumen
La programación orientada a objetos brinda herramientas clave para construir sistemas flexibles y robustos. El polimorfismo y el operador instanceof permiten trabajar con listas de objetos mixtos y aplicar lógicas diferenciadas según el tipo real de cada objeto. Aquí repasamos estos conceptos aplicados a una plataforma audiovisual, facilitando su comprensión con ejemplos prácticos y recomendaciones.
¿Qué es el polimorfismo en programación orientada a objetos?
El polimorfismo es el cuarto pilar fundamental de POO. Permite tratar distintos tipos de objetos—como películas y documentales—como si fueran del mismo tipo, siempre y cuando compartan una estructura base o hereden de una clase común (Contenido).
- Puedes poner películas y documentales juntos en una lista de tipo Contenido.
- El sistema luego decide qué lógica aplicar a cada uno según su tipo en tiempo de ejecución.
- Favorece la reutilización de código y la ampliación del sistema con nuevas clases.
¿Cómo ayuda el operador instanceof a determinar el tipo real de un objeto?
El operador instanceof permite, al momento de ejecutar el programa, saber si un objeto es de un tipo específico. Esto es útil cuando se tiene una lista de objetos de tipo base, pero necesitas aplicar lógica exclusiva a, por ejemplo, un documental.
- Permite diferenciar películas de documentales dentro de la misma colección según su tipo real.
- Usando instanceof, es posible adaptar el proceso de guardado y lectura de archivos según el tipo de contenido.
- El patrón pattern variable permite simplificar el uso de instanceof y el casting inmediato.
Ejemplo práctico dentro de la plataforma
- Se modifica el guardado de archivos para que cada línea indique el tipo de contenido (película o documental).
- Para documentales, además se almacena el narrador dentro de la línea de datos.
- Al leer el archivo, se valida el tipo con instanceof y se instancia la clase adecuada: new Película o new Documental.
¿Qué modificaciones son necesarias para manejar correctamente múltiples tipos de contenido?
Una vez que hay películas y documentales:
-
El archivo debe registrar el tipo de contenido como primer dato.
-
Para documentales, hay que almacenar un campo adicional: el narrador.
-
Al leer el archivo, se utiliza la posición de los datos para crear el objeto adecuado.
-
Se implementan métodos de búsqueda específicos (ej. getPelículas y getDocumentales) usando filtros y el operador instanceof:
List<Pelicula> getPeliculas() { return contenidos.stream() .filter(contenido -> contenido instanceof Pelicula) .map(contenido -> (Pelicula) contenido) .collect(Collectors.toList()); }
List<Documental> getDocumentales() { return contenidos.stream() .filter(contenido -> contenido instanceof Documental) .map(contenido -> (Documental) contenido) .collect(Collectors.toList()); }
-
Al buscar por tipo de contenido, el usuario selecciona entre películas y documentales y se devuelve una lista filtrada según la selección.
¿Cuáles son las ventajas de aplicar polimorfismo e instanceof?
El uso efectivo de polimorfismo e instanceof ayuda a mantener el código organizado, flexible y adaptable:
- Permite tratar clases distintas a través de una interfaz común.
- Facilita la extensión del sistema agregando nuevos tipos sin modificar lo existente.
- instanceof asegura que cada tipo de contenido reciba el tratamiento adecuado durante la ejecución.
Qué interesante es cómo conceptos como polimorfismo e instanceof pueden facilitar la creación de sistemas altamente escalables. ¿Te gustaría experimentar con lógicas personalizadas para otros tipos de contenido? ¡Comparte tu experiencia y enriquece la conversación!