¿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.
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.
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
Metodología para Resolver Problemas Programando
El proceso completo de desarrollo de software sigue estas 8 fases:
Comprender el problema, identificar requisitos y definir qué necesita el programa.
Crear el algoritmo, diagramas de flujo y planificar la estructura del código.
Escribir el código en el lenguaje de programación elegido.
Compilar y ejecutar el programa para probarlo.
Probar que el programa funciona correctamente y produce los resultados esperados.
Encontrar y corregir errores (bugs) en el código.
Crear manuales y comentarios que expliquen cómo funciona el programa.
Actualizar, mejorar y corregir el programa a lo largo del tiempo.
¿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?
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
Atributos y Métodos
Atributos = Datos
Son las características o propiedades de un objeto. Definen cómo es el objeto.
Métodos = Acciones
Son las acciones que puede realizar un objeto. Definen qué puede hacer el objeto.
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) |
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.