abstracción en los lenguajes de programación y tipo de dato abstracto (tad)

38
Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD) Estructuras de datos (Prof. Edgardo A. Franco) 1 Prof. Daniel Cruz García http://mx.groups.yahoo.com/group/danielCG_materialdidactico/ [email protected]

Upload: daniel-cg

Post on 09-Aug-2015

80 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Abstracción en los lenguajes de programacióny tipodedato abstracto (TAD)

Estructuras de datos (Prof. Edgardo A. Franco)

1Prof. Daniel Cruz Garcíahttp://mx.groups.yahoo.com/group/danielCG_materialdidactico/[email protected]

Page 2: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Contenido• Abstracción• Mecanismos de abstracción en programación

• Por parametrización• Por especificación

• Tipos de abstracción• Abstracción Procedimental• Abstracción de Iteración• Abstracción de datos

• Tipo abstracto de dato (TAD)• Visiones de un TAD• Separación de la interfaz e implementación• Caracterización• Operaciones sobre un TAD• Especificación genérica de un TAD

• Especificación de los TAD• Especificación informal o genérica• Especificación formal

• Método axiomático o algebraico• Método constructivo u operacional

• Estructura de la especificación para los TAD’s en el curso• Mapa conceptual 01

2

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 3: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Abstracción• Abstracción: Operación intelectual que ignora

selectivamente partes de un todo para facilitar sucomprensión.

• Abstracción en la resolución de problemas:Ignorar detalles específicos buscandogeneralidades que ofrezcan una perspectivadistinta, mas favorable a su resolución, i.e. es unadescomposición en que se varía el nivel de detalle.

La abstracción sirve para:Problema bajo un contexto Representación detallada ymodularizada bajo otro contexto

3

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 4: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Abstracción• Propiedades de una descomposición útil:

• Todas las partes deben estar al mismo nivel.• Cada parte debe poder ser abordada por separado.• La solución de cada parte debe poder unirse al resto para

obtener la solución final.

4

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 5: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Mecanismosdeabstracciónenprogramación

• Abstracción por parametrización: Se introducenparámetros para abstraer un numero infinito decomputaciones.• Ejemplo: calculo de cos β

• Abstracción por especificación: Permite abstraersede la implementación concreta de un procedimientoasociándole una descripción precisa de sucomportamiento.• Ejemplo: double sqrt (double a);

• Requisitos: a >0;• Efecto: devuelve una aproximación de

• La especificación es un comentario lo suficientemente definido yexplicito como para poder usar el procedimiento sin necesitarconocer otros elementos.

a

5

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 6: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Abstracciónporparametrización

• En una abstracción por parametrización seobtienen las abstracciones procedimentales

• La definición de parámetros nos permite abstraer suvalor concreto (actual).

• También abstraemos la particularidad de la ejecuciónconcreta.

calculo de cos β6

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 7: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Abstracciónporespecificación

Una abstracción por especificación, se sueleexpresar en términos de:

• Precondición: Condiciones necesarias ysuficientes para que el procedimiento secomporte como se prevé.

• Postcondición: Enunciados que se suponenciertos tras la ejecución del procedimiento, si secumplió la precondición. 7

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 8: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

int busca_minimo(float * array, int num_elem)

/*precondicion:- num_elem > 0.- 'array' es un vector con 'num_elem'componentes.

postcondicion:devuelve la posición del mínimo elementodentro del 'array'.*/ 8

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 9: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Esquema de abstracción por especificación

9

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 10: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

• Abstracción Procedimental: Definimos unconjunto de operaciones (procedimiento) que secomporta como una operación.

• Abstracción de Iteración: Abstracción que permitetrabajar sobre colecciones de objetos sin tener quepreocuparse por la forma concreta en que seorganizan.

• Abstracción de Datos: Tenemos un conjunto dedatos y un conjunto de operaciones quecaracterizan el comportamiento del conjunto. Lasoperaciones están vinculadas al tipo de abstraccióndel dato.

10

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 11: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Abstracciónprocedimental• Permite abstraer un conjunto preciso de operaciones de

computo como una operación simple.

• La identidad de los datos no es relevante para el diseño.Solo interesa el numero de parámetros y su tipo.

• Con la abstracción por especificación es irrelevante laimplementación, pero no que hace.

