2. Abstracción (Ocultar la fontanería)3. Herencia (No te repitas - DRY)4. Polimorfismo (Mismo mensaje, distinta respuesta)
2. Abstracción (Ocultar la fontanería)
Es mostrar únicamente los detalles esenciales al usuario u otros programadores, ocultando la tremenda complejidad técnica detrás de una interfaz sencilla y amigable.
Metáfora del Mundo Real:Cuando conduces un coche, solo pisas el pedal del acelerador. No necesitas controlar manualmente la inyección de combustible, el flujo de aire o la chispa de los pistones.
Interfaz de Usuario Simplificada:
Presiona el botón para ver la abstracción en acción.
Implementación Canónica en Python
class CafeteraAutomatica:
def preparar_espresso(self):
# El usuario solo llama a este método simple:
self._calentar_agua()
self._moler_granos()
self._bombear_presion(15)
return "☕ ¡Delicioso café listo!"
def _calentar_agua(self):
# Complejidad interna oculta...
pas
3. Herencia (No te repitas - DRY)
Permite que una nueva clase (Clase Hija) herede todos los atributos y métodos de una clase existente (Clase Padre), agregando o modificando solo lo que necesite.
Metáfora del Mundo Real:Un 'Vehículo Eléctrico' es un tipo de 'Vehículo'. Tiene ruedas y volante (heredados), pero añade una batería de litio y frenada regenerativa.Jerarquía: Perro -> hereda de Animal:Selecciona un método para probar la herencia.Implementación Canónica en Pythonclass Animal:
def __init__(self, nombre):
self.nombre = nombre
def respirar(self):
return f"{self.nombre} respira oxígeno."
# Perro hereda de Animal
class Perro(Animal):
def ladrar(self):
return "¡Guau guau!"
4. Polimorfismo (Mismo mensaje, distinta respuesta)
Significa 'muchas formas'. Es la capacidad de invocar el mismo nombre de método en diferentes objetos, y que cada uno responda de acuerdo a su propia naturaleza sin romper el programa.
Metáfora del Mundo Real:El botón 'Reproducir' (Play) en tu teclado funciona igual si estás en Spotify, YouTube o un reproductor de audio, aunque internamente cada app hace algo distinto.Polimorfismo en bucle uniforme:Pulsa para enviar el mismo mensaje a distintos objetos.Implementación Canónica en Pythonclass Pato:
def hacer_sonido(self):
return "¡Cuac cuac!"
class Gato:
def hacer_sonido(self):
return "¡Miau!"
# Tratamos a todos por igual en un bucle:
for animal in [Pato(), Gato()]:
print(animal.hacer_sonido())
POO en Python
Comprensión Conceptual & Visual
Python 3.xLaboratorio de Clases: Coche Deportivo
Interactúa con el coche en tiempo real. Observa cómo cambian sus variables y cómo se genera el código Python correspondiente.
Cambiar color (coche.color = ...):Resultado:Tanque lleno al 100%.Código Python Equivalente# 1. Creación del objeto (Instancia)
mi_auto = Coche(modelo="Deportivo GT", color="Índigo")
# 2. Historial de llamadas:
mi_auto.acelerar() # self.velocidad = 240
mi_auto.repostar() # self.combustible = 100
mi_auto.repostar() # self.combustible = 100
mi_auto.repostar() # self.combustible = 100
Nota Didáctica:Observa que al llamar a mi_auto.acelerar(), la función no necesita recibir la velocidad como parámetro: ya sabe leer y modificar su propio atributo interno self.velocidad.