Introducción a la POO

Del pensamiento al código: paradigmas, metodología y el mundo de los objetos.

Material de Apoyo

Accede a las diapositivas originales de esta clase.

Ver Diapositivas

¿Qué es Programar?

Programar es escribir instrucciones que la computadora puede seguir para realizar tareas específicas. Es como darle órdenes precisas a una máquina.

La computadora no entiende el lenguaje natural: necesitamos comunicarnos a través de lenguajes de programación como Python, Java, C++ o Ruby. Estos lenguajes sirven como puente entre nuestras ideas y las operaciones que ejecuta el hardware.

¿Qué pasa si...? Si le damos una instrucción mal escrita, la computadora generará un error. Por eso necesitamos organización y precisión en nuestro código.

Python

Java

C++

Ruby

Paradigmas de Programación

Un paradigma es un estilo o enfoque que guía cómo se estructura y organiza un programa. No cambia el objetivo final, pero sí cambia cómo pensamos y organizamos el código para alcanzarlo.

Analogía de la Cocina: Imagina que vas a cocinar. Puedes organizar tu cocina por tipo de ingrediente, por orden de uso, o por frecuencia de acceso. ¡Todas son válidas! Depende de tu estilo. Lo mismo pasa con los paradigmas.

1. Procedimental

Se basa en funciones y procedimientos. El programa se divide en pasos secuenciales.

2. Orientado a Objetos

Se basa en objetos que interactúan. Organiza el código en entidades del mundo real.

3. Funcional

Se basa en funciones matemáticas. Evita el estado mutable y los datos cambiantes.

En este curso nos concentraremos en el paradigma Orientado a Objetos (POO).

Paradigma vs. Metodología

Son conceptos que no son lo mismo y es importante distinguirlos:

Paradigma

Es la filosofía del código. Define cómo pensamos y estructuramos el programa.

"Voy a organizar todo con objetos"

Metodología

Es el proceso de desarrollo. Define los pasos y fases para construir el software.

Ejemplos: Cascada, Scrum, Agile

Analogía de la Casa: El paradigma es el estilo arquitectónico (moderno, clásico, minimalista). La metodología es el proceso de construcción (planos → cimientos → paredes → electricidad). Uno es el estilo, el otro es el proceso.

Metodología para Resolver Problemas Programando

El proceso completo de desarrollo de software sigue estas 8 fases:

1
Análisis

Comprender el problema, identificar requisitos y definir qué necesita el programa.

2
Diseño

Crear el algoritmo, diagramas de flujo y planificar la estructura del código.

3
Codificación

Escribir el código en el lenguaje de programación elegido.

4
Ejecución

Compilar y ejecutar el programa para probarlo.

5
Verificación

Probar que el programa funciona correctamente y produce los resultados esperados.

6
Depuración

Encontrar y corregir errores (bugs) en el código.

7
Documentación

Crear manuales y comentarios que expliquen cómo funciona el programa.

8
Mantenimiento

Actualizar, mejorar y corregir el programa a lo largo del tiempo.

Clave: Programar no es escribir código primero. ¡Es pensar primero!

¿Qué es la POO?

La Programación Orientada a Objetos (POO) es un paradigma que se basa en la creación de objetos que interactúan entre sí para resolver un problema.

En lugar de pensar solo en funciones y pasos, pensamos en entidades del mundo real que colaboran entre sí. Se creó para que el código se parezca más al mundo que nos rodea.

Pregunta clave:

Si quiero hacer un sistema para una universidad... ¿qué objetos existen?

Estudiante Profesor Curso Nota

Clases y Objetos

La diferencia entre el molde y el producto real:

CLASE = Molde

Una clase es como el plano o molde para construir objetos. Define las características y acciones que tendrán los objetos.

Ej. Clase Carro:
Atributos: marca, color, modelo, año
Métodos: arrancar(), frenar(), acelerar()

OBJETO = Instancia Real

Un objeto es una instancia real creada a partir de la clase. Es el carro ya construido con valores específicos.

Ej. miCarro:
marca = "Toyota", color = "Rojo"
modelo = "Corolla", año = 2023

Analogía Fábrica: La clase es el molde que define cómo será cada carro. Cada objeto es una copia con valores específicos. ¿Puedo crear varios carros con el mismo molde? ¡Sí! Eso es exactamente lo que hace la POO.

Atributos y Métodos

Atributos = Datos

Son las características o propiedades de un objeto. Definen cómo es el objeto.

nombre edad color precio peso

Métodos = Acciones

Son las acciones que puede realizar un objeto. Definen qué puede hacer el objeto.

caminar() hablar() calcular() guardar()
Regla de oro: Todo objeto tiene datos (atributos) y comportamientos (métodos).

Los 4 Principios de la POO

Los pilares fundamentales que sostienen el paradigma orientado a objetos:

Abstracción

Simplificar la realidad capturando solo los aspectos relevantes para el problema.

Encapsulamiento

Ocultar los detalles internos y proteger el estado del objeto mediante interfaces controladas.

Herencia

Crear nuevas clases basadas en clases existentes, promoviendo la reutilización de código.

Polimorfismo

Permitir que diferentes clases respondan al mismo mensaje de formas distintas.

Procedimental vs. POO

Aspecto Procedimental Orientado a Objetos
Unidad básica Función / Procedimiento Objeto (datos + comportamiento)
Organización Pasos secuenciales Entidades del mundo real
Reutilización Funciones reutilizables Clases y herencia
Escalabilidad Limitada Alta (modular)
Mantenimiento Difícil en proyectos grandes Más sencillo (encapsulamiento)
¿Por qué usar POO? Permite modelar sistemas complejos de forma organizada, reutilizar código eficientemente y construir software que escala con el tiempo. Es el estándar en la industria actual.

Primer Vistazo: POO en Python

Una clase simple en Python que ilustra los conceptos fundamentales:

class Persona:
    """Clase que modela una persona."""

    def __init__(self, nombre, edad):
        # Atributos: guardan el estado del objeto
        self.nombre = nombre
        self.edad = edad

    # Métodos: definen el comportamiento
    def saludar(self):
        return f"Hola, soy {self.nombre} y tengo {self.edad} años."

    def cumplir_anos(self):
        self.edad += 1
        return f"¡Feliz cumpleaños {self.nombre}! Ahora tienes {self.edad} años."


# Creando objetos (instancias de la clase)
persona1 = Persona("Ana", 20)
persona2 = Persona("Luis", 22)

print(persona1.saludar())       # Hola, soy Ana y tengo 20 años.
print(persona2.cumplir_anos())  # ¡Feliz cumpleaños Luis! Ahora tienes 23 años.