miércoles, 1 de agosto de 2007

Tipos Abstractos de Datos: Introduccion

Al programar trabajamos constantemente con distintos tipos de dato en nuestras operaciones, usualmente estos tipos de dato son parte del lenguaje y tienen un significado concreto para nosotros, como por ejemplo un valor entero (int ) o un caracter (char).

La Programación Orientada a Objetos (POO) introduce el concepto de objeto como un nuevo tipo de dato, pero estos datos dejan de ser concretos y pasan a ser definidos por el usuario. Cada nueva clase es una plantilla para un objeto completamente distinto, por lo que es también un nuevo tipo de dato abstracto.

Los tipos abstractos de datos (TAD) son esencialmente, tipos de datos definidos por el usuario, usualmente a través de objetos. Sin embargo, este término se usa sobre todo para definir una colección de estructuras abstractas que suelen ser utilizadas con frecuencia. Estas estructuras, usadas adecuadamente, pueden sustituir las estructuras comunes como los arreglos y permiten la reutilización de código para resolver ciertos procesos sencillos.

El lenguaje C++ no proporciona por defecto este tipo de estructuras, por lo que estas deben ser implementadas por el programador, pero se recomienda mejor la reutilización de código utilizando las librerías STL (Librería de Plantillas Estándar) de C++ o las LibTad de su servidor, que contienen estas estructuras listas para ser simplemente implementadas. Este tipo de estructuras hacen amplio uso interno de punteros y memoria dinámica, por lo que son propensas a errores al diseñarlas, también es posible que su utilidad se vea reducida a ciertas situaciones específicas.

En los lenguajes de programación más modernos, muchas veces estas estructuras vienen incluidas dentro del lenguaje disfrazadas con otros nombres, lo que le ha dado a mucha gente la falsa impresión de que no se utilizan. Es importante sobre todo saber implementar aprender a implementarlas adecuadamente y aprovecharlas al máximo, esto simplifica muchos procesos y puede evitar algunos procesos complicados, como por ejemplo trabajar con arreglos.

No hay comentarios: