Skip to content
Tecnología · 3o de Preparatoria

Ideas de aprendizaje activo

Herencia y Polimorfismo en POO

La herencia y el polimorfismo son conceptos abstractos que los estudiantes internalizan mejor al construir y manipular código en tiempo real. Cuando trabajan en equipos o refactorizan ejemplos concretos, transforman ideas teóricas en soluciones tangibles que revelan cómo estos pilares mejoran la organización y flexibilidad del software.

Aprendizajes Esperados SEPSEP EMS: Programación Orientada a ObjetosSEP EMS: Arquitectura de Software
25–45 minParejas → Toda la clase4 actividades

Actividad 01

Parejas Codificadoras: Jerarquía de Animales

Las parejas definen una clase base Animal con métodos como comer() y moverse(). Luego crean subclases Perro y Ave que heredan y sobrescriben mover(). Finalmente, prueban polimorfismo en una lista de animales y ejecutan el código para observar resultados uniformes.

¿Cómo la herencia reduce la duplicación de código y mejora la mantenibilidad?

Consejo de FacilitaciónDurante Parejas Codificadoras, pida a los estudiantes que dibujen diagramas UML en papel antes de codificar para visualizar la relación 'es un' entre clases.

Qué observarPide a los estudiantes que escriban en un papel: 1) Un ejemplo de una relación 'es un' aplicable a herencia. 2) Una frase explicando la diferencia clave entre sobrecarga y sobrescritura de métodos.

RecordarComprenderAnalizarConciencia SocialAutoconcienciaToma de Decisiones
Generar Clase Completa

Actividad 02

Sesión de Exploración al Aire Libre45 min · Grupos pequeños

Grupos Pequeños: Figuras Polimórficas

En grupos de 4, diseñan clases Figura con calcularArea() abstracta, extendida por Círculo y Rectángulo. Implementan una función que dibuja y calcula áreas de un arreglo polimórfico. Comparten código en proyector para depuración colectiva.

¿De qué manera el polimorfismo permite escribir código más flexible y extensible?

Consejo de FacilitaciónEn Grupos Pequeños, entregue tarjetas con nombres de clases y métodos para que organicen un código polimórfico funcional antes de escribirlo.

Qué observarPresenta un fragmento de código simple con una clase base y dos subclases. Pregunta: '¿Qué método se ejecutaría si llamamos a `objeto.metodo()` donde `objeto` es una instancia de una subclase? ¿Por qué?'

RecordarComprenderAnalizarConciencia SocialAutoconcienciaToma de Decisiones
Generar Clase Completa

Actividad 03

Clase Entera: Refactorización en Vivo

Proyecta código duplicado de formas geométricas. La clase propone colectivamente una jerarquía con herencia y polimorfismo. Codifica cambios paso a paso, votando opciones y ejecutando pruebas en tiempo real.

¿Por qué la sobrecarga y la sobrescritura de métodos son fundamentales en el polimorfismo?

Consejo de FacilitaciónEn la Refactorización en Vivo, proyecte el código en pantalla y guíe a los estudiantes paso a paso, destacando cómo cada cambio afecta el comportamiento del programa.

Qué observarPlantea la siguiente pregunta al grupo: 'Imagina que estás construyendo un sistema para una tienda. ¿Cómo usarías herencia y polimorfismo para manejar diferentes tipos de productos (libros, electrónicos, ropa)? ¿Qué beneficios obtendrías?'

RecordarComprenderAnalizarConciencia SocialAutoconcienciaToma de Decisiones
Generar Clase Completa

Actividad 04

Individual: Extensión Personalizada

Cada estudiante extiende una clase Banco dada con subclases CuentaAhorro y CuentaCheques, aplicando polimorfismo en transacciones. Suben su código refactorizado a una plataforma compartida para revisión par.

¿Cómo la herencia reduce la duplicación de código y mejora la mantenibilidad?

Consejo de FacilitaciónPara la Extensión Personalizada, pida a los estudiantes que documenten cada decisión de diseño con comentarios en el código explicando por qué usaron herencia o polimorfismo.

Qué observarPide a los estudiantes que escriban en un papel: 1) Un ejemplo de una relación 'es un' aplicable a herencia. 2) Una frase explicando la diferencia clave entre sobrecarga y sobrescritura de métodos.

RecordarComprenderAnalizarConciencia SocialAutoconcienciaToma de Decisiones
Generar Clase Completa

Plantillas

Plantillas que acompañan estas actividades de Tecnología

Úsalas, edítalas, imprímelas o compártelas.

Algunas notas para enseñar esta unidad

Enseñar herencia y polimorfismo requiere enfocarse en el diseño antes que en la sintaxis. Los profesores más efectivos comienzan con ejemplos cotidianos —animales, vehículos, figuras geométricas— para que los estudiantes identifiquen relaciones jerárquicas naturales. Es clave evitar que los estudiantes memoricen jerarquías y, en cambio, guíarlos a pensar en cómo modelar el mundo mediante clases y métodos. La refactorización en vivo y los errores intencionales ayudan a corregir malentendidos sobre el comportamiento dinámico de estos conceptos.

Al finalizar las actividades, los estudiantes demuestran comprensión al diseñar jerarquías de clases funcionales, sobrescribir métodos correctamente y explicar con ejemplos la relación entre clases base y derivadas. La participación activa y la resolución de errores en tiempo real confirman que han conectado teoría con práctica.


Cuidado con estas ideas erróneas

  • During Parejas Codificadoras: Jerarquía de Animales, watch for students who treat the inheritance relationship as a simple copy-paste of attributes instead of modeling an 'is-a' relationship like Perro es un Animal.

    Durante la actividad, pida a cada pareja que presente su diagrama UML y explique cómo sobrescribiría un método como `hacerSonido()` para que refleje la relación específica de su clase hija.

  • During Grupos Pequeños: Figuras Polimórficas, watch for students who believe they need to cast objects to their specific type before calling a method, indicating a misunderstanding of dynamic polymorphism.

    En la actividad, entregue una lista de objetos de tipo FiguraGeometrica y pida a los estudiantes que llamen al método `calcularArea()` sin casteo, luego analicen por qué el método correcto se ejecuta automáticamente.

  • During Clase Entera: Refactorización en Vivo, watch for students who confuse method overloading with overriding, especially when they try to add a new parameter to a parent method in a child class.

    Durante la refactorización, detenga el proceso y pregunte: '¿Este cambio modifica el comportamiento heredado o añade una nueva funcionalidad?'. Luego, guíelos a identificar si están sobrescribiendo o sobrecargando basándose en el contexto de la clase.


Metodologías usadas en este resumen