Sunteți pe pagina 1din 22

Tema 2

Abstraccin de Datos

Prof.Miguel Garca Silvente

Objetivos Generales

Abstraccin en programacin
Abstraccin procedimental
Abstraccin de datos (TDA)

Prof.Miguel Garca Silvente

Abstraccin en Programacin:
Objetivos

Concepto de abstraccin
Papel de la abstraccin en programacin
Tipos de abstraccin
Mecanismos de abstraccin

Prof.Miguel Garca Silvente

Introduccin

Ordenadoresmsavanzados

Programasmscomplejos
Facilitaeldiseo,
codificacinyprueba

Programacinestructurada

Prof.Miguel Garca Silvente

Programacin modular

Problemacomplejo
Dividirenpartes
Resueltasconbloques
decdigoindependientes

Prof.Miguel Garca Silvente

Mdulo

Nombre
Tarea
Informacindeentrada

Implementacin

Prof.Miguel Garca Silvente

Abstraccin
(Diccionario RAE)

abstraer.
(Del lat. abstrahre).
1. tr. Separar por medio de una operacin intelectual las
cualidades de un objeto para considerarlas aisladamente o para
considerar el mismo objeto en su pura esencia o nocin.

Prof.Miguel Garca Silvente

Abstraccin en Programacin

Abstraccin: Operacin intelectual que


ignora selectivamente partes de algo
complejo para facilitar su comprensin
Abstraccin en la resolucin de
problemas: Ignorar detalles especficos
buscando generalidades que ofrezcan
una perspectiva distinta, ms favorable
a su resolucin

Prof.Miguel Garca Silvente

Abstraccin: Descomposicin til

Abstraccin: descomposicin en que se


vara el nivel de detalle.
Todas las partes deben estar el mismo
nivel
Cada parte debe poder ser abordada
por separado
La solucin de cada parte debe poder
unirse al resto para obtener la solucin
final
9

Prof.Miguel Garca Silvente

Abstraccin en programacin

Resolucin de problemas mediante


programacin empleando la abstraccin
(a distintos niveles).
Se aplica mediante distintos
mecanismos.
Productos a distinto nivel --> Tipos de
abstracciones.

Prof.Miguel Garca Silvente

10

Mecanismos de abstraccin en
Programacin

Abstraccin por parametrizacin. Se


introducen parmetros para abstraer
un nmero infinito de computaciones.
Ej.: clculo de cos(x)
Abstraccin por especificacin.
Permite ignorar la implementacin
concreta de un procedimiento
asocindole una descripcin precisa de
su comportamiento.
double sqrt(doble a);
Requis i tos : a >= 0;
Efecto: devuelve una aprox. de a

Prof.Miguel Garca Silvente

11

Abstraccin por Especificacin

Expresada como:

Precondicin: Condiciones necesarias y


suficientes para que el procedimiento se
comporte correctamente.
Postcondicin: Enunciados que se suponen
ciertos tras la ejecucin del procedimiento,
si se cumpli la precondicin

Prof.Miguel Garca Silvente

12

Ejemplo
/**
busca_minimo: localiza el elemento mnimo de un vector
Precondicin:
num_elem > 0
v vector con num_elem elementos
Postcondicin:
Devuelve la posicin del mnimo elemento de v
*/
int busca_minimo(float v[], int num_elem)

Prof.Miguel Garca Silvente

13

Tipos de Abstraccin

Abstraccin Procedimental. Conjunto de


operaciones que se comportan como una
operacin
Abstraccin de Datos. Conjunto de datos y
conjunto de operaciones que caracterizan el
comportamiento de los primeros. Las
operaciones estn vinculadas a los datos del
tipo
Abstraccin de Iteracin. Permite trabajar
sobre colecciones de objetos sin preocuparse
por la forma en que se organizan.
Prof.Miguel Garca Silvente

14

Abstraccin Procedimental:
Objetivos

Concepto
Especificacin de una A.P.
Especificacin usando doxygen

Prof.Miguel Garca Silvente

15

Abstraccin Procedimental

Permite considerar (y utilizar) un


conjunto de operaciones de clculo
como una operacin simple.
Formalmente: realiza la aplicacin de
un conjunto de entradas en las salidas
con posible modificacin de las
entradas.

Prof.Miguel Garca Silvente

16

Abstraccin Procedimental

La identidad de los datos no es


relevante para el diseo. Slo interesa
el nmero de parmetros y su tipo
Abstraccin por especificacin: es
irrelevante la implementacin, pero NO
qu hace

Prof.Miguel Garca Silvente

17

Caractersticas de la Especificacin
de la A.P.

