Cuando aprendemos a programar, descubrimos que hay diferentes formas de organizar y escribir el código. Estas formas se llaman paradigmas de programación. Los más comunes son:
Programación estructurada: Se basa en dar instrucciones paso a paso, como seguir una receta. Es la forma más tradicional y probablemente la que ya has usado en Python.
Programación funcional: Aquí el código se organiza en funciones independientes que reciben datos, los procesan y devuelven resultados, un poco como máquinas que hacen tareas específicas.
Programación orientada a objetos (POO): Este paradigma organiza el código pensando en “objetos”, que son como cosas del mundo real. Cada objeto tiene características (atributos) y acciones (métodos). Por ejemplo, imagina que quieres programar sobre perros: todos los perros comparten características como nombre, raza o edad, pero cada uno tiene sus propios valores para esas características. Además, todos pueden hacer cosas como ladrar o correr, aunque cada perro lo haga a su manera.
En la POO, usamos clases para definir cómo son los objetos y objetos para representar casos concretos. Así, el código se vuelve más organizado, fácil de entender y de reutilizar.
El siguiente código Python implementa un sencillo sistema de gestión de biblioteca utilizando la programación orientada a objetos (POO).
Una breve explicación del código es:
Libro
: Representa un libro con atributos como título, autor y estado. Incluye métodos para cambiar el estado del libro y para representar el libro en una cadena.Biblioteca
: Administra una colección de libros. Incluye métodos para agregar libros, prestar libros y consultar el inventario.
class Libro:
def __init__(self, titulo, autor):
self.titulo = titulo
self.autor = autor
self.disponible = True
def cambiar_estado(self):
self.disponible = not self.disponible
def __str__(self):
estado = "Disponible" if self.disponible else "Prestado"
return f"{self.titulo} por {self.autor} - {estado}"
class Biblioteca:
def __init__(self):
self.libros = []
def agregar_libro(self, libro):
self.libros.append(libro)
def prestar_libro(self, titulo):
for libro in self.libros:
if libro.titulo == titulo:
if libro.disponible:
libro.cambiar_estado()
print(f"El libro '{titulo}' ha sido prestado.")
else:
print(f"El libro '{titulo}' ya está prestado.")
return
print(f"El libro '{titulo}' no está disponible en la biblioteca.")
def consultar_inventario(self):
for libro in self.libros:
print(libro)
# Uso del sistema
biblioteca = Biblioteca()
libro1 = Libro("1984", "George Orwell")
libro2 = Libro("To Kill a Mockingbird", "Harper Lee")
biblioteca.agregar_libro(libro1)
biblioteca.agregar_libro(libro2)
print("Inventario de la biblioteca:")
biblioteca.consultar_inventario()
print("\nPrestando '1984':")
biblioteca.prestar_libro("1984")
print("\nInventario después del préstamo:")
biblioteca.consultar_inventario()
print("\nIntentando prestar '1984' nuevamente:")
biblioteca.prestar_libro("1984")
¿Que otros libros agregarias?
Para ilustrar cómo usar la programación orientada a objetos (POO) en Python para crear figuras geométricas y mostrarlas en la pantalla, utilizaremos la biblioteca Turtle. Esta biblioteca permite dibujar gráficos en una ventana de forma sencilla.
La biblioteca Turtle
viene incluida con Python, por lo que no es necesario instalarla por separado. Solo necesitas tener Python instalado en tu sistema.
import turtle
# Clase base para las figuras geométricas
class FiguraGeometrica:
def __init__(self, color):
self.color = color
def dibujar(self):
raise NotImplementedError("Método 'dibujar' no implementado en la clase base")
# Clase para un cuadrado
class Cuadrado(FiguraGeometrica):
def __init__(self, color, longitud_lado):
super().__init__(color)
self.longitud_lado = longitud_lado
def dibujar(self):
turtle.begin_fill()
turtle.fillcolor(self.color)
for _ in range(4):
turtle.forward(self.longitud_lado)
turtle.right(90)
turtle.end_fill()
# Clase para un círculo
class Circulo(FiguraGeometrica):
def __init__(self, color, radio):
super().__init__(color)
self.radio = radio
def dibujar(self):
turtle.begin_fill()
turtle.fillcolor(self.color)
turtle.circle(self.radio)
turtle.end_fill()
# Configuración de la ventana de dibujo
turtle.speed(2)
turtle.bgcolor("white")
# Crear y dibujar un cuadrado rojo
cuadrado = Cuadrado("red", 100)
cuadrado.dibujar()
# Mover la tortuga para no sobreponer las figuras
turtle.penup()
turtle.goto(200, 0)
turtle.pendown()
# Crear y dibujar un círculo azul
circulo = Circulo("blue", 50)
circulo.dibujar()
# Finalizar el dibujo
turtle.hideturtle()
turtle.done()
En este código:
FiguraGeometrica
: Es una clase base que define un método abstracto dibujar
, que debe ser implementado por las clases derivadas.Cuadrado
: Hereda de FiguraGeometrica
y proporciona una implementación específica para dibujar un cuadrado.Circulo
: También hereda de FiguraGeometrica
y proporciona una implementación específica para dibujar un círculo.La biblioteca Turtle es ideal para este tipo de tareas, ya que proporciona una forma sencilla de dibujar gráficos y visualizar resultados en una ventana gráfica.