Programación Orientada a Objetos en Python
1. Definición de POO
La Programación Orientada a Objetos organiza el código en objetos que representan cosas reales o conceptos. Cada objeto combina:
- Atributos: información del objeto.
- Métodos: acciones que puede realizar.
Esto permite escribir código más modular, reutilizable y fácil de mantener.
2. Clase
Una clase es un molde que define la estructura y el comportamiento de los objetos. Dentro de una clase se definen los atributos y métodos que compartirán todas sus instancias.
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def saludar(self):
return f"Hola, soy {self.nombre}"
3. Objeto o instancia
Un objeto es una instancia concreta de una clase. Cada objeto tiene sus propios valores de atributos, aunque comparta la misma estructura.
persona1 = Persona("Ana", 30)
persona2 = Persona("Luis", 25)
4. Herencia
La herencia permite crear nuevas clases basadas en otras existentes. La clase hija reutiliza y puede extender el comportamiento de la clase padre.
class Empleado(Persona):
def __init__(self, nombre, edad, puesto):
super().__init__(nombre, edad)
self.puesto = puesto
def trabajar(self):
return f"{self.nombre} trabaja como {self.puesto}"
5. Polimorfismo
El polimorfismo permite que distintas clases tengan métodos con el mismo nombre, pero con comportamientos diferentes. Esto hace que el código sea más flexible y extensible.
class Gato:
def hablar(self):
return "Miau"
class Perro:
def hablar(self):
return "Guau"
6. Encapsulamiento
El encapsulamiento protege los datos internos de un objeto, evitando que se modifiquen directamente desde
fuera.
En Python se suele usar __atributo para indicar que es privado.
class Cuenta:
def __init__(self, saldo):
self.__saldo = saldo
def depositar(self, cantidad):
self.__saldo += cantidad
def obtener_saldo(self):
return self.__saldo
7. Abstracción
La abstracción permite trabajar con ideas generales, ocultando los detalles internos de implementación. Se define una interfaz común y las clases concretas implementan los detalles.
class Vehiculo:
def mover(self):
raise NotImplementedError
class Coche(Vehiculo):
def mover(self):
return "El coche avanza por la carretera"
Mini‑juegos POO
1. Adivina el concepto
Lee la definición y elige el concepto correcto.
2. Completa el código
Elige la línea correcta para completar el código.
class Persona:
def __init__(self, nombre):
# completa aquí
Diagrama UML básico
Relación entre las clases principales del ejemplo.