Localidad: Para implementar una


abstraccin procedimental no es
necesario conocer la implementacin de
otras que se use, slo su especificacin.
Modificabilidad: Se puede cambiar la
implementacin de una abstraccin
procedimental sin afectar a otras
abstracciones que la usen, siempre y
cuando no cambie la especificacin.
Prof.Miguel Garca Silvente

18

Propiedades de la especificacin de
la A.P.

til
Completa
Consistente
Indicar el comportamiento en todos los
casos en que sea aplicable

Prof.Miguel Garca Silvente

19

Elementos de la especificacin de
una A.P.

Entradas
Salidas
Requisitos
Efectos
Elementos modificados

Prof.Miguel Garca Silvente

20

Especificacin de una A.P.

Cabecera: (Parte sinttica) Indica el


nombre el procedimiento y el nmero,
orden y tipo de las entradas y salidas. Se
suele adoptar la sintaxis de un lenguaje
de programacin concreto.
Cuerpo: (Parte semntica) Compuesto
por:

Argumentos
Requiere
Valores de retorno
Efecto
Prof.Miguel Garca Silvente

21

E.A.P.: Argumentos

Explica el significado de cada parmetro de


la abstraccin; indica qu representa.
Expresa las restricciones sobre le cj de datos
del tipo sobre los que puede operar.
Procedimiento total y parcial.
Indica si cada argumento es modificado o no.
Cuando un parmetro vaya a ser modificado
se incluir la expresin Es MODIFICADO.

Prof.Miguel Garca Silvente

22

E.A.P.: Requiere

Restricciones impuestas por el uso del


procedimiento no recogidas por
Argumentos. Ej.: que previamente se
haya ejecutado otra abstraccin
procedimental.

Prof.Miguel Garca Silvente

23

E.A.P.: Valores de retorno

Descripcin de qu valores devuelve la


abstraccin y qu significan.

Prof.Miguel Garca Silvente

24

E.A.P.: Efecto

Describe el comportamiento del


procedimiento para las entradas no
excluidas por los requisitos. El efecto
debe indicar las salidas producidas y
las modificaciones producidas sobre los
argumentos marcados con Es
MODIFICADO.

Prof.Miguel Garca Silvente

25

E.A.P.: Efecto (II)

Importante:

Nada sobre el comportamiento del


procedimiento cuando la entrada NO
satisface los requisitos,

nada sobre cmo se lleva a cabo dicho


efecto, salvo que esto sea requerido
por la especificacin. (Ej.: requisito
expreso sobre la forma de hacerlo o
sobre la eficiencia requerida)

Prof.Miguel Garca Silvente

26

Especificacin junto al cdigo


fuente

Falta de herramientas para mantener y


soportar el uso de especificaciones
Responsabilidad exclusiva del
programador
Necesidad de vincular cdigo y
especificacin
Incluirla entre comentarios en la parte
de interfaz del cdigo
Herramienta doxygen.
Prof.Miguel Garca Silvente

27

Especificacin usando doxygen

Toda la especificacin se encierra entre


/** */
Se pone una frase que describa toda la
funcin precedida de @brief
Cada argumento se precede de @param
Los requisitos adicionales se inidican tras
@pre
Los valores de retorno se ponen tras
@return
La descripcin del efecto al final
Prof.Miguel Garca Silvente

28

Diseo de abstracciones
procedimentales
1.

2.

3.

4.

Minimalidad: Los requisitos mnimos


posibles
Generalidad: Poder aplicarla en el
mayor nmero de casos posibles
Simplicidad: Realizar una nica
accin concreta.
Carcter total o parcial.

Prof.Miguel Garca Silvente

29

Tipo de Dato Abstracto (TDA)

Entidad abstracta formada por un


conjunto de datos y una coleccin de
operaciones asociadas.
Ejemplo: tipos de datos en C++.

Prof.Miguel Garca Silvente

30

Conceptos

Especificacin: Descripcin del


comportamiento del TDA
Representacin: Forma concreta en que
se representan los datos en un lenguaje
de programacin
Implementacin: Forma especfica en
que se expresan las operaciones.

Prof.Miguel Garca Silvente

31

Visiones de un TDA

Visin externa: especificacin


Visin interna: representacin e
implementacin
Ventajas de la separacin:

Se puede cambiar la visin interna sin


afectar a la externa

Facilita la labor del programador


permitindole concentrarse en cada fase
por separado
Prof.Miguel Garca Silvente

32

TDA y Ocultacin de informacin

Ocultacin de informacin: Mecanismo para


impedir el acceso a la representacin e
implementacin desde fuera del tipo. Garantiza:

