Informatique et Sciences du Numérique au lycée : un pas plus loin/LANGAGES/Éléments de syntaxe et de sémantique/Structuration des programmes/Types abstraits en programmation

Un livre de Wikilivres.

Le typage assure une certaine forme de cohérence dans la manipulation des données en assurant par exemple que les opérations prennent bien leurs arguments dans leur type de définition: par exemple la concaténation de deux listes ne sera pas applicable à deux booléens. Supposons maintenant que les données à manipuler ne soient représentées que par des listes ordonnées. Il est alors souhaitable que la concaténation de deux listes ordonnées retourne elle aussi une liste ordonnée. Autrement dit, on ne veut manipuler que des listes possédant la propriété d'être ordonnées, que ces listes soient arguments ou résultats d'opérations. Une telle propriété est en général appelée ***invariant. Pour aider au maintien des invariants, certains langages proposent une extension de la notion de type appelée ***type abstrait ou **type algébrique. Un type abstrait regroupe en une même entité un type de données et des opérations sur ces données supposées respecter l'invariant, le tout étant **encapsulé dans une construction syntaxique dédiée. L'encapsulation interdit toute manipulation de ces données n'utilisant pas exclusivement les opérations contenues dans l'entité. De plus l'utilisateur ne connait pas la manière dont ces données sont implantées. La vérification du respect de l'encapsulation et donc du maintien de l'invariant est faite par extension de l'algorithme de typage. Les modules et les classes permettent souvent de mettre en place un mécanisme d'encapsulation.

La notion de type abstrait peut être rapprochée de la notion d'ensemble quotient en mathématiques, c'est pourquoi un type abstrait est appelé type algébrique dans certaines études portant sur la sémantique de cette notion.

page en cours de construction