Los seres humanos se han convertido en la especie más influyente de este planeta, debido a su capacidad para abstraer el pensamiento. Los sistemas complejos, sean naturales o artificiales, sólo pueden ser comprendidos y gestionados cuando se omiten detalles que son irrelevantes a nuestras necesidades inmediatas. El proceso de excluir detalles no deseados o no significativos, al problema que se trata de resolver, se denomina abstracción, y es algo que se hace en cualquier momento.
Desarrollo
Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de
programas pueden implementar los modelos abstractos. La abstracción ofrecida por los lenguajes
de programación se puede dividir en dos categorías: abstracción de datos (perteneciente a
los datos) y abstracción de control (perteneciente a las estructuras de control).
Desde comienzos del decenio de los sesenta, en que se desarrollaron los primeros lenguajes
de programación de alto nivel, ha sido posible utilizar las abstracciones más primitivas de ambas
categorías (variables, tipos de datos, funciones, control de bucles (lazos), etc.).
Abstracciones de control
Las estructuras de control describen el orden en que se ejecutan las sentencias o grupos de
sentencia (unidades de programa). Las unidades de programa se utilizan como bloques básicos
de la clásica descomposición “descendente”.
Las abstracciones y estructuras de control se clasifican en estructuras de control a nivel de
sentencia y a nivel de unidades (abstracción procedimental).
Abstracción procedimental
La abstracción procedimental se basa en la
utilización de procedimientos o funciones sin preocuparse de cómo se implementan
Abstracción de datos
La abstracción de datos es la técnica de programación que permite inventar o definir nuevos
tipos de datos (tipos de datos definidos por el usuario) adecuados a la aplicación que se desea
realizar. La abstracción de datos es una técnica muy potente que permite diseñar programas
más cortos, legibles y flexibles. La esencia de la abstracción es similar a la utilización de un
tipo de dato, cuyo uso se realiza sin tener en cuenta cómo está representado o implementado.
Los tipos de datos son abstracciones y el proceso de construir nuevos tipos se llaman abstracciones
de datos. Los nuevos tipos de datos definidos por el usuario se llaman tipos abstractos
de datos (ADT, Abstract Data Types). Un TAD se compone de estructuras de datos y los procedimientos o funciones
que manipulan esas estructuras de datos.
La descripción ha de incluir una parte de sintaxis, en cuanto a los
tipos de los argumentos y el tipo del resultado, y una parte de semántica que detalla para unos
valores particulares de los argumentos la expresión del resultado que se obtiene. La especificación
formal ha de ser lo bastante potente para que cumpla el objetivo de verificar la corrección
de la implementación del TAD.
Ejemplos
Figura de un tipo abstracto de datos
Método 1 |
Método 3 |
Método 2 |
Método 4 |
Interfaz |
Publica |
Representación:
Estructuras de datos (Variables instancia)
Implementación de métodos: Código de método 1 Código de método 2 Código de método 3 |
Interfaz privada |
Ejemplo en código de un tipo abstracto
class hora { };
|
Una hora se puede representar de la forma anterior si se usa adecuadamente la abstracción para formar el código.
Conclusión
La abstracción es una herramienta esencial en programación porque se basa más en que es lo que hace y no tanto en como lo hace, ya que de ello depende la reutilización de código en distintos métodos, de tal manera que facilita al programador el desarrollo del software sin necesidad de aplicar demasiado código extrayendo las funcionalidades similares a lo desarrollado.
Referencias
Libro Estructuras de datos en c++ (Luis Joyanes Aguilar, Lucas Sánchez García, Ignacio Zahonero Martínez)
Libro Estructuras de datos Algoritmos, abstracción y objetos (Luis Joyanes Aguilar, Lucas Sánchez García
Fuentes Relacionadas al tema
http://decsai.ugr.es/~jfv/abs.pdf