• Localidad: Para implementar una abstracción procedimental noes necesario conocer la implementación de otras que se usen,solo su especificación.

• Modificabilidad: Se puede cambiar la implementación de unaabstracción procedimental sin afectar a otras abstracciones quela usen, siempre y cuando no cambie la especificación.

11

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 12: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Abstraccióndeiteración• La abstracción de iteración y los iteradores:

Los iteradores son una generalización delmecanismo de iteración disponible en lamayoría de los lenguajes de programación.Éstos permiten a los usuarios iterar sobre lostipos de datos arbitrarios de un modo práctico yeficaz.

• E.g. llevar a cabo alguna operación para cada uno delos elementos de un arreglo.

• Para todos elementos del conjunto -> hacer acción12

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 13: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Abstraccióndedatos• Abstraer datos se refiere a especificar un conjunto

de datos y operaciones que caracterizan elcomportamiento del conjunto. A todo el proceso deextraer, definir, implementar y especificar es a loque llamamos Abstracción de Datos.

• Abstracción de datos implica:• Especificar: Descripción del comportamiento del TAD.• Representar: Forma concreta en que se representan los

datos en un lenguaje de programación para podermanipularlos.

• Implementar: La forma especifica en que se expresan lasoperaciones.

13

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 14: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Laabstraccióndedatos• Tipo de datos: proporcionados por los leguajes de alto

nivel. La representación usada es invisible alprogramador, al cual solo se le permite ver lasoperaciones predefinidas para cada tipo.

• Tipos definidos por el programador: que posibilitan ladefinición de valores de datos más cercanos alproblema que se pretende resolver. (p.g. definirestructuras en C).

• Tipo abstracto de dato (TAD): para la definición yrepresentación de tipos de datos (valores +operaciones), junto con sus propiedades.

• Objetos: Son TAD a los que se añade propiedades dereutilización y de compartición de código.

14

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 15: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

TipoAbstractodeDato(TAD)“TAD y Abstracción de Datos no son lo mismo”

• Tipo Abstracto de Dato (TAD): Entidadabstracta formada por un conjunto de datosorganizados en cierta estructura y unacolección de operaciones asociadasespecificados formalmente.

15

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 16: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

• Estrictamente un tipo de dato abstracto (TDA)o tipo abstracto de datos (TAD) es un modelomatemático compuesto por una colección deoperaciones definidas sobre un conjunto dedatos para el modelo.

16

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 17: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

VisionesdeunTAD• Hay dos visiones de un TAD:

• Visión externa: especificación.• Visión interna: representación e implementación.

• Ventajas de la separación:• Se puede cambiar la visión interna sin afectar a la externa.• Facilita la labor del programador permitiéndole

concentrarse en cada fase por separado.

17

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 18: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Separacióndelainterfazeimplementación

• Cuando se usa en un programa de computación, unTAD es representado por su interfaz, la cual sirvecomo cubierta a la correspondiente implementación.

• Los usuarios de un TAD tienen que preocuparse por lainterfaz, pero no por la implementación. Esto se basa enel concepto de ocultación de información yproporciona una protección para el programa.

• La solidez de un TAD reposa en la idea de que laimplementación está escondida al usuario. Solo lainterfaz es pública, i.e. el TAD puede ser implementadode diferentes formas, pero mientras se mantengaconsistente con la interfaz, los programas que lo usanno se ven afectados.

18

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 19: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Caracterización• Cuando hablemos de un TAD no se hace ninguna

alusión al tipo de los elementos sino tan sólo a laforma en que están dispuestos estoselementos. Sólo nos interesa la estructura quesoporta la información y sus operaciones. Paradeterminar el comportamiento estructural basta conobservar la conducta que seguirán los datos.

• Un TAD tendrá una parte que será invisible alusuario la cual hay que proteger y que se puededecir que es irrelevante para el uso del usuario yestá constituida tanto por la maquinaria algorítmicaque implemente, la semántica de las operaciones ypor los datos que sirvan de enlace entre loselementos del TAD.

19

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 20: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

• Un TAD representa una abstracción de datos:• Se destacan los detalles (normalmente pocos) de

la especificación (el qué).

• Se ocultan los detalles (casi siempre numerosos) de la implementación (el cómo).

