Un Tipo de Dato Abstracto, TDA, es un modelo de una parte de la realidad.
Pero no es cualquier modelo, tiene que cumplir ciertas condiciones para que sea
considerado como un TDA. Un Tipo de Dato Abstracto debe definir dos partes: el
invariante y un conjunto de operaciones. Por ejemplo, el TDA Nave Espacial (ver
figura , que también es un modelo) tiene el invariante: cualquier vehículo
que pueda navegar en el espacio, que tiene una bodega de carga y un área de
pasajeros. Hay que notar que no todas las partes de una nave espacial se
mencionan. Primero porque el modelo perdería generalidad y segundo, por que
pueden no ser relevantes (para un ejemplo didactico son suficientes). Las
operaciones del TDA Nave Espacial podrían ser: cargar combustible, abrir
escotilla, prender motores, mover timón en una dirección, etc.
El invariante es una proposición que expresa el conjunto de valores válidos del TDA. El invariante permite saber qué elementos pertenecen al TDA y qué elementos no. En nuestro ejemplo, un automóvil no pertenece a TDA Nave Espacial, puesto que no puede navegar por el espacio; tampoco un barco, pues este navega por el mar; tampoco un satélite o una sonda espacial pertenecerían pues estos no tienen espacio para pasajeros. Pero el Transbordador Espacial (o lanzadera espacial) si pertenecería al TDA.
Un invariante también expresa la estructura abstracta del TDA. Por ejemplo en el TDA Nave Espacial se dice que tiene una bodega de carga y un espacio para pasajeros. ¿Por qué se dice que la estructura es abstracta?. Porque se trata de que el TDA tenga un nivel alto de generalidad, una de las formas para que esto se cumpla es que el TDA debe ser lo más independiente posible de su implementación, o sea, de la forma en como se representa en un lenguaje de programación. Por ello en el ejemplo, se habla de bodega de carga y no de un arreglo cuyos elementos pueden ser estructuras que tienen el código del artículo, su descripción, etc.
La otra forma de que un TDA tenga un nivel alto de generalidad consite en utilizar los conceptos del TDA en el lenguaje que se utiliza comúnmente en la parte de la realidad que se trata de modelar, por eso se habla de pasajeros y no de cadenas de caracteres.
Una operación es algo que se puede hacer al TDA. En el ejemplo, la operación cargar combustible es algo que se puede hacer al TDA Nave Espacial. No es extraño que una operación involucre más de un TDA, por ejemplo, abrir escotilla de la nave, incluye el TDA Nave Espacial y el TDA Escotilla.
El conjunto de las operaciones define el comportamiento del TDA, esto es, define lo que se puede hacer o no con el TDA. Al TDA Nave Espacial se le puede aplicar la operación prender motores, pero no se le puede aplicar la operación comer, pues no pertenece al TDA Animal.
Un TDA puede estar compuesto por otros TDAs. En el ejemplo bodega de carga y área de pasajeros, de hecho ésta es la forma como se diseñan los TADs; se parte de un TDA general y se va desglosando en sus partes que son a su vez TDAs.
Expresándolo en términos formales, un TDA se define como el par ,
donde
es un
proposición (que tiene un valor verdedero o falso) y
es el conjunto de las operaciones del TDA. Ya que estamos
tan formales podemos definir el TDA Nave Espacial asi: