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.