Abstracciones, tipos y mecanismos. MECANISMOS DE ABSTRACCIÓN
Abstracción por especificación: Sólo necesitamos conocer qué va a hacer el procedimiento y no cómo funciona. (Encapsulación y ocultación de implement.) Abstracción por parametrización: Un algoritmo, un tipo, o una variable se definen en base a unos parámetros.(Genericidad)
Abstracciones, tipos y mecanismos. TIPOS DE ABSTRACCIONES Abstraccionesfuncionales
Abstracciones de datos
Abstraccionesde iteradores Rutinas, funciones, procedimientos
Tipos Abstractos deDatos (TAD)
Iteradores
TIPO ABSTRACTO DE DATOS:
TIPO DE DATOS:
ESTRUCTURA DE DATOS: Dominio abstracto de valores junto con las operaciones aplicables sobre el mismo. Conjunto de valores que puede tomar una variable, un parámetro o una expresión. Disposición en memoria de los datos necesarios para almacenar valores de un tipo.
Ejemplos
TAD: Enteros Tipo de datos: Tipo integer de Pascal, o tipo int de C Estructura de datos: Representación mediante enteros de 16 bits, 32 bits, listas de dígitos (enteros largos), etc.
La evolución de los lenguajes de programación tiende a introducir cada vez más abstracciones. Lenguajes de bajo nivel
(Basic, Fortran, Ensamblador, …) Lenguajes estructurados
(Pascal, C,Modula, ADA, …) Lenguajes orientados a objetos
(Smalltalk, C++, Java, Eiffel, …)
La evolución de los lenguajes de programación tiende a introducir cada vez más abstracciones. Soporte de TAD: Lenguajes estructurados (tipos definidos por el usuario): Los datos y las operaciones van aparte. Lenguajes orientados a objetos (clases): Los datos y las operaciones constituyen una unidad.
Pascal ObjectPascal type Pila = register tope: integer; datos: array [1..10] of integer; end;
proc push (i: integer; var p:Pila); proc pop (var p: Pila); func top (p: Pila): integer; type Pila = class private: tope: integer; datos: array [1..10] of integer; public: proc push (i: integer); proc pop; func top: integer; end;
Pascal ObjectPascal var p1, p2: Pila; i: integer;
begin push(10, p1); push(20, p1); pop(p1); i:= top(p1); p1.tope:= 243; i:= top(p1); … var p1, p2: Pila; i: integer;
begin p1.push(10); p1.push(20); p1.pop; i:= p1.top; p1.tope:= 243; i:= p1.top; … Error de compilación: “tope” es privado
Especificaciones: Tipos de notaciones Notaciones informales. Notaciones formales. Algebraicas (o axiomáticas). Operacionales (o constructivas).
Especificaciones informales. Notación Operación (ent : ; : , …, sal )
Requiere: Establece restricciones de uso. Modifica: Identifica los datos de entrada que se modifican (si existe alguno). Calcula: Descripción textual del comportamiento de la operación. Abstracciones funcionales.
Ejemplo 1: Eliminar la repetición en los elementos de un array.
Operación QuitarDuplic (ent a: array [entero]) Modifica: a Calcula: Quita los elementos repetidos de a. El límite inferior del array no varía, pero sí lo puede hacer el superior.
Ejemplo 2: Buscar un elemento en un array de enteros.
Operación Buscar (ent a: array [entero]; x: entero; sal i: entero) Requiere: a debe estar ordenado de forma ascendente. Calcula: Si x está en a, entonces i debe contener el valor del índice de x tal que a[i] = x. Si x no está en a, entonces i = sup+1, donde sup es el índice superior del array a.
Generalización: una operación está definida independiente-mente de cual sea el tipo de sus parámetros.
Ejemplo 3: Eliminar la repetición en los elementos de un array.
Operación QuitarDuplic [T: tipo](ent a: array [T]) Requiere: T debe tener una operación de comparación IgualQue(ent T, T; sal booleano). Modifica: a Calcula: Quita los elementos repetidos de a. El límite inferior del array no varía, pero sí lo puede hacer el superior.
Ejemplo 4: Buscar un elemento en un array de enteros.
Operación Buscar [T: tipo](ent a: array [T]; x: T; sal i: entero) Requiere: T debe tener dos operación de comparación MenorQue(ent T, T; sal bool), Igual(ent T, T; sal bool). a debe estar ordenado de forma ascendente. Calcula: Si x está en a, entonces i debe contener …
Ejemplo de especificación informal de funciones:
Abstracciones de datos. Notación
TAD es
Descripción Descripción textual del tipo Operaciones Especificación informal de las operaciones de la lista anterior Fin .
Página siguiente |