Bonjour,
parfois des types abstraits de donnée sont définis ainsi :
et est utilisé ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 typedef struct { int n; } *Integer; Integer newInteger(int n) { Integer i = malloc(sizeof(*i)); i->n = n; return i; } void deleteInteger(Integer i) { free(i); } int getValue(Integer i) { return i->n; }
Or il a été signalé à plusieures reprises sur ce forum que masquer un pointeur n'était pas une bonne pratique .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Integer i = newInteger(1); printf("%i\n", getValue(i)); deleteInteger(i);
Plusieures questions :
1) Pourriez vous donner des exemples de problèmes générés par cette pratique dans le cas général, c'est à dire si l'utilisateur du type abstrait manipule directement celui ci sans passer par les fonctions qui lui sont associées.
2) Dans le cas où l'utilisateur utilise les fonctions fournies et uniquement celles-ci pour :
- construire le type abstrait
- manipuler le type abstrait
- effacer le type abstrait
peut il y avoir encore des problèmes, si oui, lesquels ?
Merci .
Partager