Qué es la programación orientada a objetos

Resumen

La programación orientada a objetos (POO) es un paradigma que te permite organizar tu código en clases y objetos para modelar entidades del mundo real dentro de Swift. Si estás aprendiendo a programar y quieres construir aplicaciones que escalen sin volverse un caos, dominar este enfoque es el siguiente paso lógico después de las bases del lenguaje.

Antes de escribir una sola línea, conviene recordar una idea que se le atribuye al académico de software John Johnson: primero resuelve el problema, después escribe el código. Programar es solo la herramienta; la POO te ayuda a traducir esa solución mental en piezas reutilizables y mantenibles.

Por qué usar programación orientada a objetos en tu código

La POO te da una forma estructurada de representar entidades reales para que tu código crezca de forma saludable. Piensa en bloques de Lego: cada pieza encaja con otras y puedes reemplazarla sin romper toda la construcción.

Entre los beneficios prácticos que vas a notar:

  • Reutilización de piezas en distintas partes del proyecto.
  • Depuración y actualización más sencillas a futuro.
  • Lectura clara para otros desarrolladores o para tu yo del futuro.
  • Modelado fiel de entidades que ya entiendes del mundo físico.

¿Qué es la programación orientada a objetos? Es un paradigma que organiza el código en clases y objetos que representan entidades del mundo real, con propiedades y comportamientos definidos.

Cuáles son los pilares de la POO: clases y objetos

La POO se sostiene sobre dos pilares: clases y objetos. Entender la diferencia es lo que separa a alguien que copia código de alguien que diseña soluciones.

Qué es una clase y cómo funciona como plantilla

Una clase es un modelo o plantilla que define las propiedades y comportamientos de una entidad. Imagina el plano arquitectónico de una casa: el plano no es la casa, pero indica cómo construirla.

Por ejemplo, una clase coche puede tener atributos como marca y modelo, y comportamientos como acelerar. Tú defines en la clase qué pasa cuando alguien le dice al coche que acelere.

Qué es un objeto y en qué se diferencia de una clase

Un objeto es una instancia concreta de una clase. Si la clase casa es el plano, cada casa construida en el conjunto residencial es un objeto distinto, con su propia dirección y color.

En el caso del coche, miCoche puede ser un objeto de la clase coche con marca Toyota y modelo 2019. Otro objeto de la misma clase tendrá sus propios valores.

¿Cuál es la diferencia entre clase y objeto? La clase es la plantilla que define cómo se ven las cosas; el objeto es una instancia real con valores concretos en sus propiedades.

Cómo diseñar un diagrama de clases antes de programar

Tener la solución clara en tu cabeza no basta. Necesitas plasmarla en un diagrama de clases, una representación con cajas y flechas que muestra entidades y cómo se relacionan entre sí.

Este diagrama es el lenguaje común con el que vas a comunicarte con tus jefes, tu equipo o tu yo del futuro. Es el estándar dentro del paradigma orientado a objetos.

Por qué escribir el código en inglés

A partir de ahora, los nombres de variables, funciones y clases se manejan en inglés porque es el estándar de la industria. Las palabras reservadas de Swift, como let, var o func, ya hacen referencia al inglés, así que mantener consistencia evita mezclas raras.

Las tres clases del sistema de administración de estudiantes

Para resolver el reto de administrar estudiantes, materias y notas, se modelan tres entidades:

  • Subject (materia): tiene name de tipo String, teacherName de tipo String y subjectLevel de tipo SubjectLevel.
  • Student (estudiante): tiene name de tipo String, age de tipo Int, una lista de subjects de tipo Subject y una lista de scores de tipo Double con las notas.
  • StudentsManager: contiene una lista de estudiantes y representa la lógica para inscribir, asignar materias y generar reportes.

Fíjate en algo interesante: Subject y Student son entidades que existen en la vida real, pero StudentsManager es más abstracto, representa lógica del programa. La POO también te permite modelar este tipo de conceptos que no tocas con la mano.

Con ese diagrama listo, ya puedes pasar al código y empezar a inscribir estudiantes, asignarles materias y generar un reporte que muestre si pasaron o no el semestre. ¿Cómo modelarías tú una entidad de tu propio proyecto? Cuéntamelo en los comentarios.