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.