“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 297 — #307
i
i
i
i
i
i
i
i
6.4 La programmation avec l’héritage
297
Les listes enchaînées
Nous définissons la classe LinkedList pour regrouper les figures ensemble, avec
les méthodes init (initialiser la liste enchaînée), add(F) (ajouter la figure F) et
forall(M) (exécuter {F M} pour toutes les figures F) :
class LinkedList
attr elem next
meth init(elem:E<=null next:N<=null)
elem:=E next:=N
end
meth add(E)
next:={New LinkedList init(elem:E next:@next)}
end
meth forall(M)
if @elem\=null then {@elem M} end
if @next\=null then {@next forall(M)} end
end
end
La méthode forall(M) est particulièrement intéressante parce qu’elle utilise les
messages de première classe. Une liste enchaînée est représentée comme une séquence
d’instances de LinkedList. Le champ next de chaque instance référence la suivante dans la liste. Le dernier élément a le champ next égal à null. Il y a toujours au
moins un élément dans la liste, qui s’appelle l’en-tête. L’en-tête n’est pas un élément
qui est vu par les utilisateurs de la liste ; il est nécessaire uniquement pour l’implémentation. L’en-tête a toujours le champ elem égal à null. Une liste enchaînée qui est
vide correspond donc à un en-tête avec les deux champs elem et next égal à null.
Les figures composites
Une figure composite est en même temps une figure et une liste enchaînée de figures.
Nous définissons donc une classe CompositeFigure qui hérite des deux classes
Figure et LinkedList :
© Dunod – La photocopie non autorisée est un délit
Précédent

- 312/370

Suivant