Sei sulla pagina 1di 4

TIPOS ABSTRACTOS DE DATOS

Definicin Informal
Es un tipo de dato definido por el usuario, que representa un tipo de elemento involucrado en el problema
que se quiere resolver, pero que podra ser reutilizado posteriormente.
Definicin formal
Es una estructura algebraica compuesta por un conjunto de objetos abstractos, que modelan elementos
del mundo, y un conjunto de operaciones para su manipulacin, las cuales simulan el comportamiento que
el elemento modelado tiene en el mundo del problema.1
Un cliente de un TAD es cualquier rutina que utilice un objeto de dicho tipo.
T1 es cliente de T2, si alguna rutina de T1 es cliente de T2.
Representacin de un Objeto Abstracto
Se hace mediante un dibujo, una notacin algebraica independientemente del lenguaje de programacin.
En esta representacin se expresa las condiciones, relaciones, restricciones y operaciones de los
elementos modelados, sin restringirse a una representacin interna en particular.
Ejemplos
Representacin Abstracta del objeto Matriz.
La forma ms sencilla de representarlo es mediante una grfica as:
0

Y
0

M-1

Yi,j

N-1

Sin definir una estructura de datos concreta es posible referenciar cada uno de los elementos de una
matriz, de sus dimensiones y de la nocin de fila y columna, entre otros.
Representacin Abstracta del objeto Diccionario
Alternativa 1
Este objeto tiene una serie de palabras y cada una varios significados, entonces podra representarse de la
siguiente manera:
< elem-1, , elem-N >

| elem-i

palabra : String

< sig 1,......sig m >

el smbolo | se empleo para mostrar composicin y . Para denotar mltiples repeticiones.


Alternativa 2
1

Diseo y manejo de estructuras de datos en C. Jorge A. Villalobos

Una segunda opcin podra ser la siguiente:


Palabra-1
::
Palabra-N

s-11,,s-1m
s-n1,,s-nk

Algunos objetos abstractos con una representacin natural.


Conjunto
Cadena de caracteres
Vector

{ x1,..,xN}
c1c2ccN

Polinomio
Lista

<x1,x2,.,xN>

El invariante de un TAD
El invariante se establece mediante condiciones referentes a la estructura interna y los componentes que
se deben cumplir para que el tipo abstracto de dato represente el objeto del mundo (nocin de validez).
Por ejemplo para el TAD Conjunto se deben cumplir las condiciones: No elementos repetidos
( xi x j para i, j tal que i j ), y que todos los elementos pertenezcan al mismo tipo.
Invariante TAD conjunto
xi x j para i, j tal que i j

x1 , x 2 ,...x n deben ser elementos del mismo tipo

TAD Diccionario
Representacin abstracta
< elem-1, , elem-N >

| elem-i

palabra : String

< sig 1,......sig m >

Invariante (en lenguaje natural)

Las palabras estn ordenadas ascendentemente y no hay repetidas


Los significados estn ordenados ascendentemente y no hay repetidos
Toda palabra tiene asociado por lo menos un significado

Invariante (en lenguaje formal)

Elemi.palabra < elemi+1.palabra, 1<= i < N


(Las palabras estn ordenadas ascendentemente y no hay repetidas)
Elemi.sigr < elemi.sigr+1 1 <= i <=N , 1 <= r < k
(Los significados estn ordenados ascendentemente y no hay repetidos)
elemi={palabra,<sig1,..sigk>} , k > 0
(Toda palabra tiene asociado por lo menos un significado)

Especificacin de un TAD
A continuacin se muestra un esquema general para la especificacin de los TADs.
TAD <nombre>
<Objeto abstracto>
<Invariante del TAD>
<Operaciones>

(Representacin)

La especificacin de las operaciones se expresa con dos partes principalmente:


El dominio y el codominio
Su comportamiento (Precondicin y Postcondicin)

<Operacion1> :
:::::
<Operacionk> :

<dominio>

<codominio>

<dominio>

<codominio>

<prototipo operacin1>
/* Descripcin de la operacin */

(primera parte: dominio y codominio)

(Segunda parte: Comportamiento)

{pre: (condiciones que se deben cumplir antes de ejecutada la operacin) .}


{post: (expresa como se ve afectado el objeto-resultado obtenido)..}

Aspectos a tener en cuenta

La precondicin y la postcondicin de una operacin obligatoriamente deben hacer referencia a los


elementos que componen el objeto abstracto y a los argumentos que recibe.
En la especificacin de la precondicin y postcondicin se asume que el invariante del TAD se
cumple.
Si la precondicin de una operacin es TRUE, significa que no hay restricciones, esta se omite.
La descripcin de la operacin es muy importante para el cliente ya que le da una idea clara sobre el
servicio que presta el TAD.
La especificacin formal esta dirigida principalmente al programador.
No debe existir dos operaciones con el mismo nombres de operaciones
Agregar al nombre de las operaciones un sufijo de 3 letras (del nombre del TAD)
Todo elemento utilizado como parte del formalismo de un objeto abstracto, puede utilizarse
directamente como parte de la especificacin de una operacin.

Especificacin del TAD Matriz de valores enteros

TAD Matriz
0

M-1

0
i

xi,j

N-1

{inv: N>0, M > 0}


CrearMat :
asignarMat :
infoMat:
filasMat:
columnasMat:

int x int
Matriz x int x int x int
Matriz x int x int
Matriz
Matriz

Matriz
Matriz
int
int
int

Matriz crearMat(int fil, int col)


/* Construye y retorna una matriz de dimensin [0fil-1,0.col-1], inicializada en 0 */
{pre: fil >0, col > 0 }
{post: crearMat es una matriz de dimensin [0fil-1,0.col-1], xik = 0 }
void asignarMat (Matriz mat, int fil, int col, int val)
/* Asigna a la casilla de coordenadas [fil, col] el valor val */
{pre : 0 <= fil < N, 0 <= col < M }
{post : X fil, col = val }
Int infoMat (Matriz mat, int fil, int col)
/* Retorna el contenido de la casilla de coordenadas [fil, col ] */
{pre: : 0 <= fil < N, 0 <= col < M}
{post: infoMat = X fil, col }
Int filasMat(Matriz mat)
/* Retorna el nmero de filas de la matriz */
{post: filasMat = N }
Int columnasMat ( Matriz mat )
/*Retorna el nmero de columnas de la matriz */
{post: columnasMat = M }
Ejercicios
1. Especificar el TAD diccionario

Potrebbero piacerti anche