Está en la página 1de 38

Abstraccin en los lenguajes de programacin y tipo de dato abstracto (TAD)

Prof.DanielCruzGarca http://mx.groups.yahoo.com/group/danielCG_materialdidactico/ daniel.cruzgr@gmail.com


Estructurasdedatos(Prof.EdgardoA.Franco)

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Abstraccin Mecanismosdeabstraccinenprogramacin
Porparametrizacin Porespecificacin

Tiposdeabstraccin
AbstraccinProcedimental AbstraccindeIteracin Abstraccindedatos

Tipoabstractodedato(TAD)
VisionesdeunTAD Separacindelainterfazeimplementacin Caracterizacin OperacionessobreunTAD EspecificacingenricadeunTAD

EspecificacindelosTAD
Especificacininformalogenrica Especificacinformal
Mtodoaxiomticooalgebraico Mtodoconstructivouoperacional

EstructuradelaespecificacinparalosTADs enelcurso Mapaconceptual01

Prof.DanielCruzGarca

Contenido

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Abstraccin: Operacin intelectual que ignora selectivamente partes de un todo para facilitar su comprensin. Abstraccin en la resolucin de problemas: Ignorar detalles especficos buscando generalidades que ofrezcan una perspectiva distinta, mas favorable a su resolucin, i.e. es una descomposicin en que se vara el nivel de detalle. La abstraccin sirve para:
Problema bajo un contexto Representacin detallada y modularizada bajo otro contexto

Prof.DanielCruzGarca

Abstraccin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Propiedades de una descomposicin til:


Todas las partes deben estar al mismo nivel. Cada parte debe poder ser abordada por separado. La solucin de cada parte debe poder unirse al resto para obtener la solucin final.

Prof.DanielCruzGarca

Abstraccin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Abstraccin por parametrizacin: Se introducen parmetros para abstraer un numero infinito de computaciones.
Ejemplo: calculo de cos

Abstraccin por especificacin: Permite abstraerse de la implementacin concreta de un procedimiento asocindole una descripcin precisa de su comportamiento.
Ejemplo: double sqrt (double a);
Requisitos: a >0; Efecto: devuelve una aproximacin de

a
5

La especificacin es un comentario lo suficientemente definido y explicito como para poder usar el procedimiento sin necesitar conocer otros elementos.

Prof.DanielCruzGarca

Mecanismos de abstraccin en programacin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

En una abstraccin por parametrizacin se obtienen las abstracciones procedimentales


La definicin de parmetros nos permite abstraer su valor concreto (actual). Tambin abstraemos la particularidad de la ejecucin concreta. calculo de cos

Prof.DanielCruzGarca

Abstraccin por parametrizacin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Una abstraccin por especificacin, se suele expresar en trminos de: Precondicin: Condiciones necesarias y suficientes para que el procedimiento se comporte como se prev. Postcondicin: Enunciados que se suponen ciertos tras la ejecucin del procedimiento, si se cumpli la precondicin.

Prof.DanielCruzGarca

Abstraccin por especificacin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

int busca_minimo(float * array, int num_elem)

/* precondicion: - num_elem > 0. - 'array' es un vector con 'num_elem' componentes. postcondicion: devuelve la posicin del mnimo elemento dentro del 'array'. */

Prof.DanielCruzGarca

Estructurasdedatos

Esquema de abstraccin por especificacin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Prof.DanielCruzGarca

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Abstraccin Procedimental: Definimos un conjunto de operaciones (procedimiento) que se comporta como una operacin. Abstraccin de Iteracin: Abstraccin que permite trabajar sobre colecciones de objetos sin tener que preocuparse por la forma concreta en que se organizan. Abstraccin de Datos: Tenemos un conjunto de datos y un conjunto de operaciones que caracterizan el comportamiento del conjunto. Las operaciones estn vinculadas al tipo de abstraccin del dato.

10

