Abstracción de Datos - Beatriz Beltrán Martínez

Download Report

Transcript Abstracción de Datos - Beatriz Beltrán Martínez

Programación II
Facultad de Ciencias de la Computación
MC Beatriz Beltrán Martínez
Introducción a la
abstracción de datos
MC Beatriz Beltrán Martínez
Primavera 2015
Primavera 2015
FCC - BUAP
• ¿Qué es abstracción?
• La abstracción consiste en aislar un elemento de su
contexto o del resto de los elementos que lo
acompañan. En programación, el término se refiere
al énfasis en el "¿qué hace?" más que en el "¿cómo
lo hace?"
BBM
Introducción a la abstracción de
datos
3
Primavera 2015
FCC - BUAP
• La abstracción es una estrategia de resolución de
problemas en la cual el programador se concentra en
resolver una parte del problema ignorando
completamente los detalles sobre cómo se resuelven
el resto de las partes.
• En este proceso de abstracción se considera que el
resto de las partes ya han sido resueltas y por lo tanto
pueden servir de apoyo para resolver la parte que
recibe la atención.
BBM
Abstracción
4
Primavera 2015
FCC - BUAP
• La abstracción es la estrategia de programación más
importante en computación. Sin abstracción las
personas serían incapaces de abordar los problemas
complejos.
• La pericia de un programador no está en ser veloz
para escribir líneas de programa, si no que en saber
descubrir, en el proceso de diseño, cuáles son las
partes del problema, y luego resolver cada una de
ellas abstrayéndose de las otras.
BBM
Abstracción
5
Primavera 2015
FCC - BUAP
• Un ejemplo de abstracción es el hecho de que uno
pueda conducir un automóvil sin ser un mecánico (lo
cual probablemente no era cierto con los primeros
vehículos). Al conducir, uno se abstrae de cómo
funciona la combustión en el motor. Sólo se requiere
saber cómo se maneja el volante y los pedales, y
cuales son las reglas del tránsito.
BBM
Abstracción
6


Dividir un sistema complejo en sus partes, y dividir las
partes en sus componentes puede considerar algunas de
éstas de forma aislada. Con la característica de la palabra
«tiene-un».
Primavera 2015
FCC - BUAP
• Dos de los tipos mas importantes de abstracción son
los siguientes:
 División en partes: Abstracción “Tiene un”
BBM
Abstracción
División en especialización: Abstracción “Es un”

La abstracción “Es-un” toma un sistema complejo, y lo ve
como una instancia de una abstracción más general. Se
caracteriza por las sentencias que tienen las palabras
«Es-un».
7
Primavera 2015
FCC - BUAP
• Un proceso de generalización mediante la reducción
de información de un concepto o un fenómeno
observable, típicamente para retener solo la
información que es relevante a un propósito particular.
• Tratar de entender el problema para separar los
detalles necesarios de los que no los son.
• Tratamos de obtener nuestra propia vista abstracta,
o modelo, del problema.
• Este proceso de modelado es llamado abstracción.
BBM
Abstracción
8
Conjunto de valores que sirve de dominio de ciertas
operaciones.
Dominio(int)= Z
Primavera 2015
FCC - BUAP

