1.2. PROGRAMMATION MODULAIRE
Les types abstraits de donn´ees (TAD) sont bas´es sur deux id´ees :
– L’encapsulation : c’est la d´efinition d’un type et d’un ensemble d’op´erations
pour le manipuler `a l’int´erieur d’une unit´e syntaxique (un contenant : fichier,
classe, module, package, etc.)
– La dissimulation de l’information : c’est le masquage des d´etails d’impl´ementation
qui ne concernent pas l’utilisateur de l’abstraction.
L’encapsulation est utilis´ee pour la compilation s´epar´ee : on regroupe dans un
fichier les parties d’un programme qui sont s´emantiquement li´ees. Lors d’une modi-
fication, on n’a pas `a recompiler tout le programme mais seulement le module qui a
chang´e. Les TAD sont d´efinis par :
– La sp´ecification du type tel que vu de l’ext´erieur, elle d´efinit comment utiliser
le type (donn´ees et op´erations accessibles). Elle d´ecrit aussi l’interface, ce qui est
export´e. Les programmes utilisant le TAD importent l’interface pour pouvoir
utiliser le type.
– La repr´esentation des objets de ce type (structure de donn´ee du type), elle
d´ecrit comment les objets du TAD sont construits.
– L’impl´ementation des op´erations qui manipulent les objets de ce type. Il y a
parfois deux op´erations particuli`eres : constructeur et destructeur qui sp´ecifient
comment cr´eer un objet du type et quoi faire quand on veut le d´etruire.
Un bon TAD ne devrait exporter que des op´erations, pas de donn´ees (champs).
Eventuellement, les donn´ees sont acc´ed´ees au travers d’op´erations tr`es simples ap-
pel´ees fonctions d’acc`es (getters et setters) pour donner une valeur ou extraire la
valeur d’une donn´ee.
Remarque : Les classes du mod`ele `a objets sont des TAD.
Exemple de TAD : Type Polynome - Interface
Constructeurs
ZERO →polynome
PLUS(Polynome, entier, reel) →Polynome
Autres g´en´erateurs
ADD(Polynome,Polynome) →Polynome
SOUSTR(Polynome,Polynome) →Polynome
MULT(Polynome,reel) →Polynome
PROD(Polynome,Polynome) →Polynome
DERIV(Polynome) →Polynome
Fonctions d’acc`es et d’interrogation
NUL(Polynome) →booleen
DEGRE(Polynome) →entier
COEF(Polynome, entier) →reel
VAL(Polynome,reel) →reel
Support de cours programmation Java - GBM2 - 3-