Prof.DanielCruzGarca

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Permite abstraer un conjunto preciso de operaciones de computo como una operacin simple. La identidad de los datos no es relevante para el diseo. Solo interesa el numero de parmetros y su tipo. Con la abstraccin por especificacin es irrelevante la implementacin, pero no que hace.
Localidad: Para implementar una abstraccin procedimental no es necesario conocer la implementacin de otras que se usen, solo su especificacin. Modificabilidad: Se puede cambiar la implementacin de una abstraccin procedimental sin afectar a otras abstracciones que la usen, siempre y cuando no cambie la especificacin.

11

Prof.DanielCruzGarca

Abstraccin procedimental

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

La abstraccin de iteracin y los iteradores: Los iteradores son una generalizacin del mecanismo de iteracin disponible en la mayora de los lenguajes de programacin. stos permiten a los usuarios iterar sobre los tipos de datos arbitrarios de un modo prctico y eficaz.
E.g. llevar a cabo alguna operacin para cada uno de los elementos de un arreglo.

12

Para todos elementos del conjunto -> hacer accin

Prof.DanielCruzGarca

Abstraccin de iteracin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Abstraer datos se refiere a especificar un conjunto de datos y operaciones que caracterizan el comportamiento del conjunto. A todo el proceso de extraer, definir, implementar y especificar es a lo que llamamos Abstraccin de Datos. Abstraccin de datos implica:
Especificar: Descripcin del comportamiento del TAD. Representar: Forma concreta en que se representan los datos en un lenguaje de programacin para poder manipularlos. Implementar: La forma especifica en que se expresan las operaciones.

13

Prof.DanielCruzGarca

Abstraccin de datos

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Tipo de datos: proporcionados por los leguajes de alto nivel. La representacin usada es invisible al programador, al cual solo se le permite ver las operaciones predefinidas para cada tipo. Tipos definidos por el programador: que posibilitan la definicin de valores de datos ms cercanos al problema que se pretende resolver. (p.g. definir estructuras en C). Tipo abstracto de dato (TAD): para la definicin y representacin de tipos de datos (valores + operaciones), junto con sus propiedades. Objetos: Son TAD a los que se aade propiedades de reutilizacin y de comparticin de cdigo.

14

Prof.DanielCruzGarca

La abstraccin de datos

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

TAD y Abstraccin de Datos no son lo mismo

Tipo Abstracto de Dato (TAD): Entidad abstracta formada por un conjunto de datos organizados en cierta estructura y una coleccin de operaciones asociadas especificados formalmente.

15

Prof.DanielCruzGarca

Tipo Abstracto de Dato (TAD)

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estrictamente un tipo de dato abstracto (TDA) o tipo abstracto de datos (TAD) es un modelo matemtico compuesto por una coleccin de operaciones definidas sobre un conjunto de datos para el modelo.

Estructurasdedatos

16

Prof.DanielCruzGarca

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Hay dos visiones de un TAD:


Visin externa: especificacin. Visin interna: representacin e implementacin.

Ventajas de la separacin:

Se puede cambiar la visin interna sin afectar a la externa. Facilita la labor del programador permitindole concentrarse en cada fase por separado.

17

Prof.DanielCruzGarca

Visiones de un TAD

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Cuando se usa en un programa de computacin, un TAD es representado por su interfaz, la cual sirve como cubierta a la correspondiente implementacin. Los usuarios de un TAD tienen que preocuparse por la interfaz, pero no por la implementacin. Esto se basa en el concepto de ocultacin de informacin y proporciona una proteccin para el programa. La solidez de un TAD reposa en la idea de que la implementacin est escondida al usuario. Solo la interfaz es pblica, i.e. el TAD puede ser implementado de diferentes formas, pero mientras se mantenga consistente con la interfaz, los programas que lo usan no se ven afectados.

18

Prof.DanielCruzGarca

Separacin de la interfaz e implementacin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Cuando hablemos de un TAD no se hace ninguna alusin al tipo de los elementos sino tan slo a la forma en que estn dispuestos estos elementos. Slo nos interesa la estructura que soporta la informacin y sus operaciones. Para determinar el comportamiento estructural basta con observar la conducta que seguirn los datos. Un TAD tendr una parte que ser invisible al usuario la cual hay que proteger y que se puede decir que es irrelevante para el uso del usuario y est constituida tanto por la maquinaria algortmica que implemente, la semntica de las operaciones y por los datos que sirvan de enlace entre los elementos del TAD.

