É definido como um modelo matemático pelo par (v,o) onde v é um
conjunto de valores e o é um conjunto de operações sobre
esses valores.
Exemplo: tipo real associado aos seus valores e
operações válidas.
Uma vez que um TAD é definido e as operações associadas são especificadas,
nós podemos implementar aquele tipo de dado.
A característica
essencial de um TAD é a separação entre conceito e
implementação.
O termo "ocultamento de informação" é utilizado para descrever esta
habilidade. Ao usuário são fornecidos a descrição dos valores e o conjunto de
operações do TAD, mas a implementação é invisível e inacessível.
A separação da definição do TAD de sua implementação permite
que a mudança de implementação não altere o programa que usa o TAD.
O TAD é compilado separadamente, e uma mudança força somente a
compilação, de novo, do módulo envolvido (seguida de link,etc.)
Exemplo: TAD dicionário INGLÊS-PORTUGUÊS (v,o)
Pascal permite implementar TAD ?
Não totalmente, como fazem Módula-2 e ADA. As UNITS em Pascal representam
meio caminho andado nessa direção.
Exemplo:
Interface de um TAD em Módula-2
Definition Module complex; Export Qualified complex number, define, assign1, soma ... (tipo) (operações) Type complex number; Procedure Define (var c: complex number); Procedure Assign1 (real, imag: real): complex number; Procedure Soma (c1, c2: complex number): complex number; END complex;
Há dois arquivos em Módula-2: definição e implementação
Duas possíveis Estruturas de Dados para o TAD complex number:
Type complex number = POINTER TO RECORD real: REAL imag: REAL END; = POINTER TO ARRAY [1..2] of REAL;