Significado de Abstracción en programación
Sustantivo femenino. Del latín abstractio, -onis, «acción de apartar»; en informática la palabra calca el sentido del inglés abstraction.
La abstracción es el principio de diseño que consiste en representar un objeto o proceso mostrando solo sus características esenciales para el problema, y ocultando los detalles internos que no aportan nada a quien lo usa.
Es uno de los cuatro pilares habituales de la programación orientada a objetos, junto con el encapsulamiento, la herencia y el polimorfismo, aunque también se aplica en otros paradigmas de programación.
Qué es la abstracción en programación
Abstraer es separar lo esencial de lo accesorio. En programación, un elemento está bien abstraído cuando quien lo usa puede trabajar con él conociendo únicamente qué hace, sin necesidad de saber cómo lo hace por dentro. Una función que calcula el máximo común divisor de dos números puede usarse sin conocer el procedimiento matemático que aplica por dentro: basta con saber qué recibe y qué devuelve.
La abstracción no consiste en simplificar el problema ni en quitarle partes; consiste en decidir, para cada nivel del programa, qué información hace falta mostrar y cuál conviene ocultar. Un mismo elemento puede abstraerse de formas distintas según quién lo consulte: un usuario final necesita menos detalle que otro programador que vaya a modificar ese código.
La estudian las ciencias de la computación dentro del diseño de software, y aparece tanto en la programación orientada a objetos, donde se aplica sobre todo mediante clases e interfaces, como en la programación funcional, donde se aplica sobre todo mediante funciones que ocultan su implementación interna.
Origen de la palabra abstracción
Del latín abstractio, -onis, sustantivo formado sobre el verbo abstrahĕre, «apartar, separar, arrastrar hacia afuera», compuesto de abs- («separación») y trahĕre («traer, arrastrar»). El sentido filosófico de «considerar una cualidad separada del objeto que la tiene» es anterior en siglos al uso informático.
El término entró en el vocabulario de la programación a medida que los lenguajes de alto nivel se alejaban del código máquina y permitían representar datos y procedimientos con nombres y estructuras propias. Con la difusión de la programación estructurada y, después, de la programación orientada a objetos, «abstracción» pasó a nombrar de forma explícita uno de los principios básicos del diseño de software.
Tipos de abstracción en programación
| Tipo | En qué consiste | Ejemplo |
|---|---|---|
| De datos | Representa una estructura compleja como un tipo único y manejable. | Tratar una fecha como un solo valor, en lugar de tres números sueltos de día, mes y año. |
| De procedimientos | Oculta el método de cálculo detrás del nombre de una función. | Llamar a ordenar(lista) sin conocer qué algoritmo de ordenación se aplica por dentro. |
| De interfaz | Define qué operaciones ofrece un objeto sin revelar cómo están implementadas. | Una clase Vehiculo con un método arrancar() que cada tipo de vehículo implementa a su manera. |
| De control | Agrupa instrucciones repetitivas bajo una construcción del lenguaje. | Un bucle que recorre una lista, sin que el programador gestione manualmente cada salto. |
Ejemplos de uso de abstracción en programación
Al definir una clase Figura con un método calcularArea(), cada figura concreta implementa el cálculo de forma distinta sin que el resto del programa necesite saberlo.
El conductor de un coche solo necesita saber qué hace el pedal del freno, no cómo funciona el sistema que hay detrás: esa es la misma idea que aplica un buen diseño de software.
Una función raizCuadrada(numero) permite usar el resultado sin conocer el método numérico que emplea para calcularlo.
La documentación de una biblioteca de software describe qué hace cada función y qué parámetros espera, no cómo está escrita por dentro.
En la revisión de código, el equipo señaló que una clase exponía demasiados detalles internos y rompía el nivel de abstracción esperado.
Sinónimos y palabras relacionadas
Sinónimos: no tiene sinónimos exactos en este sentido técnico; «generalización» se usa a veces con un matiz próximo.
Antónimos: concreción, detalle de implementación.
No es lo mismo que:
- Encapsulamiento: restringe el acceso directo a los datos internos de un objeto; la abstracción decide qué información se muestra, el encapsulamiento decide qué se puede tocar desde fuera.
- Modularidad: divide un programa en partes independientes; la abstracción se ocupa de qué expone cada parte, no de cómo se reparte el programa entre ellas.
- Interfaz: es el mecanismo concreto (un conjunto de métodos declarados) que muchos lenguajes usan para aplicar la abstracción, pero no es lo mismo que el principio en sí.
Preguntas frecuentes sobre abstracción en programación
¿Qué es la abstracción en la programación orientada a objetos?
Es el principio por el que una clase expone solo los métodos y atributos necesarios para usarla, y esconde cómo están implementados por dentro. Quien usa la clase trabaja con esa interfaz, no con su código interno.
¿Qué diferencia hay entre abstracción y encapsulamiento?
La abstracción decide qué información es relevante mostrar y cuál se puede ocultar; el encapsulamiento es el mecanismo que protege esa información oculta, restringiendo el acceso directo a los datos desde fuera del objeto.
¿Por qué es importante la abstracción al diseñar software?
Porque reduce la complejidad: permite trabajar con piezas de código sin tener presentes todos sus detalles internos a la vez, facilita cambiar la implementación sin afectar al resto del programa y hace el código más fácil de mantener.