BBM
Tipo de datos
Dominio(float)=R
9
Primavera 2015
FCC - BUAP
• Este concepto aparece a mediados de la década de
los 70's
• Tipo abstracto de dato (TDA)
• conjunto de valores que lo caracteriza.
• operaciones que sobre él se pueden aplicar.
• propiedades que determinan inequívocamente su
comportamiento.
BBM
Tipos de datos abstractos
10
Primavera 2015
FCC - BUAP
• P/E Tipo int del Lenguaje C
• Valores (rango) : -32..., 32..
• Operaciones: suma, resta, producto, cociente,
módulo.
• Propiedades: a+b=b+a, a*0=0, etc.
BBM
Tipos de datos abstractos
11
• Proviene de “abstracción”, y responde al hecho de
que los valores de un tipo pueden ser manipulados
mediante sus operaciones si se saben las
propiedades que éstas cumplen, sin que sea
necesario ningún conocimiento acerca de su
implementación en la máquina.
Primavera 2015
FCC - BUAP
• ¿Por qué abstracto?
BBM
Tipo abstracto de datos
12
• El TDA define la interface a la abstracción de datos sin
especificar detalles de la implementación.
Primavera 2015
FCC - BUAP
• Los Tipos de Datos Abstractos son una solución
parcial a los modelos.
BBM
Tipos de datos abstractos
13
• Un modelo define una vista abstracta del problema,
se enfoca solamente en aspectos relacionados y trata
de definir propiedades:
• Los datos que son afectados;
• Las operaciones que son identificadas;
• El tipo de dato abstracto (TDA) es un tipo de Modelo.
Primavera 2015
FCC - BUAP
• Un modelo es una abstracción u objeto conceptual
usado en la creación de una fórmula predecible o una
solución.
BBM
Modelo
14
Primavera 2015
FCC - BUAP
• Con abstracción, creamos una entidad bien-definida,
la cual puede ser adecuadamente manejada.
• Estas entidades definen la estructura de datos de un
conjunto de ítems o elementos.
• Por ejemplo, cada empleado administrado tiene un
nombre, fecha de nacimiento, número de seguridad
social …
• La estructura de datos solamente puede ser accedida
con operaciones bien definidas.
• Este conjunto de operaciones se llama interface y
es exportada por la entidad.
• Una entidad con las propiedades justamente
descritas se llama tipo de dato abstracto (TDA).
BBM
Propiedades de los TDA
15
Primavera 2015
FCC - BUAP
• TDA se caracteriza por las siguientes propiedades:
1. Exporta un tipo.
2. Exporta un conjunto de operaciones. Este
conjunto es llamado interface.
3. Las Operaciones de la interface son el único
mecanismo de acceso a la estructura de datos del
tipo.
4. Axiomas y precondiciones definen el dominio de
la aplicación del tipo.
BBM
Definición de un TDA
16
Especificación
Sintáctica
Semántica
Primavera 2015
FCC - BUAP
• El fin que persigue el concepto de TDA es separar el
uso del tipo de dato, de su implementación.
• Para conseguir este objetivo, la definición de un TDA
se divide en dos partes:
• Especificación
TDA
• Implantación
BBM
Objetivo de un TDA
Implementación
Estructuras
de datos
Algoritmos
17
• Definir el nombre de las entidades abstractas.
Primavera 2015
FCC - BUAP
• Qué hace? Especificación de las entidades y sus
propiedades (interface).
BBM
Especificación Sintáctica
• Definir el nombre de las operaciones indicando el
dominio (argumentos) y el co-dominio o rango (los
valores de retorno).
18
Primavera 2015
FCC - BUAP
• Cómo lo hace? Descripción de la representación del
objeto (estructuras de los datos) y desarrollo de las
operaciones.
• Definir el significado de cada operación usando los
símbolos definidos en la especificación sintáctica.
• La especificación puede ser de dos tipos:
• Informal, a través del lenguaje natural.
• Formal,
rigurosa
y
fundamentada
matemáticamente.
BBM
Especificación Semántica
19
Primavera 2015
FCC - BUAP
• Además:
• {P} Pre-condición: condiciones que deben cumplirse
antes de realizar la operación.
• {Q} Post-condición: condiciones que se cumplen
una vez realizada la operación.
BBM
Especificación Semántica
• La notación usual es {P} S {Q}, donde S es la función o
procedimiento.
20
Primavera 2015
FCC - BUAP
• La especificación de un TDA consiste en establecer las
propiedades que lo definen.
• Para describir un TDA es necesario describir:
• Los valores que pueden tomar los datos de ese tipo.
• Todas las operaciones realizables sobre de ellos.
• Una especificación debe poseer 4 propiedades:
• Ser precisa: Solo dice lo imprescindible.
• Ser general: Es adaptable a diferentes contextos.
• Ser legible: Transmite a los usuarios del tipo y al
implementador el comportamiento del tipo.
• No ambigua: Evita dobles interpretaciones.
BBM
Especificación de un TDA
21
Primavera 2015
FCC - BUAP
• Definición: Es una colección no ordenada de elementos con repetición.
• Tipo: Bolsa.
• Sintaxis:
CrearBolsa ()  Bolsa
BolsaVacia  Bolsa
BolsaLlena  Bolsa
Poner (Bolsa, Objeto)  Bolsa
EsVacia (Bolsa)  Boolean
Retirar (Bolsa, Objeto)  Objeto
• Semántica: b es Bolsa, e, f son elementos
CrearBolsa () = BolsaVacia
EsVacia (CrearBolsa()) = Verdadero
EsVacia (Poner(CrearBolsa(), e)) = Falso
Retirar (BolsaVacia, e) = Error
Retirar (Poner(CrearBolsa(), f), e) = f si f=e
Poner (BolsaLlena, e) = Error
BBM
Ejemplo: TDA Bolsa
22
Primavera 2015
FCC - BUAP
• Definición: Es una colección no ordenada de elementos con
repetición.
• Tipo: Bolsa.
• Operaciones:
Función Construir_Bolsa ()  bolsa
{postcondición: Devuelve una bolsa vacía}
Función Poner (B: bolsa; e: elemento)  bolsa
{precondición: La bolsa no esta llena}
{postcondición: Añade el elemento e a la bolsa}
Función EsVacia (B: bolsa)  boolean
{postcondición: Devuelve verdadero si la bolsa no tiene
elementos, falso en otro caso}
Función Retirar (B: bolsa; e: elemento)  elemento
{precondición: La bolsa no esta vacía}
{postcondición: Elimina el elemento e de la bolsa B}
BBM
Ejemplo: TDA Bolsa
23
Primavera 2015
FCC - BUAP
• Definición: Una fracción es un par ordenado de enteros siempre y
cuando la segunda componente sea distinta de cero.
• Tipo: Fracción.
• Tipo abstracto Racional: (e(1), e(2)).
• Operaciones:
Función ConstruirFraccion (a,b: Entero) Fracción
{precondición: b ≠ 0}
{postcondición: e(1) = a AND e(2) = b}
Función Numerador (r: Fracción)  entero
{postcondición: Numerador = e(1)}
Función Denominador (r: Fracción)  entero
{postcondición: Denomidador = e(2)}
Función Multiplicar (r1, r2: Fracción)  Fracción
{Inicio multiplicar = contruirFraccion (Numerador(r1) *
Numerador(r2), Denominador(r1) * Denominador(r2))
Fin}
BBM
Ejemplo: TDA Fracción
24
Primavera 2015
FCC - BUAP
• Definición: Tipo booleano
• Tipo: bool
• Sintaxis:
cierto, falso  bool
~ (bool)  bool
V(bool, bool)  bool
Λ (bool, bool)  bool
• Semántica:
~ cierto = falso
b V cierto = cierto
b V falso = b
b Λ cierto = b
b Λ falso = falso
BBM
Ejemplo TDA bool
25