Interfaz

Datos

20

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 21: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

• Constructora: Crea elementos del TAD.• Modificadora: Permite alterar el estado de un elemento del TAD.• Analizadora: Permite consultar por el estado del objeto y retornar algúntipo de información.

• Persistencia: Permiten almacenar un TAD indefinidamente.• P.g. Analizadoras:

• Comparación de igualdad entre objetos.• Salida en pantalla, permite visualizar el estado de un elemento del TAD (sirve como base para

alguna interfaz o depuración en pruebas).

• P.g. Modificadoras:• Copiar un elemento por otro, cambiando su estado.• Destrucción, retorna el espacio de memoria dinámica ocupada por un elemento.

• P.g. Persistencia:• Operaciones que permiten guardar/leer el estado de un elemento desde un medio de

almacenamiento secundario.21

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 22: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

• Nombre del TAD• Representación abstracta • Restricciones• Lista de Operaciones• Definición de cada operación

• P.g.• TAD Matriz• Representación abstracta:

• Restricciones: n>0, m>0• Lista de Operaciones:

• CrearMatriz(i, j)• AsignarMatriz(M, i, j, valor)• ObtenerDatoMatriz(M, i, j)• SumaMatriz(M1, M2)

X i,j

0

0

i

j m‐1

n‐1

MatrizNegativa(M) RestarMatriz(M1, M2) MatrizInversa(M) MostrarMatriz(M)

EspecificacióngenéricadeunTAD

22

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 23: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

EspecificacióndelosTAD's• Especificar: Determinar, explicar algo con todos los detalles

precisos para su identificación o entendimiento.

Una mala especificación de la interfaz Especificación técnica de un producto

23

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 24: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

EspecificacióndelosTAD• Se establecen sus propiedades, se define totalmente su

comportamiento, pero no se dice nada sobre suimplementación.

• Indica el tipo de entidades que modela, que operaciones seles pueden aplicar, como se usan y que hacen.

EspecificaciónUsuario programador Implementación

24

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 25: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

CaracterísticasdelaespecificacióndeunTAD

• Precisa: Menciona únicamente aquello que esimprescindible.

• General: Se adapta a los diferentes contextos que sepodrían llegar a manejar.

• Legible: Debe ser entendible para lograr una comunicaciónclara entre el especificador, el implementador y los usuariosdel tipo.

• No ambigua: Que evite futuros problemas en la manera deinterpretarse. 25

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 26: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Especificacionesinformalesogenéricas• En este tipo de especificación a veces se llega acierta ambigüedad e imprecisión ya que sudescripción se realiza en un lenguaje más natural.

• Explicación redactada• Apoyada en imágenes y diagramas• Sencilla y fácil de entender

26

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 27: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

EspecificacióninformaldeunTAD

• Se apoya de una explicación en lenguaje natural,imágenes y diagramas, donde se mencionan los objetossobre los que opera el TAD, la estructura del TAD y lasposibles operaciones sobre el mismo.

27

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 28: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

EspecificaciónformaldeunTAD(Ejemplo1:TADNúmeroNatural)• Un número natural es cualquiera de los números que se usanpara contar los elementos de un conjunto (el cero es elnúmero de elementos del conjunto vacío).

• El conjunto de los números naturales se representa por ycorresponde al siguiente conjunto numérico:

• Los números naturales son un conjunto cerrado para lasoperaciones de la adición y la multiplicación, ya que al operarcon cualquiera de sus elementos, resulta siempre un númeroperteneciente a.

28

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 29: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Especificacionesformales• En este tipo de especificación no debe haberimprecisión. En esta especificación la descripción serealiza mediante reglas algebraicas o expresionesestándares que no permiten ambigüedad en ladescripción• Se expresan en un lenguaje formal• Lenguajes algebraicos• Compleja

• Una especificación formal de tipo de datos abstracto consta de cuatrosecciones: TIPOS, FUNCIONES, AXIOMAS y PRE‐CONDICIONES. 29

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 30: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

EspecificaciónformaldeunTAD• La especificación formal de un TAD describe un TADy sus operaciones de manera precisa sinambigüedades apoyándose en lenguajes formalesque permitan que cualquiera entienda el mismosignificado de las operaciones, los datos y lascaracterísticas de un TAD.

