Tipos de Datos Abstractos

“2020. Año de Laura Méndez de Cuenca; emblema de la mujer Mexiquense” TECNOLOGICO DE ESTUDIOS SUPERIORES DE JOCOTITLAN

Views 104 Downloads 4 File size 493KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

“2020. Año de Laura Méndez de Cuenca; emblema de la mujer Mexiquense”

TECNOLOGICO DE ESTUDIOS SUPERIORES DE JOCOTITLAN TIPOS DE DATOS ABSTRACTOS Y SU IMPLEMENTACIÓN EN LA PROGRAMACIÓN ORIENTADA A OBJETOS PRESENTACION: RESUMEN Elaborado por: ISRAEL MONROY ALVAREZ

MATERIA: ESTRUCTURA DE DATOS GRUPO: IC-303 DOCENTE: INGENIERO MARCIAL JESUS MARTINEZ BLAS CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES

Jocotitlán, Mexico,4 de septiembre de 2020.

RESUMEN :

Fundamentalmente, la programación estructurada y la programación modular consisten en el uso de abstracción de procedimientos. El objetivo General es meter un conjunto de instrucciones en un módulo, que tiene una interfaz claramente definida. El objetivo especifico es mediante la abstracción de procedimientos el programador separa claramente el cómo del qué: una subrutina contiene la lógica necesaria para ejecutar una tarea, y sus parámetros definen los objetos sobre los que trabaja. La abstracción permite estudiar un sistema complejo a diferentes niveles de detalle, es decir, la abstracción sigue un método jerárquico. El objetivo es poder representar y manejar sistemas complejos de manera más sencilla; para conseguirlo se suele realizar un proceso de abstracción en sentido descendente, lo que implica ir abstrayendo desde niveles más generales a niveles más detallados.

INTRODUCCIÓN: El presente resumen , contiene y da aspectos de los diferentes tipos de datos abstractos así como su definición, así mismo todos los lenguajes de programación , proveen algún soporte de P.O.O , todo esto va desde lenguajes funcionales y en lenguajes imperativos. Desde el punto de vista de la programación, es importante que los programadores puedan definir sus propias abstracciones de datos, de tal forma que dichas abstracciones trabajen de manera parecida a las abstracciones o a las primitivas de datos proporcionadas por el sistema subyacente, se tiene la intención de analizar las propiedades lógicas de los sistemas y algoritmos mientras se desarrollan, así mismo la parametrización de la abstracción y especificación, y dar a entender las diferencias entre la programación estructurada ya que nunca hace uso del GO TO y generalmente se descompone modularmente como una jerarquía de procedimientos, usando la descomposición de arriba hacia abajo.

Marco Referencial: COMPETENCIA I Conoce y comprende las diferentes estructuras de datos, su clasificación y forma de manipularlas para buscar la manera más eficiente de resolver problemas. TIPOS DE DATOS ABSTRACTOS (TDA)

Tipos de datos abstractos (TDA). Abstracción Términos simples: Es un proceso mental, mediante el cual se extraen los rasgos esenciales de algo para representarlos por medio de un lenguaje gráfico o escrito. Debido a que es un proceso mental es una acción subjetiva y creativa, es decir: depende del contexto psicológico de la persona que la realiza. Términos de la POO: Constituye un principio de la POO que: “Enfatiza en detalles que son significativos y que suprime otros detalles que son por el momento irrelevante”. “Denota las características esenciales de un objeto que lo distinguen de todas las otras clases de objetos”. Para hablar de la abstracción es necesario tener clara la diferencia que existe entre los datos, los tipos de datos y los tipos abstractos de datos. Los datos son los valores que manejamos en la resolución de un problema, tanto los valores de entrada, como los de proceso y los de salida. Es decir, los datos son información y por lo tanto distinguimos varios tipos de datos. Un tipo de dato se puede definir como un conjunto de valores y un conjunto de operaciones definidas por esos valores. Clasificar los datos en distintos tipos aporta muchas ventajas, como por ejemplo indicarle al compilador la cantidad de memoria que debe reservar para cada instancia dependiendo del tipo de dato al que pertenezca. Los tipos de datos abstractos van todavía más lejos; extienden la función de un tipo de dato ocultando la implementación de las operaciones definidas por el usuario. Esta capacidad de ocultamiento nos permite desarrollar software reutilizable y extensible, lo cual veremos más adelante cuando hablemos de modularidad. La abstracción: es una técnica o metodología que permite diseñar o modelar Estructuras de Datos, que CONSISTE en representar bajos ciertos lineamientos de formato las características esenciales de una estructura de datos. Su importancia radica en que la abstracción es una capacidad para modelar una realidad por medio de las herramientas computacionales. Un TAD puede definirse mediante esta ecuación : TAD = Representación(Datos) + Operaciones (Metodos)

