You are on page 1of 4

1 INTRODUCCIN A LAS ESTRUCTURAS DE DATOS 1.

1 Tipos de Datos Abstractos (TDA) Introduccin En el mundo de la programacin existen diversos lenguajes que se han ido creando con el paso del tiempo y que se han perfeccionado debido a las necesidades de los programadores de la poca a la que pertenecen. Los primeros lenguajes de programacin eran de tipo lineal, ya que un programa se recorra desde un punto marcado como Inicio hasta llegar a un punto Fin. Con el tiempo se fueron creando nuevos lenguajes y en nuestros das los ms utilizados son los llamados Orientados a Objetos. Los Lenguajes Orientados a Objetos (LOO) tienen la caracterstica de que no son lenguajes lineales, sino que se forman de diversas funciones, las cuales son llamadas en el orden en que el programa mismo las pide o el usuario determina. Para entender mejor cmo funcionan los Lenguajes Orientados a Objetos, vamos a introducir un concepto fundamental en las Estructuras de Datos denominado Abstraccin de Datos y que es parte importante de estos Lenguajes y de la manera en que funciona la mayora del software comercial de nuestros das. Historia El concepto de tipo de dato abstracto (TDA, Abstract Data Type), fue propuesto por primera vez hacia 1974 por John Guttag y otros, pero no fue hasta 1975 que por primera vez Liskov lo propuso para el lenguaje CLU. El lenguaje Turbo Pascal fue determinante para la comn aceptacin de los TDAs con la introduccin de las Units, si bien estas no cumplen con las caractersticas bsicas de un Tipo de dato Abstracto como por ejemplo la encapsulacin de los datos. El lenguaje Ada pudo implementar exitosamente los TDAs con sus Packages. Vale recordar que estos dos ltimos lenguajes soportan formalmente la Programacin modular. Definicin La abstraccin de datos consiste en ocultar las caractersticas de un objeto y obviarlas, de manera que solamente utilizamos el nombre del objeto en nuestro programa. Ejemplo perro. A esto se le llama Abstraccin y es un concepto muy til en la programacin, ya que un usuario no necesita mencionar todas las caractersticas y funciones de un objeto cada vez que ste se utiliza, sino que son declaradas por separado en el programa y simplemente se utiliza el trmino abstracto (perro) para mencionarlo.

Ejemplo: Calculo del rea de un rectngulo Supongamos que en algn Lenguaje de Programacin Orientado a Objetos un pequeo programa saca el rea de un rectngulo de las dimensiones que un usuario decida. Pensemos tambin que el usuario probablemente quiera saber el rea de varios rectngulos. Sera muy tedioso para el programador definir la multiplicacin de base por altura varias veces en el programa, adems que limitara al usuario a sacar un nmero determinado de reas. Por ello, el programador puede crear una funcin denominada rea, la cual va a ser llamada el nmero de veces que sean necesitadas por el usuario y as el programador se evita mucho trabajo, el programa resulta ms rpido, ms eficiente y de menor longitud. Para lograr esto, se crea el mtodo rea de una manera separada de la interfaz grfica presentada al usuario y se estipula ah la operacin a realizar, devolviendo el valor de la multiplicacin. En el mtodo principal solamente se llama a la funcin rea y el programa hace el resto. Caracterizacin Un TDA est caracterizado por un conjunto de operaciones (funciones) al cual se denomina usualmente como interfaz pblica y representa el comportamiento del TDA; mientras que la implementacin como la parte privada del TDA est oculta al programa cliente que lo usa. Un TDA tendr una parte que ser invisible al usuario la cual hay que proteger y que se puede decir que es irrelevante para el uso del usuario y est constituida tanto por la maquinaria algortmica que implemente la semntica de las operaciones como por los datos que sirvan de enlace entre los elementos del TDA, es decir, informacin interna necesaria para la implementacin que se est haciendo para ese comportamiento del TDA. Resumiendo podemos decir, que tanto la implementacin de las operaciones como los elementos internos del TDA sern privados al acceso externo y ocultos a cualquier otro nivel. Un TDA representa una abstraccin: 1 Se destacan los detalles (normalmente pocos) de la especificacin (el qu). 2 Se ocultan los detalles (casi siempre numerosos) de la implementacin (el cmo). 1.2 MODULARIDAD DEFINICIN: Mdulo: Un mdulo que se supone que representa una funcin lgica es una secuencia lxicamente contina de instrucciones que se encuentra limitado por elementos de fronteras y adems se caracteriza por disponer de un nombre o identificador. Mdulo: Es aqul que est constituido por una o varias instrucciones fsicamente contiguas y lgicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa. Un mdulo puede ser: Un programa Una funcin Una subrutina (o procedimiento)

