Ir al contenido
Tecnología · 3o de Preparatoria · Desarrollo de Aplicaciones y Arquitectura de Software · II Bimestre

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.

Aprendizajes Esperados SEPSEP EMS: Programación Orientada a ObjetosSEP EMS: Arquitectura de Software

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

  1. ¿Cómo la herencia reduce la duplicación de código y mejora la mantenibilidad?
  2. ¿De qué manera el polimorfismo permite escribir código más flexible y extensible?
  3. ¿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

Conceptos Fundamentales de Programación Orientada a Objetos

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.

Estructuras de Control y Tipos de Datos Básicos

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

HerenciaMecanismo 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.
PolimorfismoCapacidad 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 / SuperclaseLa clase de la cual otra clase hereda. Contiene atributos y métodos generales que pueden ser compartidos por sus subclases.
Clase derivada / SubclaseLa 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 actividades

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

Boleto de Salida

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.

Verificación Rápida

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é?'

Pregunta para Discusión

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?
Usa analogías cotidianas como familia (herencia) y roles intercambiables (polimorfismo). Enfócate en código práctico: crea jerarquías de vehículos y listas polimórficas. Esto alinea con SEP, mostrando reducción de duplicados y flexibilidad en apps reales como sistemas de gestión.
¿Cuál es la diferencia entre herencia y polimorfismo?
Herencia construye jerarquías para reutilizar código; polimorfismo permite tratar subclases uniformemente vía sobrescritura. Juntos, mejoran mantenibilidad. Ejemplos en Java o Python ilustran: una lista de Figuras llama area() en cada objeto sin saber su tipo exacto.
¿Cómo el aprendizaje activo ayuda a entender herencia y polimorfismo?
Actividades como codificar jerarquías en parejas o refactorizar en grupo hacen abstractos conceptos tangibles. Estudiantes depuran errores reales, discuten diseños y ven polimorfismo en acción, lo que aumenta retención 30-50% según estudios. Esto supera lecturas pasivas en preparatoria SEP.
¿Ejemplos prácticos de polimorfismo en aplicaciones?
En un juego, una lista de Enemigos usa atacar() polimórfico para diferentes tipos sin if-else. En apps bancarias, transacciones genéricas manejan cuentas variadas. Estas prácticas responden a estándares SEP, preparando para arquitectura de software extensible.