¿Cuándo Usar Clases?
No todo necesita ser una clase. La clave de un buen programador es saber cuándo la POO añade valor y cuándo añade complejidad innecesaria.
1. La Regla Fundamental
2. Cuándo SÍ Usar Clases
Estado persistente
El objeto necesita recordar datos entre llamadas. Un historial de chat, el saldo de una cuenta, el estado de una conexión.
Múltiples instancias
Necesitas crear muchas entidades del mismo tipo con datos distintos: 100 usuarios, 50 agentes, 10 conexiones de DB.
Jerarquías lógicas
Tu dominio tiene relaciones "ES UN": AgenteDeVentas ES UN Agente. Cachorro ES UN Animal. La herencia tiene sentido.
Encapsulación
Quieres ocultar la complejidad interna y exponer solo una interfaz limpia. El usuario usa tu clase sin saber cómo funciona por dentro.
3. Cuándo NO Usar Clases
| Si tu necesidad es... | Mejor alternativa |
|---|---|
| Transformar datos de entrada en salida | Función |
| Agrupar datos relacionados (sin métodos) | Diccionario o dataclass |
| Ejecutar una tarea de principio a fin, sin estado | Función simple |
| Script de automatización de una sola vez | Script con funciones |
4. Ejemplo Real: Clase vs Función
Usa una función:
# No hay estado, solo transformación
def celsius_a_fahrenheit(c):
return c * 1.8 + 32
# Correcto: no necesita una clase
print(celsius_a_fahrenheit(100)) # 212
Usa una clase:
# Hay estado (historial) + múltiples instancias
class ConvertidorDeMoneda:
def __init__(self, divisa_base):
self.divisa_base = divisa_base
self.historial = []
def convertir(self, cantidad, tasa):
resultado = cantidad * tasa
self.historial.append(resultado)
return resultado
Fase 3 completada. Eres un programador modular.
Ahora conecta tu código con el mundo real. En la Fase 4 aprenderás APIs, Git y todas las herramientas del desarrollador moderno.