Un tipo de datos definido por el programador se denomina tipo abstracto de datos (TAD) para distinguirlo de los tipos predefinidos de datos. Los tipos abstractos de datos están formados por los datos (estructuras de datos) y las operaciones (procedimientos o funciones) que se realizan sobre esos datos. El conjunto de operaciones definidas sobre el TAD debe ser cerrado, es decir, sólo se debe acceder a los datos mediante las operaciones abstractas definidas sobre ellos. La abstracción de datos sólo permite acceder a ellos de manera controlada. Las estructuras de los TAD se componen de dos partes: 1 2

La Interfaz La Implementación.

Esto se debe a que las estructuras de datos reales que utilizamos para almacenar la representación de un tipo abstracto de datos son invisibles para los usuarios o clientes. Mientras que en la interfaz se declaran las operaciones y los datos, la implementación contiene el código fuente de las operaciones y lo mantiene oculto al usuario. Las principales ventajas que nos aportan los TAD son las siguientes: 1. Mejoran la conceptualización y hacen más claro y comprensible el código. 2. Hacen que el sistema sea más robusto. 3. Reducen el tiempo de compilación. 4. Permiten modificar la implementación sin que afecte al interfaz público. 5. Facilitan la extensibilidad. Construcción de un TAD

• Nombre del tipo de datos

Sintaxis:

• En semántica describiremos sus comportamientos.

• En el apartado sintaxis proporcionamos el tipo de datos de entrada y de salida de cada una de las funciones definidas sobre el TAD

Tipo:

Implementacion • En la implementación del TAD lo que hacemos es elegir la forma en que se van a representar los distintos valores que tomarán los datos. También seleccionaremos la manera en que se realizarán las operaciones

Semántica:

IMPLEMENTACION DE DATOS ABSTRACTOS A LA P.O.O La primera cosa con la que uno se enfrenta cuando se escriben programas es el problema. Típicamente, tú te enfrentas a problemas "de la vida real" y te quieres facilitar la existencia por medio de un programa para dichos problemas. Sin embargo, los problemas de la vida real son nebulosos y la primera cosa que tienes que hacer es tratar de entender el problema para separar los detalles esenciales de los no esenciales : Tratas de obtener tu propia perspectiva abstracta, o modelo, del problema.

El modelo define una perspectiva abstracta del problema. Esto implica que el modelo se enfoca solamente en aspectos relacionados con el problema y que tú tratas de definir propiedades del problema. Estas propiedades incluyen

1 2

Los datos que son afectados las operaciones que son identificadas por el problema.

Por medio de la abstracción tu creas una entidad bien definida que puede ser adecuadamente manejada. Estas entidades definen la estructura de datos de un conjunto de elemento. La estructura de los datos puede ser accesada solamente por medio de operaciones definidas. Este conjunto de operaciones es llamada interface y es exportada por la entidad. Una entidad con las propiedades recién descritas se conoce como un tipo de datos abstracto (TDA). Un tipo de datos abstracto (TDA) se caracteriza por las siguientes propiedades : 1.Exporta un tipo. A. Cuando usamos el manejador definimos la correspondiente variable para que sea del tipo Lista. 2. Exporta un conjunto de operaciones. Este conjunto es llamado interface. B. La interface para instancias del tipo Lista se define por medio del archivo de definición de la interface. 3.Las operaciones de la interface son el único y exclusivo mecanismo de acceso a la estructura de datos del TDA.

C. Dado que el archivo de definicion de la interface no incluye la representación actual del manejador, éste no puede ser modificado directamente. 4.Axiomas y precondiciones definen el ámbito de aplicación del TDA. D. El ámbito de aplicación está definido por el significado semántico de las operaciones provistas. Axiomas y precondiciones incluyen enunciados tales como ▪ ``Una lista vacía es una lista.'' ▪ ``Siendo l=(d1, d2, d3, ..., dN) una lista. Entonces l.append(dM) produce el siguiente resultado : l=(d1, d2, d3, ..., dN, dM).'' ▪ ``El primer elemento de una lista solamente puede ser borrado si la lista no está vacía.'' Los TDAs permiten la creación de instancias con propiedades bien definidas y comportamiento bien definido. En orientación a objetos, nos referimos a los TDAs como clases. Por lo tanto, una clase define las propiedades de objetos instancia en un ambiente orientado a objetos.

Los TDAs definen la funcionalidad al poner especial énfasis en los datos involucrados, su estructura, operaciones, así como en axiomas y precondiciones. Consecuentemente, la programación orientada a objetos es "programación con TDAs" : al combinar la funcionalidad de distintos TDAs para resolver un problema. Por lo tanto, instancias (objetos) de TDAs (clases) son creados dinámicamente, usados y destruídos. La programación modular descompone un programa en un pequeño número de abstracciones independientes unas de otras pero fáciles de conectar entre sí. Como hemos visto anteriormente, un módulo se caracteriza principalmente por su interfaz y su implementación. La programación modular sigue el criterio de ocultación de información: si no se necesita algún tipo de información, no se debe tener acceso a ella. La modularidad es un aspecto muy importante en los TAD, ya que es el reflejo de la independencia de la especificación y la implementación. Es la demostración de que un TAD puede funcionar con diferentes implementaciones. Además de esto, la programación modular ofrece otras ventajas, como por ejemplo un mejor reparto del trabajo y una detección de fallos mucho mejor.

