Atraves de los tiempos han existidos aquellos a quienes conocemos como mercaderes, personas - en sus respectivas epocas y lugares - enfrentadas a problemas de la misma indole: Tener que contar las existencias de sus articulas, saber cuanto se debe cobrar por la venta de una cierta cantidad de mercancia, etc. Para resolver estos problemas, ellos han utilizados diferentes sistemas numericos, inicialmente se usuban palitos, un sistemas bastante primnitivo, en el cual cada unidad de mercancia se representaba por un palito y para cada cantidad vendida se agrupaba un numero de palitos equivalente a su valor.
Mas tarde los romanos utilizaron un sistema numerico en el cual las diferentes cantidades se representaban mediante combinaciones de siete letras (I,V,X,L,C,D,M). En la actualidad se utiliza el sistema decimal, en el que los valores se encuentran expresados como secuencias de digitos 0...9, y en donde cada uno de estos elementos toma un valor dependiendo de su posición dentro de la secuencia. Ademas ahora los medios cercanos a la computación, se utilizan ciertos sistemas como el Hexadecimal, el Binario, BCD,ect, para representar valores numericos.
Todos ellos, ademas de ser una manera de representar las cantidades, tienen ciertos mecanismos que le permiten operar sobre ellas. Por ser una manera de sumar valores en cualquiera de estos sistemas, de restarlos, de crearlos, de saber si dos cantidades son iguales, o si son cero, etc.
De esta forma aunque no utilicen el mismo formalismo para expresar sus valores la manera de resolver sus problemas es exactamente igual, puesto que las operaciones que se pueden realizar son las mismas en cualquiera de los sistemas. Si quieren saber cuanto les queda despues de vender unidades de mercancia de una reserva de M deben restar de M el valor N y obtienen la respuesta. Asi, si la solución del problema se enuncia unicamente en terminos de operaciones comunes o todos los sistemas, tienen la ventaja de ser absolutamente portables: la puede utilizar cualquier persona, independiente del sistema usado.
En la solución de un problema no es necesario ningun aspecto relacionado con el funcionamiento interno de la calculadora. De esta manera, podemos utilizar cualquiera de ellas para resolverlas. Nuestras soluciones entonces "portable". Ademas si deseamos hacer una calculadora para resolver el problema, solo debemos garantizar que ejecuta bien todas las operaciones, pero no necesitamos explicarle a nadie como representamos los numeros, ni mucho menos, como se simula internamente la ejecución de las operaciones
Si se aplica las ideas expresadas anteriormente el, proceso de escribir un programa para resolver un problema, obtendremos una metodología que garantiza independencia entre las estructuras de datos y el método de solución del problema. Un tipo Abstracto de Datos hace las veces de la calculadora del ejemplo anterior: es una herramienta para resolver el problema, pero es totalmente independiente del problema y de su solución.
Cualquier sugerencia o comentario enviarlo a:
jcvargas@isis.uniandes.edu.co
Tomado del libro:
"Estructuras de datos (Un enfoque desde tipos
abstractos)"
Jorge Villalobos, Alejandro Quintero, Mario Otero
Ediciones Uniandes