DataFlowGenerator:reference
De Wikip
Révision datée du 24 juillet 2026 à 19:08 par WikiAdmin (discussion | contributions) (1 version importée : dfg)
Les références de classes évitent de redéfinir des noms de classes et de dupliquer la structure d'une classe existante.
Exemple d'utilisation de référence de classe :
<el name="vecteur" type="CVecteur">
<el name="x" type="float"/>
<el name="y" type="float"/>
</el>
<el name="vitesse" type="@CVecteur" />
En l'utilisation des types primitifs revient à utiliser des références mais sans le caractère "@". Dans ce cas pourquoi utiliser ce caractère pour les autres types ? C'est parce que nous n'aurions aucun moyen de distinguer une classe vide d'une référence de classe. L'exemple suivant :
<el name="vecteur" type="CVecteur"/>
<el name="vitesse" type="@CVecteur" />
donnerait :
<el name="vecteur" type="CVecteur"/>
<el name="vitesse" type="CVecteur"/>
Nous pourrions aussi dire que toute classe vide est une référence de classe, mais ceci n'a pas été retenu comme solution.
| Rq | Dans un langage de programmation cette question ne se pose pas, car on sépare en général la définition d'une classe des instanciations de celle-ci. Dans notre grammaire la première définition est une instaciation sauf si l'attribut OnlyDefinition est positionné. |
Les références permettent aussi définir récursivement. Voici un exemple :
<el name="recurence" type="CRecurence">
<el name="sub1" type='@CRecurence' cardinality="?"/>
<el name="subn" type='@CRecurence' cardinality="*"/>
</el>
Al1 |
Attention, ne faites pas l'erreur suivante : <el name="recurence" type="CRecurence">
<el name="sub1" type='@CRecurence'/>
</el>
|