Définition
Une spécification d’une catégorie de données par l’ensemble des opérations qui peuvent y être effectuées et les propriétés (sémantique comportementale) que ces opérations doivent satisfaire, indépendante de toute implémentation particulière.

Principe

Principe
Définir les données par interface et axiomes (opérations, préconditions, postconditions, invariants) plutôt que par disposition en mémoire ou algorithmes ; la correction et le raisonnement reposent sur le contrat entre clients et implémenteurs, permettant plusieurs implémentations respectant le comportement spécifié.

Démonstration

Démonstration
Un ADT pile est défini par les opérations push, pop, top/peek et empty avec une sémantique LIFO : push suivi de pop renvoie l’élément empilé ; des implémentations concrètes incluent tableaux, listes chaînées ou tampons circulaires qui satisfont tous le même contrat ADT.

Mauvaise application

Mauvaise application
Confondre un ADT avec une implémentation particulière (par ex. assimiler l’ADT pile à une implémentation par tableau) ou exposer des détails d’implémentation dans la spécification compromet la portabilité, la vérification formelle et le raisonnement sur la complexité.

Conséquence

Conséquence
L’utilisation d’ADTs clarifie la correction des programmes, permet la conception modulaire et la substitution d’implémentations, et sépare les préoccupations pour que la complexité algorithmique et les compromis de stockage puissent être analysés indépendamment du comportement logique.

Inversion

Inversion
Une représentation de données concrète sans spécification abstraite expose les choix d’implémentation comme API, amenant les clients à dépendre des détails de représentation ; l’inversion rejette toute barrière d’abstraction et couple les clients à une seule implémentation.

Limite

Limite
S’applique au niveau de spécification et de conception logicielle ; exclut le câblage matériel bas‑niveau, les dispositions physiques de mémoire dans les systèmes embarqués quand celles‑ci font partie du contrat fonctionnel, et les descriptions informelles dépourvues de propriétés comportementales formelles lorsque le raisonnement formel est requis.

Tension sémantique

Tension sémantique
Tension avec les implémentations de types et l’encapsulation objet : les types runtime d’un langage ou les objets peuvent confondre interface ADT et implémentation ; le débat porte sur le degré de formalisme requis pour la spécification (documentation informelle vs axiomatization formelle).

Synthèse

Synthèse
Un type de données abstrait est l’interface plus le contrat comportemental qui définit ce que font les opérations et les invariants qu’elles préservent — séparant la spécification logique des choix d’implémentation afin que plusieurs structures de données concrètes puissent réaliser le même comportement observable dans des contraintes de performance et de correction définies, tout en laissant des incertitudes sur les compromis non fonctionnels.