Types abstraits et encapsulation
Le type abstrait de données : ses opérations et leurs propriétés, l'interface contre l'implémentation, constructeurs, accesseurs et modificateurs, l'invariant, et ce que protège l'encapsulation.
- 25 cartes
- 3 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
Quelques cartes du deck
Type abstrait de données : de quoi s'agit-il ?
Voir la réponse
Description d'une donnée par ses opérations et les propriétés qu'elles respectent, sans dire comment la donnée est représentée en mémoire.
Pour une pile, on dit que le sommet après
empiler(p, x)estx; on ne dit pas si un tableau ou une liste chaînée se trouve derrière.Une pile vérifie les propriétés :
sommet(empiler(p, x))vautxetdepiler(empiler(p, x))vautp. Que vautsommet(depiler(empiler(empiler(creer(), 3), 8)))?- 3
- 8
- La pile qui ne contient que 3
- Une erreur : la pile est vide
Voir la réponse
3
On lit de l'intérieur :
creer()est vide, puis 3, puis 8 au sommet.depilerretire le 8 et redonne la pile[3];sommeten renvoie l'élément, 3, pas la pile. Aucune représentation n'a servi : seules les propriétés comptent.Le code client ne doit dépendre que de l'… d'un type, jamais de son ….
Voir la réponse
Le code client ne doit dépendre que de l'interface d'un type, jamais de son implémentation.
Ainsi la représentation peut changer sans qu'aucun appelant ne soit réécrit.
Interface d'un type : de quoi s'agit-il ?
Voir la réponse
Ensemble des opérations qu'un utilisateur du type a le droit d'appeler, avec leurs paramètres et leurs résultats.
C'est le contrat : tant qu'il ne change pas, le code qui s'en sert continue de fonctionner, quoi qu'on modifie derrière.
Une file vérifie :
tete(enfiler(creer(), x))vautx, et défiler retire le plus ancien. Que vauttete(defiler(enfiler(enfiler(creer(), 5), 9)))?- 5
- 9
- La file qui ne contient que 9
- Une erreur : la file est vide
Voir la réponse
9
La file contient 5 puis 9.
defilerretire le plus ancien, 5, et il reste 9 en tête. Avec une pile, le même enchaînement aurait donné 5.