Para concluir con el tema de abstracción dejaré una última publicación para cerrar el tema, con mejores definiciones dadas por distintos autores, una publicación bastante completa y lo más explícita posible para tratar el tema de Abstracción que comencé en un par de entradas anteriores y que desarrollé estos días.
La abstracción es el concepto clave de la teoría de la programación. El refinamiento del concepto y la evolución de los mecanismos que le dan soporte han permitido, a lo largo de la historia de la programación, no solo abordar niveles crecientes de complejidad, sino además, permitir que esta, como actividad industrial, logre crecientes niveles de calidad, volumen y economía en el desarrollo de software.
Si bien podríamos asumir, como Hoare sugiere, que:
"Una abstracción surge de reconocer las similitudes entre cierto objeto, situaciones o procesos en el mundo real y la decisión de concentrarse sobre esas similitudes e ignorar por el momento las diferencias"
Resulta necesario analizar algunas de las diferentes acepciones del término abstracción en el contexto del desarrollo de software:
"La abstracción es un proceso mediante el cual nosotros identificamos los aspectos importantes de una cosa o proceso e ignoramos otros.."( Ghezzi, 1991 ).
"Abstracción es la examinación selectiva de ciertos aspectos de un problema. El objetivo de la abstracción es separar aquellos aspectos que son importantes para algún propósito y suprimir aquellos que son poco significativos..."( Rumbaugh, 1991 )
"Una descripción simplificada, o especificación de un sistema que enfatiza alguno de los detalles o propiedades del mismo mientras suprime otros. Una buena abstracción es aquella que enfatiza los detalles que son significativos al lector o usuario y suprime aquellos que no lo son, al menos por el momento, poco significativos o inmateriales..."( Shaw, 1984 )
"Una abstracción denota las características esenciales de un objeto que la distingue de otros proveyendo de esta manera una frontera conceptual, relativa o la perspectiva del observador..."( Booch, 1991 )
"Abstraer es separar en pensamientos. Una mejor definición sería, representar las características esenciales de algo sin incluir detalles no significativos"( Graham 1991 )
Un punto que tal vez resulta confuso de las definiciones anteriores, en relación a la aplicación del concepto, es el uso del mismo tanto para detonar un proceso como una entidad. De hecho ambas acpeciones son válidas y necesarias.
La abstracción como proceso denota la selección de los detalles esenciales acerca de una cosa o grupo de estas, mientras ignora aquellos detalles considerados, por el momento, no esenciales.La abstracción como una entidad denota un modelo, una vista o alguna otra representación simplificada de una cosa o grupo de cosas.
Con relación a la abstracción, es posible notar también que existen diferentes grados o niveles de abstracción y se observa que a medida que nos movemos progresivamente hacia niveles más altos de abstracción, nos concentramos en volúmenes más pequeños de información, por el contrario a medida que nos movemos hacia niveles más bajos de abstracción, revelamos más detalles e incrementamos el volumen de información con el que debemos trabajar.
También notamos que por aplicación del criterio de selección, que guía que categorías de información son enfatizadas y cuales no en la construcción de la abstracción, es posible formular diferentes tipos de abstracción: abstracción funcional, abstracción de datos y aún abstracción de objetos; Por ejemplo podríamos decir que es importante ser capaces de agregar, abstracción funcional, elementos a una lista, sin que sea de interés los detalles de cómo estos son agregados, de igual modo podríamos decir que una lista es la estructura, abstracción de datos, donde podemos almacenar información, sin que resulte significativo como esta estructura se implementa, por otra parte podríamos decir que una lista es una colección que soporta la operación de inserción satisfaciendo una política determinada sin que interese ni como la lista es implementada o como la operación de inserción es llevada a cabo, abstracción de objetos.
Usualmente la abstracción no se define en términos de "ocultamiento de información", independientemente del uso de palabras como "suprimir" e "ignorar" en su definición. Sin embargo debe señalarse, que en una abstracción que califique como tal cierta información es más importante o significativa que otra, sin que esto implique señalar un mecanismo específico para manejar aquella información poco relevante.
bueno, este es el final de la entrada y del tema de abstracción, los espero leyendo la entrada de mañana sobre Encapsulamiento o Encapsulación.Soy amante de la programación, me gusta ver y crear cosas nuevas... Me gusta el metal, rock, y también daftpunk jajaja