Introduction
On appel, un type abstrait, une structure n'étant pas déjà prédéfinit au niveau de la structure de la mémoire de l'ordinateur ou de ou prédéfinit aux niveaux de ses composantes, mais plutôt complètement isolé de la machine sur lequel il fonctionne. Ainsi, il s'agit plutôt de termes d'opérations et de propriétés sémantiques totalement portable d'une machine à l'autre. On aura pour conséquence qu'un utilisateur ne pourra pas modifier directement la structure et provoquer des incohérences. En résumé, les types abstraits se divise en deux parties : la structure logique et les opérations.
La partie de structure logique permet d'indiquer une instance du type abstrait indiquant les relations pouvant exister entre les composantes de l'instance en question et des assertions invariables définissant des contraintes à apporter à ses relations.
La partie des opérations permet d'indiquer la syntaxe a utiliser ainsi que la sémantique des primitives pour la gestion du type abstrait. Toutefois, si un langage formel est utilisé dans cette partie, une description de ce langage doit obligatoirement être joint avec la description de ce type abstrait.
Étant donné que les types abstraits inclus des opérations, on ouvre la porte à l'imagination et toute sorte de technique peuvent donc être incluse à partir de ce niveau. Ainsi, parmi les types abstraits les plus connus, on retrouvera : les arbres binaires, le conteneur, le dictionnaire de tableau associatif, les ensembles, la file, la file de priorité, le graphe, la liste, les multi-ensembles et les piles.