Tema 1 Tipos Abstractos de Datosmcast/ESDATOS/TADS/Ttema1_0506.pdf · 2017-05-28 · Estructuras de...
Transcript of Tema 1 Tipos Abstractos de Datosmcast/ESDATOS/TADS/Ttema1_0506.pdf · 2017-05-28 · Estructuras de...
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 1
Tema 1
2005 -2006
Tipos Abstractos de Datos
Objetivos
Repasar los conceptos de abstracción de datos y Tipos Abstractos de Datos (TAD)
Diferenciar adecuadamente los conceptos de especificación e implementación de TAD
Presentar la especificación algebraica como método formal de definición de TAD
Conocer la relación entre TAD y clase en el paradigma de la POO
Conocer la relación entre especificación algebraica e implementación
Contenidos
1.1 Abstracción de datos y Tipos Abstractos de Datos (TAD)
1.2 Especificación algebraica de un TAD
1.2.1 Introducción
1.2.2 Signatura de una especificación algebraica
1.2.3 Ecuaciones de una especificación algebraica
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 2
Tema 1
2005 -2006
Tipos Abstractos de Datos
Duración
4 clases (6 h)
Contenidos
1.3 Construcción de especificaciones
1.3.1 Operaciones: clasificación
1.3.2 Escritura de ecuaciones
1.3.3 Operaciones parciales
1.3.4 Especificaciones genéricas
1.4 Paso de la especificación a la implementación de TAD
1.5 Implementación de TAD: La librería estándar de plantillas (STL)
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 3
Tema 1
2005 -2006
Tipos Abstractos de Datos
Bibliografía
Estructuras de datos. Especificación, diseño e implementaciónAutor: Xavier Franch GutiérrezEditorial: Ediciones UPC, 1999Págs. 19-65
Diseño de programas. Formalismo y abstracciónAutor: Ricardo Peña MaríEditorial : Prentice-Hall, 1999Págs. 155-204
Estructuras de Datos y Métodos AlgorítmicosAutor: Narciso Martí Oliet y otrosEditorial : Prentice-Hall, 2004Págs. 3-37
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 4
Tema 1
2005 -2006
Tipos Abstractos de Datos
1.1 Abstracción de Datos y Tipos Abstractos de Datos
Abstracción de Datos: manipulación de los datos a nivel lógico y abstracción de su implementación física en una determinada máquina o en un determinado lenguaje de programación
Tipos básicos o estándar: entero, carácter, booleano, etc.
Tipos simples definidos por el programador: enumerado, subrango
Tipos estructurados: array, registro → constructores genéricos (genericidad)
Tipos Abstractos de Datos (TAD)
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 5
Tema 1
2005 -2006
Tipos Abstractos de Datos
Tipo Abstracto de Datos
Colección de valores y de operaciones definidas sobre ellos mediante una especificación independiente de cualquier implementación
Un TAD está formado por:
Una definición o especificación• Visible al usuario
• Precisa, legible y no ambigua
• Nombre del tipo + sintaxis y semántica de las operaciones
Una implementación• Oculta al usuario
• Estructurada, eficiente y legible
• Elección de la representación más adecuada + algoritmos de las operaciones
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 6
Tema 1
2005 -2006
Tipos Abstractos de Datos
TAD
Especificación Implementación
Representación AlgoritmosSintaxis Semántica
Objetivo: separar el uso del tipo de dato de su implementación
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 7
Tema 1
2005 -2006
Métodos para especificar un tipo abstracto de datosEspecificación formal (especificación algebraica)
Especificación informal (lenguaje natural)
Especificación semi-formal (la estudiada en Estructuras de Datos I)
Tipos Abstractos de Datos
Para el tipoNombre
Descripción
Características
Valores no admitidos
Para las operacionesParámetros
Valor de retorno
Precondiciones
Efecto
Excepciones
Especificación semi-formal
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 8
Tema 1
2005 -2006
Tipos Abstractos de Datos
Precondiciones vs. Excepciones
Precondiciones:
Contexto muy limitado (fácil verificar que se satisfacen las restricciones), implementación más eficiente o más simple
Excepciones:
Siempre que sea posible, la implementación debería comprobar las restricciones y lanzar una excepción en caso de que no se satisfagan. Puede no tener sentido, como en una búsqueda binaria en un vector ordenado
Si una excepción se produce para un cierto subconjunto de valores de los argumentos, este subconjunto no debería aparecer en la cláusula precondiciones
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 9
Tema 1
2005 -2006
Tipos Abstractos de Datos
Un lenguaje soporta la implementación de tipos abstractos de datos si incluye mecanismos que permitan separar la especificación de la implementación, es decir, permita la encapsulación u ocultación de la información, que consiste en:
Privacidad de la representación interna. El usuario no conoce los detalles de cómo se implementan las estructuras de datos y las operaciones
Protección del tipo. El usuario sólo puede usar las operaciones definidas en la especificación
La clase en los lenguajes OO es el mecanismo apropiado para implementar un TAD
algoritmos + estructuras de datos = programas
algoritmos de datos
algoritmos de control
algoritmos de control + TAD = programas
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 10
Tema 1
2005 -2006
Tipos Abstractos de Datos
1.2 Especificación algebraica de un TAD
1.2.1 Introducción
Especificación algebraica. Técnica formal para especificar tipos abstractos de datos
OBJETIVODefinir sin ambigüedades un tipo de datos
conjunto de valores
sintaxis y significado de cada operación
permitida
VENTAJAS
Define tipos independientemente de cualquier representación e implementación
Consigue unanimidad en la interpretación del tipo
Posibilita la obtención de código automáticamente a partir de la especificación algebraica(aún no muy desarrollado)
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 11
Tema 1
2005 -2006
Tipos Abstractos de Datos
número y tipo de los parámetros, y tipo del resultado
1.2.2 Signatura de una especificación algebraica
Signatura. Define los géneros y los nombres de las operaciones con sus perfiles
CARACTERISTICAS
Notación funcional
Cada operación es una función con 0 o más parámetros
Todas las operaciones devuelven un único valor de un tipo determinado
nombres de los nuevos tipos a especificar
dominio rango
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 12
Tema 1
2005 -2006
Tipos Abstractos de Datos
Ejemplo: Signatura del TAD booleano
palabras reservadas para indicar el comienzo y el
final de una especificación
nombre de los tipos que se van a especificar
nombre de operación perfil de operación
constantes
espec tadBool
género booleano
operacionesverdad, falso : booleano
⎤ _ : booleano booleano
_ ∧ _ , _ ∨ _ : booleano booleano booleano
fespec
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 13
Tema 1
2005 -2006
Tipos Abstractos de Datos
Ejemplo. Posible signatura de los naturales con el 0
Notación prefija. El nombre de la operación y los parámetros entre paréntesis, separados por comas.
suc(x) = y
Notación infija. El símbolo _ indica la posición de los argumentos o
parámetros.
x ≤ y = verdad
importación de TAD definidos en otras especificaciones
espec naturalesusa booleanosgéneros naturaloperaciones
0 : naturalsuc : natural natural_ + _ , _ * _ : natural natural natural_ ≤ _ , _ > _ : natural natural booleano
fespec
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 14
Tema 1
2005 -2006
Tipos Abstractos de Datos
Para cada género o tipo existe un conjunto de términos bien formados ⇒ sintácticamente correctos
Cada constante es un término y mediante la aplicación sucesiva y correcta de símbolos de operaciones de una signatura se pueden construir términos
Ejemplos de términos bien formados :
0
(suc (suc (0)) * suc(0)) ≤ suc(0)
((verdad ∧ falso) ∧ (⎤ falso)) ∨ (0 > (suc (0)))
En determinadas especificaciones, un valor del tipo puede venir expresado por más de un término. Se denomina término canónico al elegido como representante de cada valor
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 15
Tema 1
2005 -2006
Tipos Abstractos de Datos
1.2.3 Ecuaciones de una especificación algebraica
También se conocen con el nombre de axiomas
Determinan las propiedades y el comportamiento de las operaciones
Toda especificación debe cumplir estas dos propiedades:sólo pertenecen al tipo los valores que puedan ser creados mediante términos sintácticamentecorrectos
cada término bien formado denota un único valor del tipo especificado
Mediante las ecuaciones ha de ser posible deducir todas las equivalencias que son válidas entre los términos, es decir, identificar las secuencias de operaciones (términos) que producen el mismo resultado
en general, para las operaciones binarias conmutativas no se añadirán en la especificación las ecuaciones de conmutatividad de la forma: x1 OP x2 = x2 OP x1, salvo en el caso que sirvan para definir el comportamiento de dicha operación.
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 16
Tema 1
2005 -2006
Tipos Abstractos de Datos
Ejemplo. Queremos especificar el tipo naturales con el 0
espec naturales_1género naturaloperaciones
0 : naturalsuc : natural natural
fespec
únicos valores que pueden construirse:
0, suc (0), suc (suc (0)), suc (suc (suc (0))), etc.
cada término denota un valor diferente
Añadimos a la especificación la operación suma
espec naturales_2género naturaloperaciones
0 : naturalsuc : natural natural_ + _ : natural natural natural
fespec
incumple la segunda propiedad
"suc (0)" y "0 + suc (0)“ generan el natural 1
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 17
Tema 1
2005 -2006
Tipos Abstractos de Datos
Existen 2 puntos de vista respecto al papel de las ecuaciones en las especificaciones algebraicas:
igualar términos que generan el mismo valor (punto de vista algebraico)
definir el comportamiento de las operaciones con todas las posibles combinaciones de valores (patrones) que pueden tomar sus parámetros (punto de vista semántico)
Formato de una ecuación: término_1 = término_2
donde término_1 y término_2 son términos bien formados de un mismo género
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 18
Tema 1
2005 -2006
Tipos Abstractos de Datos
espec naturales_3
género natural
operaciones
0 : natural
suc : natural natural
_ + _ : natural natural natural
ecuaciones x, y: natural
x + 0 = x
x + suc (y) = suc (x+y)
fespec
Punto de vista algebraicoigualar términos que generan el mismo valor
Punto de vista semántico
definir el comportamiento de las operaciones con todos los patrones o representantes del tipo
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 19
Tema 1
2005 -2006
Tipos Abstractos de Datos
Ejemplo. Completar la especificación algebraica de los booleanos
espec boolgénero booleanooperaciones
verdad, falso: booleano⎤ _: booleano_ ∧ _ , _ ∨ _ : booleano booleano booleano
ecuaciones b: booleano⎤ verdad = falso⎤ falso = verdad
b ∨ verdad = verdad verdad ∨ b = verdadb ∨ falso = b falso ∨ b = b
b ∧ verdad = b verdad ∧ b = bb ∧ falso = falso falso ∧ b = falso
fespec
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 20
Tema 1
2005 -2006
Tipos Abstractos de Datos
1.3 Construcción de especificaciones
1.3.1 Operaciones: clasificación
g: símbolo o identificador del género correspondiente al tipo que se desea especificar
OP(g): conjunto de operaciones relacionadas con g
Clasificación:
Constructoras. Cons(g). Conjunto de operaciones que devuelven un valor de género g
Generadoras. Gen(g). Subconjunto mínimo de operaciones constructoras que permite generar todos los valores del TAD que queremos especificar
Modificadoras. Mod(g). Las constructoras que no forman parte del conjunto de generadoras
Observadoras. Obs(g). Conjunto de operaciones que devuelven un valor de género diferente de g
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 21
Tema 1
2005 -2006
Tipos Abstractos de Datos
espec naturales
usa booleanos
género natural
operaciones
0 : natural
suc: natural natural
_ + _ : natural natural natural
_ ≤ _ : natural natural booleano
fespec
Naturalespec secuenciaDeNaturales
usa naturales_3
género secN
operaciones[ ] : secN {secuencia vacía}
[ _ ] : natural secN {secuencia unitaria}
_ ++ _ : secN secN secN {concatenar secuencias}
_ ⊕ _ : natural secN secN{añadir un natural a una secuencia}
ecuaciones x: natural; s, s1, s2, s3: secN
s ++ [ ] = s
[ ] ++ s = s
(s1 ++ s2) ++ s3 = s1 ++ (s2 ++ s3)
x ⊕ s = [x] ++ s
fespec
Secuencia
¿Clasificación de las operaciones?
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 22
Tema 1
2005 -2006
Tipos Abstractos de Datos
El conjunto Gen(g) puede ser:
Conjunto libre de generadoras: todo término formado sólo por constructoras generadoras denota un valor diferente en el tipo de datos correspondiente a g
Conjunto no libre de generadoras: dos o más términos distintos formados sólo por constructoras generadoras denotan un mismo valor del tipo
¿Son libres o no libres los siguientes conjuntos de generadoras?
• Gen (natural) = {0, suc}
• Gen (secN) = { [ ], _ ⊕ _ }
• Gen (secN) = { [ ], [ _ ], _ ++ _ }
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 23
Tema 1
2005 -2006
Tipos Abstractos de Datos
1.3.2 Escritura de ecuaciones
Paso 1. Elegir conjunto de operaciones generadoras
Paso 2. Si Gen(g) es un conjunto no libre, escribir ecuaciones entre generadoras. Si es libre, no hacer nada
Paso 3. Escribir todas las ecuaciones necesarias para definir el comportamiento de cada operación modificadora (especificación naturales_3)
Paso 4. Escribir todas las ecuaciones necesarias para definir el comportamiento de cada operación observadora
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 24
Tema 1
2005 -2006
Tipos Abstractos de Datos
1.3.3 Operaciones parciales
Ejemplo. Queremos añadir la operación predecesor a los naturales
espec naturales_4género naturaloperaciones
0 : naturalsuc : natural naturalparcial pred: natural natural
dominios de definición x: natural
pred (suc (x))
ecuaciones x: natural
pred (suc (x)) = xfespec
la operación predecesor no está definida para el natural 0 (situación de error)
es una operación parcial → no puede aplicarse a todos los valores del dominio
en la sección "dominios de definición" se especifican los dominios donde están definidas las operaciones parciales de la especificación
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 25
Tema 1
2005 -2006
Tipos Abstractos de Datos
1.3.4 Especificaciones genéricas
Generalmente, los TAD que representan colecciones de elementos suelen realizarse de forma genérica, dejando como parámetro el elemento almacenado en la colección
Las operaciones de estos TAD se comportan de la misma forma, independientemente del tipo de los elementos que almacena
espec secuenciaGenéricaparámetro formal
género elementofpf
género secoperaciones
[ ] : sec {secuencia vacía}
[ _ ] : elemento sec {secuencia unitaria}
_ ++ _ : sec sec sec {concatenar secuencias}
_ ⊕ _ : elemento sec sec {añadir un elemento a una secuencia}
ecuaciones…
fespec
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 26
Tema 1
2005 -2006
Tipos Abstractos de Datos
Ejemplos de especificaciones
espec conjuntosusa booleanos, naturalesparámetro formal
género elementofpfgenero conjuntooperaciones
∅: conjuntoponer, quitar: elemento conjunto conjunto_ ∪ _ , _ ∩ _ : conjunto conjunto conjunto_ ∈ _ : elemento conjunto booleanoesVacío: conjunto booleanocardinal: conjunto natural
Ejemplo 1. Completar la especificación algebraica del TAD Conjuntos
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 27
Tema 1
2005 -2006
Tipos Abstractos de Datos
Ejemplos de especificaciones
espec string_reducidousa carácter, naturalgénero stringoperacionesstringVacío: string { crea un string vacío }añade: string carácter string { añade un elemento al final del string }longitud: string natural { devuelve el número de caracteres que forman el string }parcial carac: natural string carácter
{ devuelve el carácter que se encuentra en la posición indicada por el parámetro. El carácter situado a la izquierda se encuentra en la posición 1 }
concatena: string string string { devuelve el resultado de poner el segundo string al final del primero }inversa: string string { devuelve el string formado por los mismos caracteres pero en orden inverso }
Ejemplo 2. Completar la especificación algebraica del TAD string_reducido
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 28
Tema 1
2005 -2006
Dada la especificación de un TAD, su implementación consiste en:
Elegir un dominio concreto para cada género incluido en el TADLos dominios concretos se implementan mediante declaraciones de tipos, usando otros tipos ya implementados (por nosotros o incluidos en el propio lenguaje o en alguna librería)
Definir un método concreto para cada operación de la especificaciónLos métodos concretos pueden implementarse como procedimientos o funciones aunque en la especificación algebraica sólo se admitan funciones
La implementación debe cumplir 2 condiciones:
Corrección ⇒ satisfacer las ecuaciones de la especificaciónNo vamos a considerar la verificación de las implementaciones con respecto a la especificación algebraica. Requiere un desarrollo formal muy amplio. A pesar de ello, pueden establecerse relaciones “intuitivas” entre especificación e implementación
Privacidad y protecciónLa estructura interna del tipo y la implementación de sus operaciones deben permanecer ocultas
El único acceso posible al tipo debe ser a través de las operaciones públicas de éste
1.4 Paso de la especificación a la implementación de TAD
Tipos Abstractos de Datos
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 29
Tema 1
2005 -2006
La librería estándar de plantillas o STL (Standard Template Library) es un conjunto de TAD y algoritmos que conforman una parte sustancial de la Librería Estándar de C++
Sus componentes principales son:
ContenedoresEstructuras de datos cuyo propósito es contener otros objetos
IteradoresAbstracción que permite el acceso secuencial a los elementos de un contenedorSTL proporciona iteradores para todos sus contenedores
AlgoritmosFunciones genéricas que permiten realizar operaciones habituales (buscar, ordenar, mínimo, máximo, iguales, …) sobre la mayoría de contenedores
1.5 Implementación de TAD: La librería estándar de plantillas (STL)
Tipos Abstractos de Datos
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 30
Tema 1
2005 -2006
Contenedores
Secuencias: dispone los elementos en orden lineal
• Vector
• Pila
• Cola
• Doble cola
• Cola de prioridad
• Lista
Asociativos: permite el almacenamiento de elementos en función de una clave (no de una posición)
• Conjunto
• Multiconjunto: conjunto que admite valores repetidos
• Diccionario: asocia un valor a una clave
• Multidiccionario: diccionario en el que una clave puede tener asociada diferentes valores
Tipos Abstractos de Datos