III.3.4. Le modèle de données de Guide
Le modèle de données de Guide [19] est un
système orienté objet distribué développé
par l'unité mixte Bull-Imag à Grenoble (France). Comme nous
l'avons vu, ce modèle sert de support à un langage orienté
objet portant le même nom dédié à la construction
d'applications réparties. Ici, la réponse d'objets est claire, le
système de type permet essentiellement de définir des objets
abstraits qui sont des instances des classes Guide. En remettant en question
l'explication, la notion de type présente dans Guide correspond à
une interface d'accès aux objets.
53
Nous nous retrouvons donc face à la difficile et
essentielle question de ces objets qui peuvent appartenir à
différentes classes avec une condition si celles-ci sont conformes
à l'interface proposée par le type.
Voilà pourquoi, avec le temps et l'expérience,
l'état associé à un objet Guide est une valeur qui peut
être construite [20]. Bien attendu, il va sans dire que le langage offre
deux constructeurs : le n-uplet (record) et le tableau (array). On voit bien
ici qu'ils peuvent être combinés de manière orthogonale.
Or, nous n'avons pas la puissance d'un modèle d'objets complexes, le
tableau n'offrant pas la dynamicité du constructeur ensemble. Nous avons
pu observer qu'il faut alors comme pour Orion, gérer explicitement des
listes chainées. Une modélisation possible pour le cas pratique
des personnes en Guide est la suivante :
De la même façon que la modélisation, tous
les objets Guide sont persistants. Dit autrement, ils ne persistent
réellement que lorsqu'ils sont accessibles à partir d'un nom.
Tout d'abord, il importe de préciser que, nous avons à faire ici
à un langage de programmation ce qui permet de distinguer deux
partitions dans l'espace de noms : les noms qui désignent des
données de la base, et les noms qui désignent des entités
dans l'environnement d'exécution. Mais ce n'est pas tout.
Nous pouvons par exemple répertorier dans cette
deuxième partition, qui n'existe que dans le cas d'un langage de
programmation, les noms désignant des variables locales d'une
procédure.
Pour résoudre ce problème et en quelque sorte
mettre en claire, cette seconde catégorie de noms peut être
déterminée statiquement par le schéma qui contient dans ce
cas les définitions des traitements (procédures ou
méthodes). Ce faisant d'un côté, ce n'est plus vrai
54
lorsque le langage supporte la récursivité
(empilage potentiellement infini d'environnements). Aussi bien que, comme nous
l'avons vu, l'environnement d'exécution comporte alors une pile
impliquant la création de nouveaux noms à chaque nouvel appel de
procédure. Quoiqu'il en soit, nous avons donc une deuxième racine
de nommage (la première étant la base de données
nommée "BaseDeDonnées") qui est l'environnement
d'exécution que nous nommons "Environ". Dans le cas d'un langage
classique, nous lui attachons généralement deux fils : un nom
désignant un n-uplet dont chaque attribut est une variable globale de
l'application (nous l'appelons "Global"), et le nom désignant la pile
d'exécution (nous l'appelons "Pile").
Seulement, dans Guide, nous pouvons ainsi créer des
objets qui sont désignés par des noms de l'environnement
d'exécution. Ce faisant, ils ont alors la durée de vie de ce nom,
c'est à dire au maximum celle de l'exécution en cours, à
moins qu'un autre nom de la base ne permette de les désigner avant la
fin de cette exécution. La nouveauté réside à
travers ce cas pratique de ce type de nom où
"Environ.Pile.main.Augmenter.this" désigne le paramètre contenant
l'objet sur lequel s'applique la méthode "Augmenter" qui a
été appelée dans la procédure "main" correspondant
au point d'entrée du programme.
Cela dit, tous les objets Guide qui sont créés
sont potentiellement persistants et deviennent réellement persistants
(ils subsistent à l'exécution du programme qui les a
créés) uniquement s'ils sont attachés
(désignés) par un nom de la base. Pour conclure, les
systèmes décrits précédemment, Guide offre un
service de nommage permettant de créer des points d'entrée vers
les objets de la base. Cela étant, ces noms ne font pas partie du
schéma ce qui est une divergence remarquable. Enfin et surtout, ces noms
ne sont pas typés (alors que Guide offre un typage fort) ce qui implique
le besoin de mettre en oeuvre de la vérification de type à
l'exécution lors de l'utilisation de ces noms.
|