“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 231 — #241
i
i
i
i
i
i
i
i
5.3 Le modèle déclaratif avec état explicite
231
Le partage (« aliasing »)
Le partage, appelé aussi aliasing, se produit quand deux identificateurs X et Y référencent la même cellule. On dit que les deux identificateurs sont des alias. Changer le
contenu de X changera aussi le contenu de Y. Prenez par exemple une cellule :
X={NewCell 0}
Nous pouvons créer une deuxième référence Y à cette cellule :
declare Y in
Y=X
Changer le contenu de Y changera le contenu de X :
Y:=10
{Browse @X}
qui affiche 10. En général, quand le contenu d’une cellule est changé, tous les alias
de la cellule voient le nouveau contenu. Quand on raisonne sur un programme, on
doit faire attention aux alias. Cela peut être difficile car ils peuvent être répandus sur
tout le programme. Le problème pourra devenir faisable si l’état est encapsulé dans
une petite partie du programme sans pouvoir s’échapper. C’est une des raisons clés
pour laquelle l’abstraction de données est une idée particulièrement bonne quand on
l’utilise avec l’état explicite.
L’égalité d’identité et l’égalité de structure
Deux valeurs seront égales si elles ont la même structure. Par exemple :
X=person(age:25 name:"George")
Y=person(age:25 name:"George")
{Browse X==Y}
Le Browser affiche true. Nous appelons ce concept l’égalité de structure. C’est
l’égalité que nous avons utilisée jusqu’à ce point. Mais avec les cellules, nous introduisons une nouvelle notion d’égalité, l’égalité d’identité. Deux cellules ne sont pas
égales si elles ont le même contenu, mais elles sont égales si elles sont la même
cellule ! Voici deux cellules :
X={NewCell 10}
Y={NewCell 10}
Ce sont des cellules différentes avec des identités différentes. La comparaison suivante :
{Browse X==Y}
© Dunod – La photocopie non autorisée est un délit
Précédent

- 246/370

Suivant