La modularidad se basa en la descomposicin de un problema en una serie de sub problemas; dividindolo en mdulos que resultan de segmentar el problema en funciones lgicas que son perfectamente diferenciadas. Esta divisin exige la presencia de un mdulo denominado mdulo de base o principal a objeto de que controle y se relacione con los dems. Es una tcnica de programacin que todava se utiliza tanto para la construccin de algoritmos computacionales bsicos as como apoyo al desarrollo de sistemas de gestin (en el diseo de diagramas modulares). La salida del mdulo debe ser funcin de la entrada, pero no de ningn estado interno. En la creacin de los mdulos deben cumplirse tres aspectos bsicos: descripcin, rendimiento y diseo. En la descripcin se definen las funciones y objetivos del programa. Para obtener el mximo rendimiento se ha de comprobar que el programa realice el proceso aprovechando al mximo todos los recursos de los que dispone. En cuanto al diseo, se debe comprobar la estructura que sigue el mdulo, as como la estructura de los datos y la forma de comunicaciones entre los diversos y diferentes mdulos. Conforme se extiende el tamao de los algoritmos, se hace ms difcil su revisin, actualizacin y/o correccin. Una poltica comn para solventar este problema consiste en la modularizacin. Esto significa que el algoritmo se fragmenta en partes llamadas mdulos. En realidad, es un mtodo de diseo que tiende a dividir el problema, de forma lgica, en partes perfectamente diferenciadas que pueden ser analizadas, programadas y puestas a punto independientes. Objetivos: Descomponer el sistema en mdulos:

- Los grupos deben maximizar el enlace y minimizar el acoplamiento. Determinar las relaciones entre mdulos:

- Identificar y especificar las dependencias entre mdulos. - Determinar la forma de comunicacin entre mdulos (variables llamadas a funciones, memoria compartida, paso de mensajes) Especificar las interfaces de los mdulos:

- Facilita la prueba independiente entre los mdulos. - Mejora la comunicacin e integracin del grupo

Caractersticas: Permite reducir la complejidad global del sistema descentralizado; ejm. Divide y vencers. Mejora la escalabilidad y la productividad (los mdulos pueden desarrollarse independientemente por varias personas)

Principios para asegurar diseos modulares: Soporte de lenguaje para unidades modulares.

Los mdulos deben corresponder a unidades sintcticas del lenguaje utilizado. Pocas interfaces:

Cada mdulo debe comunicarse con tan pocos como sea posible. Interfaces pequeas (Acoplamiento dbil):

Si dos mdulos se comunican, deben intercambiar la menor informacin posible. Interfaces explcitas:

Cuando dos mdulos se comunican, debe estar claro en el texto de uno o de ambos. Ocultacin de la informacin:

Toda la informacin sobre un mdulo debe ser privada al mdulo, a menos que se haya declarado especficamente como pblica. Algunas ventajas de utilizar mdulos son: Un programa modular es fcil de mantener y modificar. Un programa modular es ms fcil de escribir y depurar (ejecutar, probar y poner a punto). Un programa modular es ms fcil de controlar. El desglose de un problema en mdulos permite encomendar los mdulos ms complejos a los programadores ms experimentados y los ms sencillos a los programadores nveles. Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas. Desventajas del uso de mdulos: No se dispone de algoritmos formales de modularidad, por lo que a veces los programadores no tienen claras las ideas de los mdulos. La programacin modular requiere ms memoria y tiempo de ejecucin.

You might also like