Ir al contenido principal

Conceptos Básicos.



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:

Comentarios

Entradas más populares de este blog

Contenidos

A continuación se listan los contenidos a desarrollar en el presente Blog: Introducción. Conceptos Básicos. Tipos de Representación de Estructuras de Datos en Memoria. Arreglos(Vectores y Matrices). Archivos. Listas Encadenadas. Filas. Pilas. Arboles Binarios. Grafos. Se utilizara para codificar las estructuras de datos se utilizara el lenguaje de programación Java con el IDE NetBeans y Visual Studio 2013 con Visual C++ en aplicaciones MFC basadas en cuadros de dialogo. Puedes descargar NetBeans aquí .