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)