Abstracción de Datos
Abstracción de Datos
Abstracción de Datos
Por ejemplo, se dice que algunas de las pinturas de Picasso son abstractas, no
porque sean difíciles de entender, sino porque a través de ciertos trazos simples, y
de acuerdo con su criterio mental, el pintor plasmó los rasgos esenciales de ese
algo real que trataba de representar por medio de un lenguaje gráfico.
Por ejemplo, cualquier lenguaje de alto nivel provee típicamente de tipos de datos
estructurados o estructuras de datos predefinidas, como los arreglos o los
registros. Un arreglo es un conjunto de datos, todos del mismo tipo, con una
organización lineal y con métodos claros de acceso a través de sus subíndices.
Las operaciones tradicionales sobre los arreglos incluyen la comparación, la
asignación, la escritura, etc. En un nivel más bajo, podría verse a los números
enteros como estructuras de datos: se componen de un grupo de dígitos y tienen
asociadas operaciones como sumar, restar y multiplicar, entre otras.
OPERACIONES
BORRAINICIO
POSTCONDICIÓN
: La cadena S tiene todos los caracteres, menos el primero.
AGREGAFINAL
OPERACIONES
BORRAINICIO
POSTCONDICIÓN
: La cadena S tiene el carácter L que queda al extremo derecho de la cadena.
VACÍA
PRECONDICIÓN: Ninguna
POSTCONDICIÓN
: Ninguna (pues la cadena S no se modifica).
LLENA
PRECONDICIÓN: Ninguna
POSTCONDICIÓN
: Ninguna (pues la cadena S no se modifica).
INVIERTE
BORRAINICIO
PRECONDICIÓN: Ninguna
EJEMPLO
En cierta aplicación científica se requiere calcular el factorial de unnúmero entero
positivo. La función factorial aplicada sobre un número es la multiplicación de
todos los números, desde el 1 hasta el valor del número correspondiente ( n! = 1 *
2 * 3 *… * (n-1) * n ).
Solución obvia en C+ +:
int factorial = 1;
for(intj = n;j>0;j--)
factorial = factorial* j;
El tipo unsigned long, en cuatro bytes, soporta como valor máximo 4,294,967,295
lo cual permitiría obtener sólo hasta el factorial de 12.
Por lo tanto, se requiere de un tipo de dato con una capacidad para almacenar a
cualquier número entero, sin importar qué tan grande sea; ya que C++ no provee
de un tipo estándar para este caso, se puede disenar un TDA para utilizar
números enteros grandes, el cual a su vez será una estructura de datos.
ESPECIFICACIÓN LÓGICA:
SUMA
PRECONDICIÓN: Ninguna
DESPLIEGA
PRECONDICIÓN: Ninguna
POSTCONDICIÓN:
V Ninguna
Con base en este diseño lógico, se puede pasar a la implementación del TDA
(nivel físico) para posteriormente utilizarlo (nivel de aplicación) y resolver el
problema factorial eficientemente.
Este ejemplo será retomado en el siguiente capítulo para analizar los niveles físico
y de aplicación.
CONCLUSIONES
En la evolución del desarrollo de software, se han descubierto una gran cantidad
de estructuras de datos, con propósitos firmes y claros, que no pierden actualidad
y forman parte de las bases para cualquier futuro desarrollador de software. El
propósito de este material, es mostrar cada una de estas estructuras en sus tres
niveles de abstracción, por lo que los capítulos posteriores, se vuelven el mejor
ejemplo de las ideas mostradas en este capítulo. Deben ser de especial interés los
capítulos de strings, pilas y filas.
Sin embargo, la metodología aquí presentada puede ser utilizada para el diseño
de nuevas estructuras de acuerdo con las necesidades de aplicaciones y
ajustando el punto de referencia de los niveles de abstracción. Además, la
comprensión de estas ideas facilitará el entendimiento de la filosofía de la
programación orientada a objetos.
EJERCICIOS
1. Defina los siguientes conceptos:
o Abstracción
o Abstracción de datos
o Especificación lógica
o Nivel de abstracción
o Independencia de niveles
o Precondición
o Postcondición
o Módulo
o Abstracción modularPágina 12 | Inicio del artículo
2. Describa situaciones de la vida cotidiana en las que se realicen
abstracciones.
3. Recuerde cómo comprendió el concepto de una matriz (arreglo bi-
dimensional) en un lenguaje de programación. Si se considera la matriz como un
TDA, defina su especificación lógica y comente las características de su nivel
físico y algunas de sus posibles aplicaciones.
4. Explique cómo es que un registro en Pascal (o struct en C), cumple con las
características de una estructura de datos.
5. El tipo de dato string, puede verse como un tipo de dato abstracto (TDA),
para el cual pudiéramos diseñar su especificación lógica. Sin embargo, el propio
lenguaje C o C++, provee este tipo de dato a través de las bibliotecas string.h y/o
cstring.h.
o ¿Cuál es la principal diferencia entre el manejo de los strings como
objetos y el manejo de los strings como arreglos? Explique
brevemente las diferencias e indique en qué nivel de abstracción se
encuentran esas diferencias. Justifique su respuesta.
o Las siguientes tres operaciones típicas se pueden realizar sobre un
TDA string:
1.
1.
Identifique cuál es la función que se está realizando con estos
códigos.
Clasifique los códigos de mayor a menor abstracción.
Identifique en qué nivel de abstracción se está trabajando en
cada uno de los códigos.
2. Diseñe las operaciones aritméticas y relaciónales para el TDA numeróte
descrito en este capítulo.
AUTOEVALUACIÓN
Conteste: verdadero o falso