19

Prof.DanielCruzGarca

Caracterizacin

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Se destacan los detalles (normalmente pocos) de la especificacin (el qu). Se ocultan los detalles (casi siempre numerosos) de la implementacin (el cmo).

Interfaz
Datos

20

Prof.DanielCruzGarca

Un TAD representa una abstraccin de datos:

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

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 algn tipo de informacin. Persistencia: Permiten almacenar un TAD indefinidamente. P.g. Analizadoras:
Comparacin de igualdad entre objetos. Salida en pantalla, permite visualizar el estado de un elemento del TAD (sirve como base para alguna interfaz o depuracin en pruebas).

P.g. Modificadoras:
Copiar un elemento por otro, cambiando su estado. Destruccin, retorna el espacio de memoria dinmica ocupada por un elemento.

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

21

Prof.DanielCruzGarca

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

NombredelTAD Representacinabstracta Restricciones ListadeOperaciones Definicindecadaoperacin P.g.


TADMatriz Representacinabstracta:
0 0 i j m1

X i,j

Restricciones:n>0,m>0 ListadeOperaciones: CrearMatriz(i,j) AsignarMatriz(M,i,j,valor) ObtenerDatoMatriz(M,i,j) SumaMatriz(M1,M2)

n1

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

22

Prof.DanielCruzGarca

Especificacin genrica de un TAD

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Especificar: Determinar, explicar algo con todos los detalles precisos para su identificacin o entendimiento.

23
Unamalaespecificacindelainterfaz Especificacintcnicadeunproducto

Prof.DanielCruzGarca

Especificacin de los TAD's

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Se establecen sus propiedades, se define totalmente su comportamiento, pero no se dice nada sobre su implementacin. Indica el tipo de entidades que modela, que operaciones se les pueden aplicar, como se usan y que hacen.

Usuarioprogramador

Especificacin

Implementacin

24

Prof.DanielCruzGarca

Especificacin de los TAD

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Precisa: Menciona imprescindible.

nicamente

aquello

que

es

General: Se adapta a los diferentes contextos que se podran llegar a manejar. Legible: Debe ser entendible para lograr una comunicacin clara entre el especificador, el implementador y los usuarios del tipo. No ambigua: Que evite futuros problemas en la manera de interpretarse.

25

Prof.DanielCruzGarca

Caractersticas de la especificacin de un TAD

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

En este tipo de especificacin a veces se llega a cierta ambigedad e imprecisin ya que su descripcin se realiza en un lenguaje ms natural.
Explicacin redactada Apoyada en imgenes y diagramas Sencilla y fcil de entender

26

Prof.DanielCruzGarca

Especificaciones informales o genricas

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Se apoya de una explicacin en lenguaje natural, imgenes y diagramas, donde se mencionan los objetos sobre los que opera el TAD, la estructura del TAD y las posibles operaciones sobre el mismo.

27

Prof.DanielCruzGarca

Especificacin informal de un TAD

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

(Ejemplo 1: TAD Nmero Natural)


Un nmero natural es cualquiera de los nmeros que se usan para contar los elementos de un conjunto (el cero es el nmero de elementos del conjunto vaco). El conjunto de los nmeros naturales se representa por corresponde al siguiente conjunto numrico: y

Los nmeros naturales son un conjunto cerrado para las operaciones de la adicin y la multiplicacin, ya que al operar con cualquiera de sus elementos, resulta siempre un nmero perteneciente a.

28

Prof.DanielCruzGarca

Especificacin formal de un TAD

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

En este tipo de especificacin no debe haber imprecisin. En esta especificacin la descripcin se realiza mediante reglas algebraicas o expresiones estndares que no permiten ambigedad en la descripcin
Se expresan en un lenguaje formal Lenguajes algebraicos Compleja
Una especificacin formal de tipo de datos abstracto consta de cuatro secciones: TIPOS, FUNCIONES, AXIOMAS y PRECONDICIONES.

29

