Programación orientada a objetos para el TAI, sin liarte

Persona programando en un ordenador portátil, representando la programación orientada a objetos del Bloque III del TAI

La programación orientada a objetos (POO) es un paradigma que organiza el código alrededor de "objetos", cada uno de los cuales agrupa datos (atributos) y comportamiento (métodos) en una sola unidad. Frente a la programación estructurada clásica, donde datos y funciones van por separado, la POO busca que el código se parezca más a las cosas del mundo real que representa. Es uno de los conceptos que más se repite en el Bloque III del temario TAI, y aparece tanto en preguntas directas como detrás de otros temas, como UML o los lenguajes de programación.

En este artículo

¿Qué es la programación orientada a objetos?

Es un paradigma de programación (una forma de organizar y pensar el código) que modela el software como un conjunto de objetos que interactúan entre sí. Cada objeto tiene un estado (sus atributos, es decir, los datos que almacena) y un comportamiento (sus métodos, es decir, lo que sabe hacer). Frente a la programación estructurada, que organiza el código en funciones que operan sobre datos externos a ellas, la POO encapsula datos y funciones juntos dentro del propio objeto.

¿Qué es una clase y qué es un objeto?

Son los dos términos que más se confunden, y la forma más fácil de diferenciarlos es con un ejemplo: la clase es el plano o la plantilla, y el objeto es lo que se construye a partir de ese plano.

  • Clase: la definición abstracta de un tipo de elemento, con sus atributos y métodos. Por ejemplo, la clase "Empleado" define que todo empleado tiene un nombre, un puesto y un método para calcular su nómina.
  • Objeto: una instancia concreta de esa clase. "María, administrativa" y "Juan, técnico" son dos objetos distintos creados a partir de la misma clase "Empleado", cada uno con sus propios valores.

¿Cuáles son los cuatro pilares de la POO?

Casi cualquier pregunta de examen sobre este tema puede reducirse a estos cuatro conceptos. Merece la pena memorizarlos con su definición exacta.

Pilar Qué significa
Encapsulación Los datos internos de un objeto se protegen del exterior y solo se accede a ellos a través de sus métodos.
Herencia Una clase puede heredar atributos y métodos de otra clase ya existente, reutilizando código.
Polimorfismo Un mismo método puede comportarse de forma distinta según el tipo de objeto que lo ejecute.
Abstracción Se modelan solo las características relevantes de un objeto para el problema que se está resolviendo, ocultando el resto de detalles.

¿Qué es la herencia y por qué se usa?

La herencia permite crear una clase nueva (llamada subclase o clase hija) a partir de una clase ya existente (superclase o clase padre), heredando sus atributos y métodos sin tener que volver a escribirlos. Por ejemplo, la clase "Técnico" y la clase "Administrativo" podrían heredar ambas de una clase más general llamada "Empleado", de la que reciben atributos comunes como el nombre o el número de identificación, y a la que añaden sus propias particularidades.

La ventaja principal es la reutilización de código: si mañana cambia la forma de calcular algo común a todos los empleados, solo hay que modificarlo en la clase padre.

¿Qué es el polimorfismo?

Literalmente significa "muchas formas". En POO se refiere a que un mismo método puede comportarse de manera distinta según el objeto que lo invoque. Dentro de este concepto conviene distinguir dos cosas que también se preguntan por separado:

  • Sobrecarga (overloading): varios métodos con el mismo nombre pero distintos parámetros dentro de la misma clase.
  • Sobreescritura (overriding): una subclase redefine un método que ya existía en su superclase, cambiando su comportamiento.

¿Qué lenguajes orientados a objetos suelen aparecer en el temario?

Java, C++, C# y Python son los que más se citan como ejemplos de lenguajes orientados a objetos en el temario del TAI, aunque no hace falta programar en ninguno de ellos para responder a las preguntas teóricas sobre POO. Si quieres repasar las características de cada lenguaje con más detalle, tenemos una guía específica sobre lenguajes de programación para el TAI, y si te toca ahora el modelado de sistemas, la de UML para el TAI conecta directamente con estos mismos conceptos de clases y objetos.

Todo el desarrollo de sistemas del Bloque III, explicado sin paja, está en los apuntes.

Preguntas frecuentes

¿Qué diferencia hay entre una clase y un objeto?

La clase es la plantilla o definición abstracta; el objeto es una instancia concreta creada a partir de esa clase, con valores propios.

¿Cuáles son los pilares de la programación orientada a objetos?

Encapsulación, herencia, polimorfismo y abstracción. Estos cuatro conceptos son la base de casi cualquier pregunta de examen sobre POO.

¿Qué diferencia hay entre sobrecarga y sobreescritura?

La sobrecarga define varios métodos con el mismo nombre pero distintos parámetros dentro de una misma clase. La sobreescritura ocurre cuando una subclase redefine un método heredado de su superclase.

¿Qué es un método constructor?

Es un método especial que se ejecuta automáticamente al crear un objeto, y que normalmente se usa para inicializar sus atributos con valores iniciales.

¿Es lo mismo POO que programación estructurada?

No. La programación estructurada organiza el código en funciones separadas de los datos sobre los que operan; la POO agrupa datos y comportamiento dentro de un mismo objeto.