tema 1 tipos abstractos de datosmcast/esdatos/tads/ttema1_0506.pdf · 2017-05-28 · estructuras de...

30
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

Upload: others

Post on 12-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

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