El pensamiento abstracto es el reflejo mediato y generalizado de la realidad, es una forma de conocer el mundo más allá de los sentidos. El conocimiento sensitivo y concreto precisa ser elaborado, separando las propiedades no esenciales y destacando las más características de cada objeto o fenómeno. El raciocinio permite penetrar en la profundidad de las cosas, distinguir lo esencial de lo no esencial, diferenciar lo externo de los interno y extraer lo más importante y decisivo.
La habilidad de poder discernir las propiedades que son relevantes sobre un elemento del mundo real, a nivel de características y acciones que realiza o permite que sean realizadas, son de vital importancia para el modelado de sistemas de información complejos, sean computacionales o no. Es a través de este mecanismo que realmente podemos traer información de un mundo en muchas ocasiones caótico (un tema de un blog completamente distinto a este) y utilizar un sistema tan estricto y limitado como es el de las computadoras digitales.
Es responsabilidad de quien diseña y construye el sistema crear estructuras de datos relevantes a un problema y que a la vez aprovechen de la mejor forma los recursos disponibles en el sistema para realizar su trabajo. Un proceso de discernimiento y discriminación tras un análisis detallado de los datos que deben ser recordados y las acciones que debe poder realizar (son hechos propiamente por el elemento descrito y por una decisión propia) o permitir realizar (tras una solicitud externa de la realización de dicha acción) es vital para lograr estos objetivos a la hora de construir sistemas.
Entender la idea detrás del diseño de Tipos de Datos Abstractos nos ayuda a hacer este trabajo de una mejor manera. Algunas lecturas de la bibliografía del curso para entender estos elementos de una mejora forma:
- Estructura de datos: algoritmos, abstracción y objetos - Página 33: 1.3.3 Abstracción de datos
- Estructura de datos en C++ - Página 48: 1.6 Tipos abstractos de datos
- Data Structures and algorithms in Java - Página 16: 1.2.2 Abstract data types
- Data structures and algorithm analysis in java - Página 57: 3.1 Abstract Data Types (ADT's)
- Data structures and algorithm analysis in C++ - Página 77: 3.1 Abstract Data Types (ADT's)