Herencia y Polimorfismo en POO
Los estudiantes aplican los principios de herencia para crear jerarquías de clases y polimorfismo para manejar objetos de diferentes tipos de manera uniforme.
Acerca de este tema
La herencia y el polimorfismo son pilares de la programación orientada a objetos que permiten a los estudiantes de 3° de preparatoria crear jerarquías de clases eficientes y código flexible. Con la herencia, extienden clases base para evitar duplicación, como una clase Vehículo que genera subclases como Automóvil y Bicicleta. El polimorfismo, mediante sobrescritura y sobrecarga de métodos, trata objetos de subclases como si fueran del tipo padre, facilitando listas uniformes y algoritmos genéricos.
En el plan SEP de Desarrollo de Aplicaciones y Arquitectura de Software, estos conceptos fomentan la mantenibilidad y extensibilidad del software, respondiendo a preguntas clave sobre reducción de código repetido y flexibilidad. Los estudiantes desarrollan habilidades para modelar problemas reales, como sistemas de inventarios o simuladores, conectando con estándares de POO y arquitectura.
El aprendizaje activo beneficia este tema porque conceptos abstractos como 'is-a' y sobrescritura se vuelven concretos al codificar en vivo, depurar errores colectivos y refactorizar código en grupo. Estas prácticas refuerzan la comprensión profunda y la retención a largo plazo.
Preguntas Clave
- ¿Cómo la herencia reduce la duplicación de código y mejora la mantenibilidad?
- ¿De qué manera el polimorfismo permite escribir código más flexible y extensible?
- ¿Por qué la sobrecarga y la sobrescritura de métodos son fundamentales en el polimorfismo?
Objetivos de Aprendizaje
- Analizar cómo la herencia reduce la duplicación de código mediante la identificación de patrones comunes en clases relacionadas.
- Diseñar jerarquías de clases utilizando herencia para modelar relaciones 'es un' entre objetos.
- Demostrar cómo el polimorfismo permite tratar objetos de diferentes subclases de manera uniforme a través de la sobrescritura de métodos.
- Evaluar la flexibilidad y extensibilidad de una solución de software basada en el uso de polimorfismo.
- Comparar la sobrecarga y la sobrescritura de métodos, explicando su rol específico en el polimorfismo.
Antes de Empezar
Por qué: Es necesario que los estudiantes comprendan qué son las clases, los objetos, los atributos y los métodos antes de poder extenderlos o modificarlos.
Por qué: Los estudiantes deben estar familiarizados con la sintaxis básica del lenguaje de programación y cómo manipular datos para implementar métodos y clases.
Vocabulario Clave
| Herencia | Mecanismo que permite a una clase (subclase o derivada) heredar propiedades y comportamientos de otra clase (superclase o base). Facilita la reutilización de código y la creación de jerarquías. |
| Polimorfismo | Capacidad de un objeto de tomar muchas formas. En POO, se refiere a la habilidad de tratar objetos de diferentes clases de manera uniforme si comparten una superclase común o implementan la misma interfaz. |
| Sobrescritura de métodos (Overriding) | Ocurre cuando una subclase proporciona una implementación específica para un método que ya está definido en su superclase. Permite adaptar el comportamiento heredado. |
| Sobrecarga de métodos (Overloading) | Ocurre cuando existen múltiples métodos con el mismo nombre pero con diferentes listas de parámetros (tipo, número u orden) dentro de la misma clase. Permite realizar la misma operación con distintos tipos de datos de entrada. |
| Clase base / Superclase | La clase de la cual otra clase hereda. Contiene atributos y métodos generales que pueden ser compartidos por sus subclases. |
| Clase derivada / Subclase | La clase que hereda de otra clase. Puede añadir sus propios atributos y métodos, o modificar los heredados. |
Cuidado con estas ideas erróneas
Idea errónea comúnLa herencia solo copia código, no establece relaciones.
Qué enseñar en su lugar
La herencia modela relaciones 'es un' (un Perro es un Animal), permitiendo reutilización y extensión. Actividades de diseño en parejas ayudan a visualizar jerarquías con diagramas UML, corrigiendo esta idea al probar comportamientos sobrescritos.
Idea errónea comúnEl polimorfismo siempre requiere casteo explícito.
Qué enseñar en su lugar
El polimorfismo dinámico usa referencias padre para llamar métodos sobrescritos automáticamente. Demostraciones en grupo con listas de objetos revelan esta magia sin casteo, fortaleciendo la comprensión mediante ejecución y comparación de outputs.
Idea errónea comúnSobrecarga y sobrescritura son lo mismo.
Qué enseñar en su lugar
Sobrecarga crea métodos con misma nombre pero firmas distintas en la misma clase; sobrescritura redefine en subclases. Ejercicios de refactorización en clase distinguen ambos al codificar y testear, aclarando mediante errores de compilación.
Ideas de aprendizaje activo
Ver todas las actividadesParejas 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.
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.
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.
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.
Conexiones con el Mundo Real
- En el desarrollo de videojuegos, la herencia se usa para crear diferentes tipos de personajes (ej. 'Enemigo' hereda de 'Personaje') y el polimorfismo permite que todos los personajes respondan a un comando genérico como 'atacar' de formas distintas.
- Los sistemas de gestión de bases de datos utilizan jerarquías de clases para modelar diferentes tipos de datos y el polimorfismo para ejecutar consultas de manera eficiente sin importar el tipo específico de dato subyacente.
- Los ingenieros de software en empresas como Google o Microsoft aplican estos principios para construir frameworks y librerías complejas, asegurando que el código sea mantenible y escalable para millones de usuarios.
Ideas de Evaluación
Pide 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.
Presenta 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é?'
Plantea 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?'
Preguntas frecuentes
¿Cómo explicar herencia y polimorfismo en POO para preparatoria?
¿Cuál es la diferencia entre herencia y polimorfismo?
¿Cómo el aprendizaje activo ayuda a entender herencia y polimorfismo?
¿Ejemplos prácticos de polimorfismo en aplicaciones?
Más en Desarrollo de Aplicaciones y Arquitectura de Software
Principios de Programación Orientada a Objetos
Los estudiantes identifican los conceptos de clases, objetos, atributos y métodos, modelando entidades del mundo real en código.
2 methodologies
Encapsulamiento y Abstracción en POO
Los estudiantes implementan encapsulamiento para proteger la integridad de los datos y abstracción para ocultar detalles de implementación.
2 methodologies
Principios de Diseño de UI/UX
Los estudiantes exploran los principios fundamentales de diseño de interfaces de usuario (UI) y experiencia de usuario (UX), como usabilidad, accesibilidad y estética.
2 methodologies
Prototipado y Pruebas de Usabilidad
Los estudiantes diseñan prototipos de baja y alta fidelidad y realizan pruebas de usabilidad para recopilar retroalimentación y mejorar la interfaz.
2 methodologies
Modelos de Ciclo de Vida del Software (SDLC)
Los estudiantes analizan diferentes modelos SDLC como Cascada, Espiral y V, comprendiendo sus fases y cuándo aplicar cada uno.
2 methodologies
Metodologías Ágiles: Scrum y Kanban
Los estudiantes exploran las metodologías ágiles Scrum y Kanban, sus roles, artefactos y eventos, y cómo promueven la entrega incremental de valor.
2 methodologies