Está en la página 1de 28

Los Tipos Abstractos de Datos

Estructuras de Datos y Algoritmos 03/04

Qu son los TADs? Metodologa de programacin con TADs Especificacin Algebraica de TADs

Qu son los TADs?


Con los lenguajes de programacin estructurados (aos 60) surge el concepto de tipo de datos. Ese concepto es insuficiente para soft a gran escala: slo el compilador restringe el uso de los datos. En los 70 aparece el concepto de TAD: un tipo de datos no slo es el conjunto de valores, sino tambin sus operaciones con sus propiedades.

Pero qu son los TADs?


El concepto de TAD ya existe en los lenguajes de programacin estructurados: los tipos predefinidos. Ejemplo: Definicin del tipo de datos de los enteros en ADA valores: los del intervalo [INTEGERFIRST,INTEGERLAST] operaciones: +, -, *, /, resto, mdulo, valor absoluto, exp. propiedades de las operaciones: a+b=b+a, ... No hay que saber nada sobre implementacin

Definicin de TAD
Un Tipo Abstracto de Datos es un conjunto de valores y de operaciones definidos mediante una especificacin independiente de cualquier representacin. TAD = valores + operaciones

Definicin de TAD
La manipulacin de un TAD slo depende de su especificacin, nunca de su implementacin. Para manipular los enteros nos olvidamos de cmo se representan los valores y de cmo estn implementadas las operaciones.

Ejemplo de TAD
Los nmeros complejos con las operaciones de suma, producto, parte real y parte imaginaria Cmo lo especificamos?

Especificacin / implementacin
Dada una especificacin de TAD hay muchas implementaciones vlidas. Un cambio de implementacin de un TAD es transparente a los programas que lo utilizan.

Trabajando con TADs


Se pueden implementar los TADs slo a partir de la especificacin, sin saber para qu se van a usar. Saber qu sin necesidad de para qu. Reusabilidad Se pueden utilizar los TADs slo conociendo la especificacin. Saber qu sin necesidad de cmo Seguridad

Trabajando con TADs


Se puede cambiar la implementacin un TAD utilizado a otra ms eficiente. Se pueden implementar los TADs por separado y despus integrarlos. Legibilidad Diseo modular Organizacin del trabajo Correccin Esto facilita el mantenimiento. Modificabilidad

Trabajando con TADs


Se puede cambiar la implementacin un TAD utilizado a otra ms eficiente. Se pueden implementar los TADs por separado y despus integrarlos. Legibilidad Diseo modular es mejor que el Organizacin del trabajo diseo descendente Correccin Esto facilita el mantenimiento. Modificabilidad

Trabajando con TADs


Se puede demostrar la correccin de una implementacin a partir de su especificacin. Ms til, se pueden generar prototipos a partir de la especificacin algebraica

Ejercicios
Especificar (no formalmente) los siguientes TADs Cadenas de caracteres Fechas

Programar con TADs


Estructuras de Datos y Algoritmos 03/04

Definicin de TAD
Un Tipo Abstracto de Datos es un conjunto de valores y de operaciones definidos mediante una especificacin independiente de cualquier representacin. TAD = valores + operaciones

Programar con TADs


1. Especificacin: Establecer la interfaz con el usuario del tipo (lo que necesita saber el usuario) Decir qu es sin decir nada sobre cmo se hace Se trata de dar la lista de operaciones necesarias y especificarlas. Debe ser precisa, legible y no ambigua Nosotros usaremos especificacin algebraica

Ejemplo de especificacin (1)


espec booleanos gneros bool operaciones verdad: bool falso: bool _: bool bool __,__: bool bool bool

Ejemplo de especificacin (1)


ecuaciones b: bool; verdad = falso falso = verdad verdad falso = verdad b verdad = verdad b falso = b b verdad = b b falso = falso fespec

Ejemplo de especificacin (1)


espec booleanos conjunto de valores gneros bool operaciones verdad: bool falso: bool _: bool bool __,__: bool bool bool

Ejemplo de especificacin (1)


espec booleanos gneros bool operaciones operaciones verdad: bool falso: bool _: bool bool __,__: bool bool bool

Ejemplo de especificacin (1)


ecuaciones b: bool; propiedades de las operaciones verdad = falso falso = verdad verdad falso = verdad b verdad = verdad b falso = b b verdad = b b falso = falso fespec

Ejemplo de especificacin (2)


espec conjuntos usa booleanos,caracteres,naturales gnero conjcar operaciones vaco: conjcar poner: carcter conjcar conjcar __: conjcar conjcar conjcar __: conjcar conjcar conjcar __: carcter conjcar booleano

...

Ejemplo de especificacin (2)


ecuaciones A,B: conjcar;c,c1,c2:carcter Avaco = A Aponer(c,B) = poner(c,AB) Avaco = vaco cA Aponer(c,B) = poner(c,AB) cA Aponer(c,B) = AB cvaco = falso

...
fespec

Programar con TADs


2. Implementacin: Elegir la representacin de los valores Implementar las operaciones Debe ser estructurada, legible y eficiente

Implementacin
Una propiedad deseable es la encapsulacin. Representacin privada: el usuario no conoce los detalles de la implementacin. Tipo protegido: El usuario slo puede utilizar las operaciones previstas. ADA es muy adecuado, tiene buena encapsulacin.

package conjCaracteres is type conjcar is private; procedure vacio(A:out conjcar); function esVacio(A:in conjcar) return boolean; procedure poner(c:in character; A:in out conjcar); procedure quitar(c:in character; A:in out conjcar); function pertenece(c:in character; A:in conjcar) return boolean; procedure union(A,B:in conjcar; C:out conjcar); procedure interseccion(A,B:in conjcar; C:out conjcar); function cardinal(A:in conjcar) return integer; private ... end conjCaracteres;

generic type ind is (<>); -- cualquier tipo discreto type elem is private; -- cualquier tipo with function ">"(a,b:elem) return boolean; package ordenacion_g is type vector is array(ind range <>) of elem; procedure ordena(v:in out vector); end ordenacion_g;

with ordenacion_g; procedure titi is type color is (rojo,azul,gris); type dia is (lu,ma,mi,ju,vi,sa,dom); package miord is new ordenacion_g(dia,color,">"); use miord; x:vector(ma..vi):=(gris,azul,rojo,gris); begin ... ordena(x); ... end titi;

También podría gustarte