Prof.DanielCruzGarca

Especificaciones formales

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

La especificacin formal de un TAD describe un TAD y sus operaciones de manera precisa sin ambigedades apoyndose en lenguajes formales que permitan que cualquiera entienda el mismo significado de las operaciones, los datos y las caractersticas de un TAD. Comnmente se emplean notaciones formales para definir la semntica, ya sea a travs de mtodos axiomticos o algebraicos o mtodo constructivos u operacionales.

30

Prof.DanielCruzGarca

Especificacin formal de un TAD

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Las distintas notaciones formales existentes difieren en la forma de definir la semntica:


Mtodo axiomtico o algebraico: Se establece el significado de las operaciones a travs de relaciones entre operaciones (axiomas).
Significado implcito de las operaciones.

Mtodo constructivo u operacional: Se define cada operacin por s misma, independientemente de las otras. Significado explcito de las operaciones.

31

Prof.DanielCruzGarca

Notaciones formales para definir la semntica

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

(Mtodo axiomtico o algebraico) Este tipo de especificacin consiste en la determinacin del como hay que escribir las operaciones de un TAD, proporcionando el tipo de operandos y el tipo de resultados. P.g.
int + (int a,b) int (int a,b) int abs (int a)

32

Prof.DanielCruzGarca

Definicin de la semntica

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

(Mtodo axiomtico o algebraico)


La notacin algebraica y ecuaciones consisten en proporcionar un conjunto de axiomas y operaciones verificadas 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 carcter, n N}

33

Prof.DanielCruzGarca

Definicin de la semntica

Especificacin formal de un TAD


Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

algebraico: (TAD Nmeros Naturales)

Nombre: natural Conjuntos: Nconjuntodenaturales,Bconjuntodevalores booleanos. Sintaxis:


cero:N sucesor:NN escero:NB igual:NxNB suma:NxNN

34

Prof.DanielCruzGarca

Ejemplo 1 Definicin de la semntica mediante el mtodo axiomtico o

Especificacin formal de un TAD


Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

Semntica: paratodomynpertenecientesaN 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))

35

Prof.DanielCruzGarca

Ejemplo 1 Definicin de la semntica mediante el mtodo axiomtico o algebraico: (TAD Nmeros Naturales)

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

(Mtodo constructivo u operacional)


Mtodoconstructivouoperacional:Enlasemnticadeeste mtodoseestablecenlasprecondicionesylas postcondiciones delasoperaciones: Precondicin:Relacinquesedebecumplirconlosdatos deentradaparaquelaoperacinsepuedaaplicar. Postcondicin:Relacionesquesecumplendespusde ejecutarlaoperacin.Nodebeincluirdetallesde implementacin.

36

Prof.DanielCruzGarca

Definicin de la semntica

Especificacin formal de un TAD


Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

operacional: (TAD Nmeros Naturales)

max_restring:ZxZZ
premax_restring (x,y) ::=(x>0)^(y>0) postmax_restring (x,y;r) ::=(rx)^(ry)^(r=xVr=y) Qusucederasixoynosonmayoresque0?
Nosecumplelaprecondicinynopodramosasegurarquese cumplalapotscondicin.

37

Prof.DanielCruzGarca

Ejemplo 2 Definicin de la semntica mediante el mtodo constructivo u

Abstraccinenloslenguajesdeprogramacinytipodedatoabstracto

Estructurasdedatos

ParaelcursodeEstructurasdeDatosemplearemoslasiguienteestructura deespecificacin,dentrodelaculseutilizaranespecificacionestanto formalescomoinformalessegnseaelTADaespecificar 1. 2. Cabecera: nombre del tipo y listado de las operaciones. Definicin: Descripcin del comportamiento sin indicar la representacin. Se debe indicar si el tipo es mutable o no. Tambin se expresa donde residen los datos internos. Operaciones: Especificar las operaciones una por una como abstracciones procedimentales
Condicin de los parmetros de entrada de las operaciones. Resultados de las operaciones

3.

4.

Observaciones

38

Prof.DanielCruzGarca

Estructura de la especificacin para los TADs en el curso