viernes, 9 de agosto de 2013

Tipos de Datos Abstractos



Ingeniería en Sistemas Computacionales
Estructura de datos.
UNIDAD 1: INTRODUCCION A LAS ESTRUCTURAS DE DATOS.
Profesor: M.en C. María Alejandra Rosas Toro


Tema 1.1 Tipos de datos abstractos
Los Tipos de Datos Abstractos (en adelante TDA, Abstract Data Types ) fueron por primera vez propuestos por Bárbara Liskov en 1974 (“Programming with Abstract Data Types”). Un TDA est´a caracterizado por un conjunto de operaciones (procedimientos y funciones) denominados usualmente su interfaz pública y representan el comportamiento del TDA; mientras que la implementación privada del TDA está oculta al programa cliente que lo usa. Todos los lenguajes de alto nivel tienen predefinidos TDAs; lo son los tipos denominados simples y las estructuras predefinidas, y estos tienen sus interfaces públicas que incluyen las operaciones (como +, -, *, [], etc.).
Por lo tanto, un Tipo de dato abstracto es un conjunto de datos u objetos al cual se le asocian operaciones. El TDA provee de una interfaz con la cual es posible realizar las operaciones permitidas, abstrayéndose de la manera en como estén implementadas dichas operaciones. Esto quiere decir que un mismo TDA puede ser implementado utilizando distintas estructuras de datos y proveer la misma funcionalidad.
El paradigma de orientación a objetos permite el encapsulamiento de los datos y las operaciones mediante la definición de clases e interfaces, lo cual permite ocultar la manera en cómo ha sido implementado el TDA y solo permite el acceso a los datos a través de las operaciones provistas por la interfaz.
Formalmente un TAD es un tipo abstracto de datos que empaqueta a los compontes con los que trabaja, sean estos: datos y las operaciones significativas para su funcionamiento. En otras palabras, se encapsulan los datos del TAD y las operaciones sobre esos datos, manteniendo ocultos los detalles a la vista del programador o usuario que utiliza al TAD.
En los lenguajes orientados a objetos, las clases son las soluciones a los TAD, mientras en aquellos que no soportan la orientación a objetos, será necesario recurrir a las declaraciones y especificaciones de funciones.
Algunos lenguajes de programación tienen características que nos permiten ampliar el lenguaje añadiendo sus propios tipos de datos. Un tipo de dato definido por el programador se denomina tipo abstracto de datos (TAD) para diferenciarlo del tipo fundamental (predefinido) de datos. Por ejemplo, en Java, el tipo Punto, que representa las coordenadas x e y de un sistema de coordenadas rectangulares, no existe. Sin embargo, es posible implementar el tipo abstracto de datos, considerando los valores que se almacenan en las variables y qué operaciones están disponibles para manipular estas variables. En esencia, un tipo abstracto es un tipo de dato que consta de datos (estructuras de datos propias) y operaciones que se pueden realizar sobre ellos. Un TAD se compone de estructuras de datos y los procedimientos o funciones que manipulan esas estructuras de datos.

De lo anterior tenemos, un tipo abstracto de datos puede definirse mediante la ecuación:
TA D = Representación (datos) + Operaciones (funciones y procedimientos)



Tipos de datos abstractos (definidos por el programador).

Un tipo de datos abstracto es un tipo de dato nuevo definido por el programador que incluye:
·         La definición de un conjunto de datos objeto, que por lo regular usan una o más definiciones de tipo.
·         La definición de un conjunto de operaciones abstractas (funciones) sobre aquellos datos objeto, que usan una o más definiciones de subprogramas para definir cada operación abstracta.
·         La encapsulación de todo en tal forma que el usuario del tipo nuevo no puede manipular los datos objeto del tipo, excepto por el uso de la operación definida.

Abstracción de datos (esto es, el diseño de los datos objeto abstractos y de las operaciones sobre esos objetos) es una parte fundamental de la programación.


Tipos de datos abstractos genéricos.
Los tipos de datos primarios integrados en un lenguaje con frecuencia permiten al programador declarar el tipo básico de una nueva clase de datos objeto y después especificar varios atributos de los datos objeto.

Referencias:
http://www.dcc.uchile.cl/~bebustos/apuntes/cc30a/TDA/
http://juanfc.lcc.uma.es/EDU/PM/5.TADs.pdf

1 comentario: