ADT- Tipo abstracto de Datos




         Sección 6.2-6.3




                               1
Desarrollo de tipos de datos
1957-1960 FORTRAN, ALGOL – datos primitivos que
   emulaban el hardware
1960-1963 COBOL, PL/I...
Historia




           3
4
Tipos

Un tipo (tipo de dato) es un conjunto de valores que un
   objeto puede tener.
Un tipo abstracto de datos (ADT) es ...
Ejemplo ADT

ADT estudiante:
• Operaciones:
   PonerNombre: nombre x estudiante    estudiante
   ConseguirNombre: estudian...
Ocultamiento de Información
Ocultamiento de información puede ser construido en
   cualquier lenguaje
Ejemplo en C:
typede...
Implementación de almacenamiento de
                  subprogramas
Antes de estudiar a los ADT en detalle, necesitaremos
 ...
Registros de activación




Arriba izquierda: Código producido por el compilador para la
   ejecución del procedimiento FN...
Naturaleza dinámica de los registros de activación

Cada llamada a FN causa que un nuevo registro de
   activación sea cre...
Administración del almacenamiento

Los datos locales son almacenados en un área llamada
   registro de activación (también...
Tiempo de vida
IMPORTANTE:
1. El puntero del registro de activación es determinado
   durante la ejecución del programa. O...
Tiempos de vida (continuación)

Dos modelos de tiempos de vida de datos:
   Estático: Basado en la estructura estática del...
Tiempos de vida de variables

Tiempo de vida de variable X es el periodo cuando el
   registro de activación para P existe...
Upcoming SlideShare
Loading in …5
×

Adt

2,279 views

Published on

Published in: Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,279
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Adt

  1. 1. ADT- Tipo abstracto de Datos Sección 6.2-6.3 1
  2. 2. Desarrollo de tipos de datos 1957-1960 FORTRAN, ALGOL – datos primitivos que emulaban el hardware 1960-1963 COBOL, PL/I – Datos primitivos extendidos con colecciones de objetos y registros primitivos. 1968-1970 Pascal, ALGOL-68 – Extiende la funcionalidad con nuevos tipos. Crea funciones que usan los nuevos tipos. 1972--1976 Edad de la encapsulación (Parnas)- Ocultamiento de la información • Crea firmas de tipos de datos • Sobrecarga • Herencia • Nuevos lenguajes: Alphard (Wulf, Shaw, LondonU) Euclid (Toronto) CLU (Liskov) Modula (Wirth) Smalltalk (Kay) Ada (DoD) Eiffel (Meyer) 1980--1985 Orientación a Objetos - Smalltalk-80, C++, Miranda, ML, FORTRAN-90, Ada-95 2
  3. 3. Historia 3
  4. 4. 4
  5. 5. Tipos Un tipo (tipo de dato) es un conjunto de valores que un objeto puede tener. Un tipo abstracto de datos (ADT) es un: • Tipo de datos • Conjunto de funciones (operaciones) que operan sobre datos de ese tipo • Cada función es definida por su firma. • Puede también especificar operaciones formales 5
  6. 6. Ejemplo ADT ADT estudiante: • Operaciones: PonerNombre: nombre x estudiante estudiante ConseguirNombre: estudiante nombre PonerCurso: curso x estudiante estudiante Obtener curso: estudiante curso * ObtenerCreditos: estudiante integer En este ejemplo, Nombre y Curso son ADT indefinidos. Ellos están definidos por alguna otra abstracción. Ocultamiento de Información: No tenemos idea de COMO el objeto estudiante es almacenado, ni tampoco nos importa. Todo lo que nos interesa es el comportamiento de los datos de acuerdo con las funciones definidas. 6
  7. 7. Ocultamiento de Información Ocultamiento de información puede ser construido en cualquier lenguaje Ejemplo en C: typedef struct {i:int; ... } TipoA; typedef struct { ... } TipoB; P1 (TipoA X, otros datos) { ... } - P1:otros datos TipoA P2 (TipoB U, TipoA V) { ... } - P2:TipoA TipoB Problemas con esta infraestructura: • No obligación de ocultamiento de la información. En P2 se puede escribir V.i para acceder componente i del objeto de TipoA en vez de llamar a P1. • El éxito depende de las convenciones • Pero la ventaja es que puede ser hecho en Pascal o C. Veremos más tarde mecanismos para obligar al ocultamiento de la información (Smalltalk, C++, Java, Ada). Llamaremos a esto encapsulación. 7
  8. 8. Implementación de almacenamiento de subprogramas Antes de estudiar a los ADT en detalle, necesitaremos entender el método usual de los subprogramas para crear objetos locales. Cada subprograma tiene un bloque de almacenamiento conteniendo esa información, denominado un registro de activación. Considere el siguiente subprograma en C: float FN( float X, int Y) const valinic=2; #define valfinal 10 float M(10); int N; N = valinic; if(N<valfinal){ ... } return (20 * X + M(N)); } Información sobre el procedimiento FN esta contenido en sus registros de activación. 8
  9. 9. Registros de activación Arriba izquierda: Código producido por el compilador para la ejecución del procedimiento FN. Arriba derecha: Almacenamiento de datos necesario para el procedimiento FN durante la ejecución. El compilador une cada identificador en FN con una posición de almacenamiento en un registro de activación. 9
  10. 10. Naturaleza dinámica de los registros de activación Cada llamada a FN causa que un nuevo registro de activación sea creado. Por lo que el código estático generado por el compilador para FN estará asociado con un nuevo registro de activación cada vez que FN sea llamado. Como veremos posteriormente, una estructura de pila es utilizada para el almacenamiento de los registros de activación. 10
  11. 11. Administración del almacenamiento Los datos locales son almacenados en un área llamada registro de activación (también llamada marco de pila - stack frame). Dirección de datos es un proceso de dos pasos: 1. Obtener un puntero al registro de activación relevante que contiene las declaraciones. 2. Encontrar el desplazamiento en el registro de activación para ese dato. 11
  12. 12. Tiempo de vida IMPORTANTE: 1. El puntero del registro de activación es determinado durante la ejecución del programa. Ocurre frecuentemente, por lo que debe ser un calculo eficiente. 2. El desplazamiento dentro del registro de activación es fijo y determinado durante la compilación. Debe requerir un calculo mínimo. El tiempo de vida de una variable es el periodo durante la ejecución del programa cuando el almacenamiento para la variable declarada existe en algún registro de activación (por Ej. desde el tiempo en que el registro de activación es creado por la declaración hasta que el registro de activación es destruido). El ámbito (scope) de una variable es la porción del programa fuente donde el dato puede ser accesado (por Ej. el nombre es una referencia legal en ese punto del programa). 12
  13. 13. Tiempos de vida (continuación) Dos modelos de tiempos de vida de datos: Estático: Basado en la estructura estática del programa Dinámico: Basado en la ejecución de un programa En general, tiempos de vida estáticos son implementados en pilas. 13
  14. 14. Tiempos de vida de variables Tiempo de vida de variable X es el periodo cuando el registro de activación para P existe. Note que podemos cambiar el ámbito, pero no el tiempo de vida de una variable al anidar procedimientos: 14

×