Sei sulla pagina 1di 24

Introducción a los tipos de

datos abstractos (TAD)

SINTAXIS Y SEMÁNTICA DEL LENGUAJE


Definición de abstracción
Abstracción: idea general que se concentra sobre las
cualidades o aspectos esenciales de algún objeto del
mundo real e ignora las propiedades accidentales.

La abstracción es la capacidad de encapsular y aislar


la información del diseño, de la implementación y de
la ejecución.
Tipos de Abstracción
 Procedural

 De datos
Abstracción Procedural

Un programa es un modelo o abstracción de la


realidad y los lenguajes de programación son
las herramientas a través de las cuales se
implementan esos modelos abstractos.
A través del diseño descendente se
particiona un programa en subprogramas o
módulos.
 Esa descomposición divide el problema P
teniendo en cuenta qué es lo que hace cada
módulo (qué tarea lleva a cabo),
independientemente de cómo.
Abstracción de datos
En una abstracción de datos se piensa en qué se
puede hacer con una colección de datos
independientemente de cómo se lleva a cabo.
Evolución hacia el concepto de TAD

 Lenguaje de máquina datos son cadenas de bits +


op. de desplazamiento (pto.flot)
 Fortran, Cobol y Algol 60 definen tipos de datos
standard: entero – real- bool – carácter
 Algol 68 define constructores de tipos o tipos
definidos por el usuario: alumno, curso
Comparación entre tipos
Semejanzas entre tipos estándar y def. por usuario:
Ambos tienen estructura interna
 Entero: es una cadena de bits
 Alumno: es un registro
 Curso: vector
Ambos tienen operaciones asociadas
 Entero: +, -, *, /
 Alumno: asignar valor a cada campo- imprimir campos
Comparación entre tipos
Diferencias:
 Los tipos estándar ocultan su representación interna al
programador (no se puede manipular)
 Los tipos definidos por el usuario exigen elegir la
representación interna al programador y permiten
manipularla para asignar valor y modificarlo.
Comparación entre tipos
Diferencias:
 Un tipo de dato estándar NO permite modificar su
representación interna al programador
 En un tipo definido por el usuario el programador
puede cambiar la estructura interna del mismo, lo
que obliga a modificar también las operaciones
Combinando características
nacen los TAD’s
Si definimos nuevos tipos de datos pero ocultando
tanto su representación interna como la
implementación de sus operaciones mediante un
mecanismo de encapsulamiento, obtenemos un

TIPO ABSTRACTO DE DATOS.


TAD’s
De esta forma el usuario solo conoce
 para qué sirve el nuevo TAD,
 qué operaciones puede aplicarle y
 qué valores puede almacenar
 pero no conoce cómo lo hace: no tiene acceso al
almacenamiento ni a la implementación de las
operaciones
Definición
Un TAD es una colección de datos
acompañada de un conjunto de
operaciones para manipularlos, de
forma tal que queden ocultas la
representación interna del nuevo
tipo y la implementación de las
operaciones, para todas las unidades
de programa que lo utilice.
TAD’s

Un TAD se compone de:


Una interfaz de usuario, pública
 Especifica para qué sirve el TAD
 Especifica qué hace cada operación
Una implementación, privada
 Detalla la estructura de datos que soporta el
almacenamiento de datos
 Codifica la implementación de cada operación
Características de los TAD’s
Ocultamiento de la información
 El usuario desconoce la estructura interna elegida por el
diseñador ni cómo se implementan las operaciones
 El acceso a los datos almacenados solo se puede hacer
mediante las operaciones

Encapsulamiento
 Tanto la representación interna como la implementación
de las operaciones se ubican en un lugar particular
Generalización
 El programador puede definir un TAD cuyos elementos a
almacenar sean de tipos genéricos
Características de los TAD’s
Ventajas:
 Mejor modelización del problema

 Clasifica los objetos basados en su estructura y su


comportamiento

 Separa especificación de implementación

 Reduce los efectos laterales

 Permite llevar mejor control de los cambios

 Facilita la extensibilidad del código y el


mantenimiento
Diseño de TAD’s

Pasos en la creación de un nuevo TAD

1°- Especificación (sintáctica y semántica)

2°- Diseño de la Representación Interna

3°- Implementación de las Operaciones


Especificación sintáctica
Se elige el nombre del TAD

Se definen las operaciones que actúan sobre las instancias


del TAD:
 Se indican los nombres, tipos y parámetros de dichas
operaciones.

Tipos de operaciones

 Creación (vacía o inicializada- reserva espacio)


 Asignación de valor
 Modificación de valor
 Consulta de valor
 Destrucción (libera memoria, no siempre se define)
Especificación semántica

Se explica cuál es la utilidad del TAD en la vida real

Se detalla mediante un comentario para qué sirve


cada operación del mismo (qué efecto tiene, qué
datos recibe y qué datos retorna)
Implementación

Desarrollar los algoritmos correspondientes a las


operaciones, en el código del lenguaje elegido y de
acuerdo a la representación interna definida en el paso
previo
Representación Interna

Elegir la estructura interna de la entidad en base a


las estructuras o tipos de datos disponibles en el
lenguaje de programación de alto nivel elegido
Ejemplo
Especificación TAD Producto
TAD Producto: sirve para almacenar el código,
nombre, marca, precio y stock de un producto
particular

Operaciones:
Cargar datos del producto
Modificar datos del producto
Consultar datos del producto
Copiar datos de un producto en otro
Especificación st: integer);
Procedure Cargar (var P: producto; {retorna un producto P con su stock
nom: string[20]; mar:string[20]; modificado}
codi: integer; pre:real; st:integer);
Procedure copiar(var P1: producto;
{retorna un producto P con todos sus P2: producto);
datos cargados}
{copia en P1 todos los datos de P2 }
Procedure ModNom(var P: producto;
nom: string[20]); Function VerNom(P: producto):
string[20];
{retorna un producto P con su
nombre modificado} {retorna el nombre de P}
Procedure ModCod(var P: producto; Funtion verCod(P: producto): integer;
codi: integer); {retorna el código de P}
{retorna un producto P con su código Funtion verPre(P: producto):real;
modificado}
{retorna el precio de P}
Procedure ModPre(var P: producto;
pre: real); Function VerMar(P: producto):
string[20];
{retorna un producto P con su precio
modificado} {retorna la marca de P}
Procedure ModMar(var P: producto; Funtion verStock(P: producto):
mar: string[20]); integer;
{retorna un producto P con su marca {retorna el stock de P}
modificada}
Procedure ModStock(var P: producto;
Uso del TAD - APLICACIÓN
Ejercicio: Sin terminar el diseño, es decir,
SIN SABER CUÁL SERÁ LA IMPLEMENTACIÓN NI LA EST.
INTERNA, vamos a desarrollar una aplicación que cree dos
productos y determine de cuál hay más stock

Representación interna
Volviendo al diseño:
Qué estructura de datos nos es más conveniente para almacenar
un producto en Pascal??
Se define en type
Representación interna
type
cad: string[20];
prod=record
nom: cad;
marca: cad;
prec: real;
stock: integer;
cod: integer
end;
Implementación
Se codifica en Pascal cada operación especificada, respetando
la estructura de datos elegida
En Pascal un TAD se implementa con una

UNIT
UNIT Pascal
Unit nombre;
Interface
{parte pública à lleva estructura interna + especificación
de las operaciones}
Implementation
{parte privada à implementación de cada op}
Initialization {opcional}
Begin
….
end.

Potrebbero piacerti anche