Representacin inaccesible: razonamientos


correctos sobre la implementacin

Cambio de representacin e implementacin sin


afectar a la especificacin del TDA

Encapsulamiento: Ocultacin de informacin y


capacidad para expresar el estrecho vnculo
entre datos y operaciones

Prof.Miguel Garca Silvente

33

Especificacin del TDA

Define el comportamiento, pero no dice


nada sobre su implementacin
Indica el tipo de entidades que modela,
qu operaciones se les pueden aplicar,
cmo se usan y qu hacen

Prof.Miguel Garca Silvente

34

Estructura de la especificacin

Cabecera: nombre del tipo y listado de


las operaciones
Definicin: Descripcin del
comportamiento sin indicar la
representacin. Se debe indicar si el tipo
es mutable o no y dnde residen los
objetos
Operaciones: Especificacin de las
operaciones, una por una como
abstracciones procedimentales
Prof.Miguel Garca Silvente

35

Tipos de operaciones
1) Constructores primitivos. Crean objetos
del tipo a partir de objetos de otras
clases
2) Constructores de copia. Crean objetos
del tipo a partir de otros objetos del tipo
3) Modificadores o mutadores.
4) Observadores o consultores.
Es habitual la combinacin de tipos. En
particular de los 3 y 4.
Prof.Miguel Garca Silvente

36

TDA Fecha
/**
TDA Fecha.
Fecha::Fecha, dia, mes, anio, ++, --, <, <=,
==, <<, >>, dia_semana, fase_lunar

*/

Definicin:
Fecha representa fechas segn el calendario
occidental.
Son objetos mutables.
Residen en memoria esttica.

Prof.Miguel Garca Silvente

37

TDA Fecha
/**

@brief Constructor primitivo.


Crea un objeto fecha con valor 1/1/2000

*/
Fecha();
/**

@brief Constructor primitivo.


@param d: dia de la fecha. 0 < dia <= 31
@param m: mes de la fecha. 0 < mes <= 12
@param a: ao de la fecha.
Los tres argumentos deben representar una fecha vlida
segn el calendario occidental.
Crea un objeto con valor d/m/a.

*/
Fecha(int d, int m, int a);

Prof.Miguel Garca Silvente

38

TDA Fecha
/**
@brief Obtiene el da del receptor.
@return Da del receptor.

*/
int dia() const;

/**
@brief Obtiene el mes del receptor.
@return Mes del receptor.
*/
int mes() const;
/**
@brief Obtiene el ao del receptor.
@return Ao del receptor.

*/
int anio() const;

Prof.Miguel Garca Silvente

39

TDA Fecha
/**
@brief Fecha siguiente.
@return Fecha siguiente a la del receptor
Modifica el receptor por la fecha siguiente al valor que tiene.

*/
Fecha operator++();

/**
@brief Fecha anterior.
@return Fecha anterior a la del receptor
Modifica el receptor por la fecha anterior valor que tiene.
*/
Fecha operator--();

Prof.Miguel Garca Silvente

40

TDA Fecha
/**
@brief Comparacin menor para fechas
@param f: Fecha con que se compara el receptor
@return true: si el receptor es estrictamente anterior a f.
false: en otro caso.
*/
bool operator<(const Fecha & f) const;
/**
@brief Comparacin menor o igual para fechas
@param f: Fecha con que se compara el receptor
@return true: si el receptor es estrictamente anterior o
igual a f.
false: en otro caso.
*/
bool operator<=(const Fecha & f) const;

Prof.Miguel Garca Silvente

41

TDA Fecha
/**
@brief Asignacin de fechas
@param f: Fecha que se asigna.
@return El valor de f.
Asigna al receptor el valor de f y lo devuelve.

*/
Fecha operator=(const Fecha & f);

Prof.Miguel Garca Silvente

42

TDA Fecha
/**
@brief Operador de conversin a texto (escritura).
@param s: flujo al que se enva el texto. Es MODIFICADO.
@param f: Fecha que se escribe.
@return el flujo s.
Escribe en el flujo s el valor de f convetido a texto y
devuelve s.

*/
ostream & operator<<(ostream & s, const Fecha & f);

Prof.Miguel Garca Silvente

43

TDA Fecha
/**
@brief Operador de lectura de fechas
@param s: flujo del que se lee. Es MODIFICADO.
@param f: Fecha que se lee. Es MODIFICADO.
@return Flujo s.
Lee una fecha del flujo s, en formato dd/mm/aaaa y pone el
valor en f.
*/
istream & operator>>(istream & s, Fecha & f);

Prof.Miguel Garca Silvente

44

S-ar putea să vă placă și