🏗️ Módulo 5: Programación Orientada a Objetos en Python

🏗️ Módulo 5: Programación Orientada a Objetos en Python

La programación orientada a objetos (POO) es un paradigma de programación que utiliza «objetos» para representar datos y métodos. Este enfoque se ha convertido en un estándar en la programación moderna y es crucial para el desarrollo de software eficiente y mantenible. En este módulo, aprenderás los conceptos fundamentales de la POO en Python, un lenguaje que facilita la implementación de este paradigma.

1. Clases y Objetos

Una clase es una plantilla para crear objetos, y un objeto es una instancia de una clase. Las clases pueden contener atributos (variables) y métodos (funciones) que describen el comportamiento de los objetos. A continuación, un ejemplo de cómo definir una clase y crear un objeto:

class Persona:
    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad

    def presentarse(self):
        print(f"Hola, soy {self.nombre} y tengo {self.edad} años.")

# Crear un objeto de la clase Persona
persona1 = Persona("Juan", 30)
persona1.presentarse()  # Imprime: Hola, soy Juan y tengo 30 años.

Este ejemplo ilustra cómo se crea una clase básica llamada Persona. Cada objeto Persona tendrá un nombre y una edad, y puede usar el método presentarse para mostrar esta información.

2. Herencia

La herencia es un mecanismo mediante el cual una nueva clase puede heredar atributos y métodos de una clase existente. Esto permite reutilizar el código y crear jerarquías de clases. Por ejemplo:

class Estudiante(Persona):
    def __init__(self, nombre, edad, curso):
        super().__init__(nombre, edad)
        self.curso = curso

    def presentarse(self):
        super().presentarse()
        print(f"Estoy estudiando {self.curso}.")

# Crear un objeto de la clase Estudiante
estudiante1 = Estudiante("María", 20, "Matemáticas")
estudiante1.presentarse()  # Imprime: Hola, soy María y tengo 20 años. Estoy estudiando Matemáticas.

En este ejemplo, la clase Estudiante hereda de Persona, lo que significa que un Estudiante también es una Persona, pero con un atributo adicional llamado curso.

3. Encapsulamiento

El encapsulamiento es una técnica que consiste en ocultar los detalles internos de una clase y exponer solo lo necesario a través de métodos públicos. Esto mejora la seguridad y la modularidad del código. Aquí tienes un ejemplo:

class CuentaBancaria:
    def __init__(self):
        self.__saldo = 0  # Atributo privado

    def depositar(self, cantidad):
        self.__saldo += cantidad

    def obtener_saldo(self):
        return self.__saldo

cuenta = CuentaBancaria()
cuenta.depositar(100)
print(cuenta.obtener_saldo())  # Imprime: 100

El atributo __saldo es privado, lo que significa que no puede ser accedido directamente desde fuera de la clase. Esto garantiza que el saldo solo pueda ser modificado a través de los métodos depositar y obtener_saldo.

4. Polimorfismo

El polimorfismo permite que diferentes clases implementen el mismo método de diferentes maneras. Esto es útil en situaciones donde se desea tratar diferentes tipos de objetos de manera uniforme. Aquí tienes un ejemplo:

class Animal:
    def hablar(self):
        pass

class Perro(Animal):
    def hablar(self):
        return "Guau!"

class Gato(Animal):
    def hablar(self):
        return "Miau!"

def hacer_hablar(animal):
    print(animal.hablar())

hacer_hablar(Perro())  # Imprime: Guau!
hacer_hablar(Gato())   # Imprime: Miau!

En este caso, tanto Perro como Gato son clases que heredan de Animal y tienen su propia implementación del método hablar.

5. FAQs sobre Programación Orientada a Objetos

¿Qué es una clase en Python?
Una clase es una plantilla que define las características (atributos) y comportamientos (métodos) que tendrán los objetos creados a partir de ella.

¿Cuál es la diferencia entre herencia y encapsulamiento?
La herencia permite crear nuevas clases basadas en clases existentes, mientras que el encapsulamiento oculta los detalles internos de una clase.

¿Cómo se implementa el polimorfismo en Python?
El polimorfismo se implementa mediante métodos con el mismo nombre en diferentes clases, lo que permite que un mismo método se comporte de manera diferente según el objeto que lo llame.

6. Conclusión

En este módulo, has aprendido sobre clases, objetos, herencia, encapsulamiento y polimorfismo. Estos son conceptos clave en la programación orientada a objetos y son esenciales para desarrollar aplicaciones robustas y escalables. En el siguiente módulo, exploraremos la manipulación de archivos y la gestión de excepciones, lo que te permitirá manejar datos de manera eficaz.