CON · Concepto 8 · Programación orientada a objetos

36.Clase y objeto

Una clase es el molde que describe cómo es y qué hace un tipo de cosa; un objeto es cada ejemplar concreto creado con ese molde.

¿Qué es?

La programación orientada a objetos (POO) organiza el programa alrededor de cosas del problema: alumnos, cuentas, productos. Cada cosa junta sus datos y las acciones que puede hacer.

  • Una clase es el molde: describe qué datos tiene y qué sabe hacer un tipo de cosa.
  • Un objeto es cada ejemplar creado con ese molde, con sus propios valores.

Piensa en el formato de inscripción de la escuela (la clase): todos tienen los mismos campos (nombre, grupo, promedio). Cada formato ya llenado es un objeto: el de Ana, el de Luis. Mismo molde, datos distintos.

Clase Objeto
Qué es La descripción, el molde Un ejemplar concreto
Cuántos hay Una Todos los que crees
Ejemplo Alumno ana, luis

Sintaxis (pseudocódigo / Python)

Pseudocódigo de diseño (no ejecutable en PSeInt)

Clase Alumno
	Atributos: nombre, grupo, promedio
	Al crear (nombre, grupo):
		promedio <- 0
	Metodo presentarse:
		Escribir "Soy ", nombre, " del grupo ", grupo
FinClase

ana <- nuevo Alumno("Ana", "3A")
ana.presentarse

Python

class Alumno:
    def __init__(self, nombre, grupo):
        self.nombre = nombre        # atributos del objeto
        self.grupo = grupo
        self.promedio = 0

    def presentarse(self):          # método
        print(f"Soy {self.nombre} del grupo {self.grupo}")

ana = Alumno("Ana", "3A")           # crear un objeto
luis = Alumno("Luis", "3B")

ana.presentarse()
luis.presentarse()
print(type(ana))

Salida:

Soy Ana del grupo 3A
Soy Luis del grupo 3B
<class '__main__.Alumno'>
Parte Qué hace
class Alumno: Define la clase (nombre con mayúscula inicial)
__init__ Se ejecuta al crear cada objeto; prepara sus atributos
self El objeto mismo; Python lo pasa solo
Alumno("Ana", "3A") Crea un objeto nuevo

Ejemplo guiado

Problema: registrar varios libros de la biblioteca escolar y mostrar cuáles están disponibles.

class Libro:
    def __init__(self, titulo, autor):
        self.titulo = titulo
        self.autor = autor
        self.prestado = False

    def prestar(self):
        if self.prestado:
            print(f"«{self.titulo}» ya está prestado")
        else:
            self.prestado = True
            print(f"Prestaste «{self.titulo}»")

    def devolver(self):
        self.prestado = False

biblioteca = [
    Libro("Pedro Páramo", "Juan Rulfo"),
    Libro("El llano en llamas", "Juan Rulfo"),
    Libro("Balún Canán", "Rosario Castellanos"),
]

biblioteca[0].prestar()
biblioteca[0].prestar()

print("Disponibles:")
for libro in biblioteca:
    if not libro.prestado:
        print("-", libro.titulo, "/", libro.autor)

Salida esperada:

Prestaste «Pedro Páramo»
«Pedro Páramo» ya está prestado
Disponibles:
- El llano en llamas / Juan Rulfo
- Balún Canán / Rosario Castellanos

Cada libro recuerda su propio estado (prestado): prestar uno no afecta a los demás.

Errores comunes

# ✗ Incorrecto
class Perro:
    def ladrar():
        print("¡Guau!")

firulais = Perro()
firulais.ladrar()
TypeError: Perro.ladrar() takes 0 positional arguments but 1 was given

Buenas prácticas

  • Nombres de clase en singular y con mayúscula inicial (Alumno, CuentaBancaria).
  • Una clase, una responsabilidad: Libro no debería encargarse también de imprimir reportes de la biblioteca.
  • Inicializa todos los atributos en __init__.
  • Usa POO cuando ayude: para un cálculo sencillo, una función basta.
  • Agrega __str__ para que print(objeto) muestre algo legible (se ve en la siguiente ficha).

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

Antes conviene ver…

© solutions_ · Fundamentos de programación · 36 Clase y objeto