Modélisation des systèmes temps-réel répartis embarqués pour la ...
Modélisation des systèmes temps-réel répartis embarqués pour la ...
Modélisation des systèmes temps-réel répartis embarqués pour la ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapitre V – Génération du code <strong>pour</strong> l’enveloppe applicative<br />
23 c<strong>la</strong>ss une_donnee_i_chaine {<br />
24 public char[] val = new char[6];<br />
25 }<br />
26<br />
27 c<strong>la</strong>ss une_donnee_i_structure {<br />
28 public une_donnee_i_entier i = new une_donnee_i_entier();<br />
29 public une_donnee_i_chaine c = new une_donnee_i_chaine();<br />
30 }<br />
Listing V.20 – C<strong>la</strong>sses Java issues <strong>des</strong> déc<strong>la</strong>rations AADL<br />
De <strong>la</strong> même façon, les tableaux et les chaînes de caractères sont déc<strong>la</strong>rés par un champ val<br />
contenant un tableau de <strong>la</strong> dimension spécifiée dans le composant AADL. Les composants de<br />
donnée correspondant à une énumération sont traduits par une structure de donnée Java enum,<br />
introduite dans Java 5.0.<br />
Contrairement à Ada, <strong>la</strong> traduction d’une structure de liste est re<strong>la</strong>tivement simple, dans <strong>la</strong><br />
mesure où Java définit <strong>la</strong> c<strong>la</strong>sse LinkedList, correspondant à une liste doublement chaînée. La<br />
traduction consiste donc à avoir une c<strong>la</strong>sse dont le champ val est objet de cette c<strong>la</strong>sse (listing V.21).<br />
32 c<strong>la</strong>ss une_donnee_i_liste {<br />
33 public LinkedList val = new LinkedList();<br />
34 }<br />
Listing V.21 – C<strong>la</strong>sse Java correspondant à un composant de liste en AADL<br />
V-4.2.3 Traduction <strong>des</strong> sous-programmes<br />
La syntaxe de Java ne permet pas de déc<strong>la</strong>rer une méthode en dehors d’une c<strong>la</strong>sse. Les différents<br />
sous-programmes AADL doivent donc être traduits par <strong>des</strong> métho<strong>des</strong> d’une c<strong>la</strong>sse Java particulière,<br />
définie dans chaque paquetage Java. Nous choisissons d’appeler cette c<strong>la</strong>sse subprogram,<br />
qui est un mot-clé AADL ; de cette façon, nous nous assurons que ce nom n’est pas utilisé par<br />
ailleurs dans <strong>la</strong> <strong>des</strong>cription AADL. Dans <strong>la</strong> mesure où <strong>la</strong> c<strong>la</strong>sse subprogram n’est pas censée être<br />
instanciée, les métho<strong>des</strong> issues <strong>des</strong> sous-programmes AADL sont nécessairement <strong>des</strong> métho<strong>des</strong><br />
de c<strong>la</strong>sse.<br />
Règle V.15 (Traduction <strong>des</strong> sous-programmes AADL en Java)<br />
Les sous-programmes d’un paquetage AADL sont traduits en Java par <strong>des</strong> métho<strong>des</strong><br />
d’une c<strong>la</strong>sse subprogram déc<strong>la</strong>rée dans le paquetage Java correspondant.<br />
Le passage <strong>des</strong> objets en paramètre se fait systématiquement par référence en Java. Par rapport<br />
aux règles de traductions que nous avons présentées en section V-4.2.2, tous les types de donnée<br />
Java issus <strong>des</strong> déc<strong>la</strong>rations AADL sont encapsulés dans <strong>des</strong> c<strong>la</strong>sses. Ces constructions syntaxiques<br />
ne permettent pas de contrôler <strong>la</strong> modification <strong>des</strong> données qu’elles contiennent, ce qui revient à<br />
considérer tous les paramètres comme étant in out.<br />
Afin de conserver <strong>la</strong> sémantique du passage <strong>des</strong> paramètres, nous encapsulons l’ensemble <strong>des</strong><br />
paramètres dans un conteneur qui permettra de contrôler les accès aux données. Un conteneur<br />
peut être comparé dans une certaine mesure à une c<strong>la</strong>sse Holder telle que définie dans les règles<br />
de conversion entre CORBA IDL et Java [OMG, 2002a]. Il fournit les métho<strong>des</strong> d’accès correspondant<br />
aux directions <strong>des</strong> différents paramètres du sous-programme considéré. Un conteneur<br />
fournit alors les métho<strong>des</strong> suivantes :<br />
– une méthode read_p si le paramètre AADL p est déc<strong>la</strong>ré in ;<br />
c○ 2007 Thomas Vergnaud 93