Abstracción
Dentro de este contexto la abstracción se da en todos los lenguajes de programación ya que toda computadora es capaz de ejecutar solamente código maquina y es a través de la abstracción que podemos desarrollar el proceso de la programación con sentencias que se aproximen lo máximo posible al lenguaje natural, sin embargo, ello no significa que las sentencias puedan ser escritas en un orden lógico determinado por el programador.
Puede abordarse el concepto de abstracción desde diferentes puntos de vista:
Programación en General. Capacidad de un lenguaje de programación de ocultar detalles de implementación, siendo la implementación el método por el cual un ordenador ejecuta las sentencias escritas en un lenguaje de programación, estos son compilación, interpretación y el método híbrido.
Programación Orientada a Objetos. Es la representación de una entidad incluyendo solo los
atributos mas significativos.
El concepto desde este punto de vista el nivel de abstracción asciende de ocultar detalles de implementación de bajo nivel en hardware hacia un método de programación en el cual se centra en los atributos mas significativos de entidades nombradas objetos las cuales han sido creadas a partir de un molde llamado clase.
Pensemos en ésta entonces como una herramienta contra la complejidad, cuyo propósito es simplificar el proceso de programación.
Existen tres tipos de abstracción:
- De Datos.
- De Procesos.
- De Control.
Abstracción de Datos
Esta hace referencia
al manejo de tipos de datos abstractos, los cuales históricamente inician con
los arreglos (vectores y matrices), continuando con las estructuras (struct) y
actualmente los objetos.
Como ejemplo podemos decir que el manejo
de arreglos a través de los indices es transparente para el usuario, pero a bajo nivel el
lenguaje se vale de las listas enlazadas, en las cuales el tipo de dato no es relevante.
Debemos, además,
tener en cuenta que el manejo de tipo de datos nativos conlleva también un
cantidad de operaciones de bajo nivel considerables, por ejemplo el manejo de
cantidades de punto flotante(Double, Float) o cadenas de
caracteres(String).
Abstracción de Procesos
Esta se da cuando se hace una llamada a un subprograma,
del cual una de sus características es que solo puede ejecutarse
uno a la vez.
Recordemos que el
código del subprograma y su funcionamiento son transparentes a la
porción de código que le invoca.
Por ejemplo si realizamos una llamada la función Math.pow(), en ningún momento tenemos acceso al código sino lo que en verdad nos interesa es que nos devuelva un resultado correcto.
Abstracción de Control
Aporta los mecanismos que
los programadores
utilizan para la
especificación del flujo de ejecución entre los componentes de un programa, aportando modelos para
operaciones computacionales
que combinan acciones simples o elementales en estructuras de
control de mayor complejidad.
A partir de ésta es posible estructurar
los procesos de acuerdo con los patrones estándar que el ser humano adopta, tales como la secuenciación de acciones, la repetición y la decisión entre dos o más opciones.
A partir de los tres tipos de abstracción se construye el concepto de Tipo de dato abstracto (Abstract Data Type, ADT).
Abstract Data Type (ADT)
Se considera un tipo de datos no sólo como el conjunto de valores que lo caracteriza sino también como las operaciones que sobre él se pueden aplicar, juntamente con las diversas propiedades que determinan inequívocamente su comportamiento.
Se puede definir un tipo abstracto de datos como un conjunto de valores sobre los que se aplica un conjunto dado de operaciones que cumplen determinadas propiedades.
La verdadera utilidad de los ADT aparece en el diseño de nuevos tipos de datos, que en el caso de java debe realizarse dentro de una nueva clase, teniendo esta nueva definición de tipos de datos la posibilidad de ejecutarse desde un objeto o directamente desde la clase con definiciones de métodos estáticos como el ejemplo de Math.pow().
Por ejemplo si deseamos crear el clásico juego de "Tetris", cada figura debería ser del tipo de dato abstracto "figura", ya que ella deberia contener las operaciones por ejemplo para girar.
Relación de tipos y estructura de datos.
- El tipo de dato de una variable es el conjunto de valores que esta puede tomar.
- El tipo de dato abstracto es un modelo matemático, junto con varias operaciones definidas sobre ese modelo.
- Para representar el modelo matemático se emplean estructuras de datos, que son conjuntos de variables, quizá de diferentes tipos distintos, conectadas entre si de diferentes formas.
Clasificación de las Estructura de Datos
Se mostraran dos clasificaciones diferentes, pero ambas validas, en ellas no se tomará en cuenta los datos externos (Archivos de texto y datos y bases de datos) .
Lineales y No Lineales
Estáticas y Dinámicas.
Relación de las estructuras de Datos con la Programación Orientada a Objetos(POO)
La POO implica la creación de modelos del mundo real y la construcción de programas informáticos basados en modelos, el proceso completo de programación comienza con la construcción de un modelo del suceso (evento) real.
El principio básico de la programación orientada a objetos es que, un sistema de software se ve como una secuencia de transformaciones en un conjunto de objetos, dichos objetos no son mas que estructura de datos complejos definidas por el usuario.
Por ejemplo si deseamos crear nuestra versión de Pacman, debemos comenzar creando al personaje principal, sus características, su movilidad, sus propiedades generales, color, tamaño, debemos realizar el mismo proceso para los fantasmas que aparecen en el juego, puede verse que cada uno de dichos objetos realizara cambios en sus propiedades y estructura, por ejemplo los fantasmas cuando pacman alcanza una bola de poder se tornan pálidos y huyen y pacman a su vez posee la capacidad de destruirlos.
Refencias
- Bibliográficas:
- Abelson, H. & Sussman G. (1999). Structure and Interpretation of Computer Programs. (4ª Edition). McGrawHill.
- Aguilar, Luis J. (1996). Programación Orientada a Objetos. McGraw-Hill.
- Aguilar, Luis J. (2004).Algoritmos y estructuras de datos, una perspectiva en C. McGraw-Hill.
- Aho Alfred B. (1998). Estructura de Datos y Algoritmos. PEARSON.
- Gutiérrez, Xavier F. (1999). Estructura de Datos, Especificación, Diseño e Implementación. (9ª Edición). Ediciones UPC.
- Sebesta, Robert W. (2010) Concepts of Programming Languages. (9ª Edición). PEARSON.
Electrónicas:
- Estructuras de Control. consultado el 2 de julio de 2013, disponible en: http://www.ijsf.esc.edu.ar/Archivos/pTercero/TIC%20Grupo%20Google/Estructuras%20de%20control.pdf
- Guía Didáctica, Estructura de Datos y algoritmos, consultado el 23 de enero de 2011, disponible en: http://www.utpl.edu.ec/eva/descargas/material/184/G18201.9.pdf
- Introducción a los Lenguajes de Programación, consultado el 2 de julio de 2013, disponible en: http://aprendeenlinea.udea.edu.co/lms/moodle/file.php/561/Modulos/Modulo_1_Introduccion_a_los_lenguajes_de_programacion.pdf
Comentarios
Publicar un comentario