Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Mayen Olivares en 28 de Septiembre 2011, 09:12

Título: Concepto de tipos abstractos de datos
Publicado por: Mayen Olivares en 28 de Septiembre 2011, 09:12
Hola estoy estudiando c++ y no acabo de entender el concepto de tipos abstractos de datos, si alguien me pudiera aclarar de alguna manera o poner algún ejemplo por favor.
Título: Re:Concepto de tipos abstractos de datos
Publicado por: Mario R. Rancel en 29 de Septiembre 2011, 10:03
Hola Mayen, el concepto de tipo abstracto de datos o TAD no es un concepto fácil de explicar. Voy a tratar de hacerlo y de poner un ejemplo, pero no te preocupes si no lo entiendes de primeras, eso nos ha pasado a muchos. Lo que debes tratar es de ir haciendo ejercicios que te permitirán ir entendiéndolo poco a poco. Los TADs son propios de la programación orientada a objetos, y esta no es precisamente fácil de asimilar.

Un tipo abstracto de datos se define como una agrupación de una colección de valores (variables) y una colección de operaciones de manipulación válidas.

Supongamos que vamos a trabajar con el concepto "mes del año". Podríamos definir el mes como:

a) Una variable tipo int: por ejemplo febrero sería febrero = 2;
b) Un tipo abstracto de datos: febrero tendría una serie de valores, por ejemplo febrero.texto = "febrero", febrero.numero = "2", febrero.temperatura = "frio"... donde cada valor es de un tipo (por ejemplo int, string, float o lo que sea. A su vez febrero tendría unas operaciones disponibles, por ejemplo febrero.calcularDias(2015) nos podría devolver los días que tiene el mes de febrero en el año 2015.

Los tipos abstractos de datos se basan habitualmente en principios de la programación orientada a objetos como el ocultamiento de la información. Por ejemplo, tú como programador es posible que puedas usar el tipo e invocar sus métodos o funciones, pero sin embargo no podrás consultar el código (ni modificarlo) de dichos métodos o funciones.



Título: Re:Concepto de tipos abstractos de datos
Publicado por: Mayen Olivares en 30 de Septiembre 2011, 09:08
Pues la verdad es que no me queda muy claro para qué voy a definir un mes como tipo abstracto de datos. Si quiero calcular cuántos días tiene febrero en 2015 puedo usar una función y ya está.
Título: Re:Concepto de tipos abstractos de datos
Publicado por: Mario R. Rancel en 04 de Octubre 2011, 07:48
Hola Mayen, el uso de tipos abstractos de datos es una forma o filosofía de programación. No siempre en un programa que usa tipos abstractos de datos en el que uses "meses" tendrás que definirlos como tipos abstractos de datos. En algunas ocasiones, podrás hacerlo como enteros, en otros como cadenas de texto, en otros como enumerados... El programador o analista-programador ha de elegir los tipos de datos que usa en su programa.
En programación orientada a objetos el uso de funciones tal y como se entienden en otros lenguajes es posible, pero no es lo más habitual. Lo más habitual es el uso de funciones inherentes a los objetos.
Todo esto puede resultarte un poco confuso inicialmente, la mejor manera de irlo asimilando es ir haciendo ejercicios al tiempo que se estudian los conceptos.