Programación Orientada a Objetos en Python
La programación orientada a objetos (POO) es un paradigma de programación que organiza el software en "objetos", que son instancias de clases. En Python, la POO permite crear y gestionar clases y objetos con propiedades (atributos) y comportamientos (métodos).
Clases y Objetos
En Python, las clases son plantillas para crear objetos. Un objeto es una instancia de una clase y tiene atributos (características) y métodos (funciones) que definen su comportamiento.
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def saludar(self):
return f"Hola, mi nombre es {self.nombre} y tengo {self.edad} años."
persona1 = Persona("Juan", 30)
print(persona1.nombre)
print(persona1.saludar())
Herencia
La herencia es un principio de la POO que permite crear una nueva clase basándose en una clase existente. La nueva clase hereda los atributos y métodos de la clase base (superclase), pero puede modificar o extender su funcionalidad.
class Animal:
def __init__(self, nombre):
self.nombre = nombre
def hablar(self):
return "Hace un sonido"
class Perro(Animal):
def __init__(self, nombre, raza):
super().__init__(nombre) # Llamada al constructor de la clase base
self.raza = raza
def hablar(self):
return "Guau!"
perro1 = Perro("Rex", "Labrador")
print(perro1.nombre)
print(perro1.raza)
print(perro1.hablar())
Encapsulamiento
El encapsulamiento es el principio de ocultar los detalles internos de un objeto y exponer solo lo necesario a través de métodos públicos. En Python, podemos utilizar métodos para acceder o modificar los atributos de un objeto de manera controlada.
class CuentaBancaria:
def __init__(self, titular, saldo):
self.titular = titular
self.__saldo = saldo
def obtener_saldo(self):
return self.__saldo
def depositar(self, monto):
self.__saldo += monto
cuenta = CuentaBancaria("Carlos", 1000)
print(cuenta.obtener_saldo()) # 1000
cuenta.depositar(500)
print(cuenta.obtener_saldo())
Polimorfismo
El polimorfismo permite que diferentes clases puedan definir métodos con el mismo nombre, pero cada clase tiene una implementación diferente de ese método. Esto permite que un mismo nombre de método se use para diferentes tipos de objetos.
class Gato(Animal):
def hablar(self):
return "Miau!"
gato1 = Gato("Felix")
print(perro1.hablar())
print(gato1.hablar())
Conclusión
La programación orientada a objetos (POO) en Python permite organizar el código en clases y objetos, lo que mejora la modularidad, la reutilización y la mantenibilidad del código. Con POO, puedes modelar mejor el comportamiento de los objetos del mundo real en tu aplicación.