Clase Una clase es una representación real de un TDA. Por lo tanto, provee detalles de implementación para la estructura de datos utilizada y las operaciones. Jugamos con el TDA Integer y diseñamos nuestra propia clase para éste:

Usamos una notación que no pertenece a ningún lenguaje de programación específicamente. En esta notación class {...} denota la definición de una clase. En medio de las llaves hay dos secciones, atributos: y métodos: que definen la implementación de la estructura de datos y operaciones del TDA correspondiente. Nuevamente, distinguimos los dos niveles con diferentes términos : Al nivel de implementación hablamos de "atributos", que son elementos de la estructura de datos al nivel del TDA. Lo mismo se aplica a "métodos", que es la implementación de las operaciones del TDA. Definición (Clase) Una clase es la implementación de un tipo de datos abstracto (TDA). Define atributos y métodos que implementan la estructura de datos y operaciones del TDA, respectivamente. Las instancias de las clases son llamadas objetos. Consecuentemente, las clases definen las propiedades y el comportamiento de conjuntos de objetos. Objeto Los objetos son identificables en forma única por medio de un nombre. Por lo tanto, tu podrías tener dos objetos distintos con el mismo conjunto de valores. Esto es similar a los lenguajes de programación "tradicional", donde tu podrías tener digamos dos integers i y j ambos equivalentes a "2". Nótese por favor el uso de "i" y "j" en la última oración para darle nombre a los dos integers. Nos referimos al conjunto de valores en un momento en particular como el estatus del objeto. Definición (Objeto) Un objeto es una instancia de una clase. Puede ser identificado en forma única por su nombre y define un estatus, el cuál es representado por los valores de sus atributos en un momento en particular. El estatus de un objeto cambia de acuerdo a los métodos que le son aplicados. Nos referimos a esta posible secuencia de cambios de estatus como el comportamiento del objeto : Definición (Comportamiento) El comportamiento de un objeto es definido por un conjunto de métodos que le pueden ser aplicados. Mensaje Un programa en ejecución es una colección de objetos, donde dichos objetos interactuantes son creados y destruídos. Esta interacción se basa en mensajes que son mandados de un objeto a otro, donde el emisor le pide al receptor que aplique un método a sí mismo.

Mandar un mensaje pidiéndole a un objeto que aplique un método es similar a una llamada a un procedimiento en lenguajes de programación "tradicionales". Sin embargo, en orientación a objetos, hay un cuadro de objetos autónomos que se comunican unos con los otros por medio de el intercambio de mensajes. Los objetos reaccionan cuando reciben mensajes por medio de la aplicación de métodos sobre si mismos. También pueden negar la ejecución de un método, por ejemplo si el objeto que hace la llamada no tiene permiso para ejecutar el método solicitado. Definición (Mensaje) Un mensaje es una solicitud a un objeto para invocar uno de sus métodos. Un mensaje por lo tanto contiene •

el nombre del método y



los argumentos del método.

Por consecuencia, la invocación de un método es solamente una reacción causada por el hecho de recibir un mensaje. Esto solamente es posible si el método es realmente conocido por el objeto. Definición (Método) Un método está asociado a una clase. Un objeto invoca un método como una reacción al recibir un mensaje. Sumario Ver un programa como una colección de objetos interactuantes es un principio fundamental en la programación orientada a objetos. Los objetos en esta colección reaccionan al recibir mensajes, cambiando su estatus de acuerdo a la invocación de métodos que a su vez podrían causar que otros mensajes fueran enviados a otros objetos.

En esta figura, el programa consiste en solamente cuatro objetos. Estos objetos se mandan mensajes unos a otros, como se indica por las flechas. Nótese que el tercer objeto se manda un mensaje a sí mismo.

Análisis y resultados: La programación por objetos es la agregación de varias técnicas de programación que se han desarrollado con el correr del tiempo. Su uso se está difundiendo mucho por la importancia que tiene el desarrollo de interfaces para programas, las que de una manera muy natural pueden implementarse usando técnicas de abstracción y programación por objetos. Aunque usar ADTs es más difícil que no hacerlo, pues en algunos casos se dura el doble programando, vale la pena el esfuerzo, pues la mejora en la modularidad de los programas que produce aumenta mucho su calidad, al modelar, calcular y almacenar agregados dimensionales de antemano, así mismo optimizar la carga de los datos y organizar bien el algoritmo.