04.07.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!