La programación orientada a objetos (POO) es un paradigma que organiza el código en torno a objetos, que combinan datos (atributos) y comportamientos (métodos).
Python, aunque es un lenguaje multiparadigma, ofrece un soporte muy completo para este estilo de programación.
Contenido
¿Qué es la Programación Orientada a Objetos?
En la POO, los programas se estructuran usando clases y objetos:
- Clase: es un molde o plantilla que define las características y comportamientos de un tipo de objeto.
- Objeto: es una instancia concreta de una clase, con sus propios valores de atributos.
Por ejemplo, si tenemos una clase Perro, cada perro específico (como “Firulais” o “Luna”) sería un objeto diferente.
Creando una clase en Python
En Python, las clases se definen con la palabra clave class:
class Perro:
# Método inicializador (constructor)
def __init__(self, nombre, edad):
self.nombre = nombre # Atributo de instancia
self.edad = edad
# Método (comportamiento)
def ladrar(self):
print(f"{self.nombre} dice: ¡Guau!")
def cumplir_anios(self):
self.edad += 1
print(f"{self.nombre} ahora tiene {self.edad} años.")
Creando y usando objetos
Una vez definida la clase, podemos crear objetos (instancias) de ella:
mi_perro = Perro("Firulais", 3)
otro_perro = Perro("Luna", 5)
mi_perro.ladrar() # Firulais dice: ¡Guau!
otro_perro.cumplir_anios() # Luna ahora tiene 6 años.
Cada objeto mantiene sus propios datos (nombre, edad), pero comparten los métodos definidos en la clase.
Principios fundamentales de la POO
Encapsulamiento: protege los datos internos del objeto.
Se puede usar el guion bajo _atributo para indicar que un atributo es “privado”.
class CuentaBancaria:
def __init__(self, saldo):
self._saldo = saldo # Atributo protegido
def depositar(self, cantidad):
self._saldo += cantidad
def obtener_saldo(self):
return self._saldo
Herencia: permite crear nuevas clases basadas en otras, reutilizando código.
class Animal:
def hablar(self):
print("El animal hace un sonido")
class Gato(Animal):
def hablar(self):
print("El gato dice: miau")
g = Gato()
g.hablar() # El gato dice: miau
Polimorfismo: diferentes clases pueden definir el mismo método, pero con comportamientos distintos.
animales = [Perro("Toby", 2), Gato()]
for animal in animales:
animal.hablar() # Cada uno responde según su clase
Conclusión
La programación orientada a objetos te permite escribir código más organizado, modular y reutilizable.
En Python, su sintaxis sencilla hace que aprender este paradigma sea una excelente manera de mejorar tus habilidades como desarrollador.