• Comúnmente se emplean notaciones formales paradefinir la semántica, ya sea a través de métodosaxiomáticos o algebraicos o método constructivos uoperacionales.

30

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 31: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Notacionesformalesparadefinirlasemántica

• Las distintas notaciones formales existentes difierenen la forma de definir la semántica:

• Método axiomático o algebraico: Se establece elsignificado de las operaciones a través de relaciones entreoperaciones (axiomas).• Significado implícito de las operaciones.

• Método constructivo u operacional: Se define cadaoperación por sí misma, independientemente de las otras.Significado explícito de las operaciones. 31

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 32: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Definicióndelasemántica(Métodoaxiomáticooalgebraico)

• Este tipo de especificación consiste en ladeterminación del como hay que escribir lasoperaciones de un TAD, proporcionando el tipo deoperandos y el tipo de resultados.

• P.g.• int ‘+’ (int a,b)• int ‘‐‘ (int a,b)• int abs (int a)

32

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 33: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Definicióndelasemántica(Métodoaxiomáticooalgebraico)

• La notación algebraica y ecuaciones consisten enproporcionar un conjunto de axiomas y operacionesverificadas para cada una de las operaciones de un TAD.

• P.g. Tipo String.• Podemos definir el tipo String como:• {a| a=<a1, . . , an>, ai es carácter, n ≤ N}

33

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 34: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

• Nombre: natural 

• Conjuntos: N conjunto de naturales, B conjunto de valores booleanos.

• Sintaxis:• cero: → N • sucesor: N → N • escero: N → B • igual: N x N → B • suma: N x N → N

EspecificaciónformaldeunTADEjemplo1Definicióndelasemánticamedianteelmétodoaxiomáticooalgebraico:(TADNúmerosNaturales)

34

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 35: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

• Semántica: para todo m y n pertenecientes a N• 1. escero (cero) = true • 2. escero (sucesor (n)) = false • 3. igual (cero, n) = escero (n) • 4. igual (sucesor (n), cero) = false • 5. igual (sucesor (n), sucesor (m)) = igual (n, m) • 6. suma (cero, n) = n • 7. suma (sucesor (m), n) = sucesor (suma (m, n))

EspecificaciónformaldeunTADEjemplo1Definicióndelasemánticamedianteelmétodoaxiomáticooalgebraico:(TADNúmerosNaturales)

35

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 36: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

Definicióndelasemántica(Métodoconstructivouoperacional)

• Método constructivo u operacional: En la semántica de este método se establecen las precondiciones y las postcondiciones de las operaciones: 

• Precondición: Relación que se debe cumplir con los datos de entrada para que la operación se pueda aplicar. 

• Postcondición: Relaciones que se cumplen después de ejecutar la operación. No debe incluir detalles de implementación. 

36

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 37: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

max_restring: Z x Z → Z

pre‐max_restring (x, y) ::= (x > 0) ^ (y > 0)post‐max_restring (x, y; r) ::= (r ≥ x) ^ (r ≥ y) ^ (r=x V r=y) 

• ¿Qué sucedería si x o y no son mayores que 0?• No se cumple la precondición y no podríamos asegurar que se cumpla la potscondición.

EspecificaciónformaldeunTADEjemplo2Definicióndelasemánticamedianteelmétodoconstructivouoperacional:(TADNúmerosNaturales)

37

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía

Page 38: Abstracción en los lenguajes de programación y tipo de dato abstracto (TAD)

EstructuradelaespecificaciónparalosTAD’s enelcurso“Para el curso de Estructuras de Datos emplearemos la siguiente estructura 

de especificación, dentro de la cuál se utilizaran especificaciones tanto formales como informales según sea el TAD a especificar”

1. Cabecera: nombre del tipo y listado de las operaciones.

2. Definición: Descripción del comportamiento sin indicar larepresentación. Se debe indicar si el tipo es mutable o no. También seexpresa donde residen los datos internos.

3. Operaciones: Especificar las operaciones una por una comoabstracciones procedimentales• Condición de los parámetros de entrada de las operaciones.• Resultados de las operaciones

4. Observaciones38

Estructuras d

e datos

Abstracción en

 los len

guajes de programación y tip

o de

 dato abstracto

Prof. D

aniel Cruz G

arcía