Podríamos definir la abstracción como la
"acción de aislar mentalmente o considerar por separado las cualidades de un
objeto, considerar un objeto en su esencia".
¿Qué quiere decir esta definición? A través de la abstracción conseguimos
extraer las cualidades principales sin detenernos en los detalles.
Conseguimos a partir de un tema determinado, generalizar y obtener una
visión global del tema. Cuando montamos un ordenador ensamblamos los
componentes necesarios para construir el ordenador. Utilizamos una placa
base, un disco duro, memoria, etc. Manejamos estos dispositivos a un nivel
funcional. Es decir, abstraemos las funciones de cada dispositivo para
trabajar con ellos. En ningún momento nos paramos a pensar cómo funcionan
internamente o de cuántos condensadores y transistores está compuesto.
Denota las
características esenciales de un objeto, donde se capturan sus
comportamientos.
La abstracción es
una herramienta muy potente en programación, pues reduce considerablemente
el trabajo de implementación y aumenta la portabilidad del código. La
programación orientada a objetos aporta elementos para abstraer el problema
en dos sentidos.
Por un lado nos permite
referirnos a objetos para representar la realidad, describiendo el
problema en términos del problema en lugar de en términos de la solución.
En un programa de gestión comercial, tendremos el objeto cliente o el objeto
factura, que no son más que representaciones de otros objetos en el espacio
del problema.
La clave de la programación
orientada a objetos está en abstraer los métodos y los datos comunes a un
conjunto de objetos y agruparlos en una clase. Gracias a este nivel de
abstracción, añadir o eliminar un objeto nuevo supondrá muy poco esfuerzo.
Cada objeto en el sistema sirve como
modelo de un "agente" abstracto que puede realizar trabajo, informar
y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin
revelar cómo se implementan estas características.
Los procesos, las funciones o los
métodos pueden también ser abstraídos y cuando lo están, una variedad de
técnicas son requeridas para ampliar una abstracción.
El proceso de abstracción permite
seleccionar las características relevantes dentro de un conjunto e
identificar comportamientos comunes para definir nuevos tipos de entidades
en el mundo real.
La abstracción es clave en el proceso
de análisis y diseño orientado a objetos, ya que mediante ella podemos
llegar a armar un conjunto de clases que permitan modelar la realidad o el
problema que se quiere atacar.