Transcript TAD.ppt

1.1 Concepto y terminología


Tipos de Datos  colección de valores + operaciones

Enteros, reales, booleanos, caracteres

Enumerados, subrango

Son opacos
Tipos Estructurados  genericidad


Riesgo de crear valores sin semántica
Tipos de Datos Abstractos (TDA)

Tipos de datos creados por el programador, que deben ser
opacos
1.1 Concepto y terminología

Tipos de Datos Abstractos:

Colección de valores + operaciones

Se definen mediante una especificación, que es
independiente de cualquier representación (abstracción)

Acceso a los valores limitado al uso de las operaciones
(interfaz con el usuario limitada)

Establecida la interfaz, el programador elige la
representación adecuada (implementación)

Los usuarios del TDA sólo conocen su nombre y la
especificación de las operaciones

Cambios en la representación no afectarán al resto de
programas
1.1 Concepto y terminología

Tipos de Datos Abstractos:


El lenguaje de programación trata a los TDA’s de igual
forma que a sus propios tipos de datos, es decir, como
tipos opacos:

Privacidad de la representación

Protección
Para que esto sea posible, la implementación deberá
realizarse en un ámbito de declaración inaccesible al
resto de los programas
1.1 Concepto y terminología

Tipos de Datos Abstractos:

El conjunto de operaciones ha de permitir generar cualquier
valor del tipo

Existen dos piezas de documentación bien diferenciadas:

Especificación del TDA. Es lo único que conoce el usuario
del TDA. Consiste en el nombre del TDA y la especificación de
las operaciones. Tienen parte sintáctica y parte semántica

Implementación del TDA. Conocida sólo por el programador
del TDA. Se realiza en un lenguaje de programación concreto.
Consiste en la representación del tipo y en la realización de
las operaciones
1.1 Concepto y terminología

Tipos de datos abstractos:

Se destacan los detalles (normalmente pocos) del
comportamiento observable del tipo, que es estable.

Se ocultan los detalles (normalmente numerosos) de la
implementación, que es propensa a cambios.
1.2 Clasificación de Tipos de Datos Abstractos


Tipos de Datos Abstractos simples:

Cambian su valor pero no su estructura  espacio de
almacenamiento constante

Enteros, reales, booleanos, carácter, enumerado, subrango,
etc.
Tipos de Datos Abstractos contenedores:

Cambian su valor y estructura (colecciones de elementos
de número variable)  espacio de almacenamiento
variable

Listas, colas, pilas, árboles, grafos, conjuntos, etc.
1.2 Clasificación de Tipos de Datos Abstractos


Tipos de datos abstractos inmutables:

Sus casos no pueden modificarse (se crean y destruyen,
pero no existen operaciones de modificación)

Representación inmutable o mutable
Tipos de datos abstractos mutables:

Sus casos pueden modificarse (existen operaciones de
modificación)

Representación mutable
1.3 Especificación de Tipos de Datos Abstractos

TDA  Colección de valores + Operaciones
Usuario
Especificación
Implementación
del TDA
Representación
elegida

Implementador
+
Representación
de las operaciones
1.3 Especificación de Tipos de Datos Abstractos


Especificaciones informales:

Predomina el lenguaje natural

Poco precisas y breves  ambigüedad

Sencillas de escribir, leer y entender
Especificaciones formales:

Lenguaje algebraico  verificación formal de programas

Precisas y breves

Pueden resultar más complejas de escribir, leer y entender
1.3.1 Especificaciones informales

Cabecera: Aparece el nombre de las operaciones.

Descripción: Se describe de forma general en qué consiste la
abstracción, sin decir nada acerca de la implementación. Los casos
del TDA pueden describirse en términos de otros tipos para los cuales
se espera que el lector de la especificación esté más familiarizado. Se
pueden utilizar gráficos y abstracciones matemáticas. Se puede incluir
en la descripción si el TDA es mutable o inmutable

Especificación de las operaciones: Para la especificación de una
abstracción operacional seguiremos el siguiente modelo:
nombre de la operación (entrada) devuelve (salida)
 requerimientos: Esta cláusula muestra las restricciones de uso
 modifica: Esta cláusula identifica las entradas que van a ser modificadas
 efecto: Esta cláusula define el comportamiento
1.3.1 Especificaciones informales
Observamos los siguientes componentes:
 Cabecera: Es la información sintáctica. Se indica el nombre de la operación y el
número, orden y tipos de sus entradas y salidas. Deben darse nombres para las
entradas y pueden darse para las salidas
 Cuerpo: Es la información semántica. Consta de las siguientes cláusulas:



Requerimientos: Restringen el dominio del procedimiento o función. Cuando introducimos
requerimientos, obtenemos una abstracción operacional parcial (en caso contario se dice
que la abstracción es total). El que use la abstracción es el responsable de que los
requerimientos se cumplan; si estos no se cumplen, los resultados pueden ser
impredecibles. Si la abstracción es total, la cláusula de requerimientos puede omitirse. Se
supone como requerimiento implícito (y por tanto no tiene que ser explicitado en la cláusula
de requerimientos) que las entradas que figuran en la lista de parámetros de la abstracción
han sido correctamente construidas mediante algún constructor del tipo
Modifica: Indica los argumentos de entrada que cambian de valor tras una llamada a la
abstracción operacional
Efecto: Se indica el efecto que se produce al ejecutar la operación para las entradas que
cumplen los requerimientos. Debe definir qué salidas son producidas y también qué
modificaciones son hechas en la lista de entradas de la cláusula modifica. La cláusula efecto
se escribe bajo la asumpción de que se satisface la cláusula requerimientos, y no se dice
nada sobre el efecto de la abstracción cuando dicha cláusula no se satisface
1.3 Especificación de Tipos de Datos Abstractos

El usuario de la abstracción es el responsable de
que se cumplan los requerimientos

Implementaciones robustas: se autoprotegen frente
a valores inconsistentes

Mecanismos de protección frente a errores:


Manejo de excepciones

Parámetros de salida de error en cada operación
Puesto que las especificaciones son independientes
de las implementaciones, existen requerimientos de
uso (información adicional de cara al usuario)