Diccionario

Programación orientada a objetos

Una forma de organizar el código en objetos que agrupan datos y comportamiento, usando clases, herencia e interfaces.

La POO organiza el programa alrededor de objetos que representan cosas (un pedido, un usuario, una factura). Cada objeto guarda sus datos y ofrece métodos para trabajar con ellos.

Sus ideas principales son la encapsulación (ocultar los detalles internos), la herencia (reutilizar una clase en otra) y el polimorfismo (tratar igual objetos distintos que cumplen la misma interfaz). Java, C#, C++, Python o Kotlin la usan mucho.

Un ejemplo

En una tienda, la clase Pedido sabe calcular su total y la clase Factura sabe imprimirse; el resto del programa solo usa esos métodos.

Por qué importa

La programación orientada a objetos es uno de los paradigmas dominantes en el software empresarial: Java, C# y buena parte de Python y JavaScript se apoyan en ella. Entenderla es necesario para leer proyectos ajenos, porque muchas bibliotecas y frameworks están diseñados con esta mentalidad.

Su gran aportación es dividir un sistema grande en piezas con responsabilidades claras que se pueden cambiar o probar por separado. Los cuatro pilares que se enseñan habitualmente son encapsulación, abstracción, herencia y polimorfismo.

Confusiones frecuentes

Se piensa a veces que programar con objetos es siempre mejor que hacerlo con funciones, y no es así: es un enfoque más entre varios, como la programación funcional o la procedural. Tampoco basta con usar la palabra class para hacer buena orientación a objetos: una clase que solo agrupa funciones sueltas sin ocultar su estado interno no aprovecha la encapsulación. Y abusar de la herencia suele complicar el diseño más que ayudar.

Preguntas frecuentes

¿Qué es el polimorfismo en palabras sencillas?

Que objetos distintos respondan al mismo mensaje cada uno a su manera. Por ejemplo, Circulo y Cuadrado pueden tener ambos un método area(), calculado de forma diferente.

¿Qué es la encapsulación?

Ocultar los detalles internos de un objeto y exponer solo lo necesario, para que el resto del programa no dependa de cómo está implementado por dentro.