2.4 Le Méta-modèle ECore
Dans cette partie, nous allons examiner ECore en
détail, dans le but de l'utiliser dans notre contexte de transformation
comme méta-modèle source.
2.4.1 Noyau d'ECore
Nous commençons par une illustration d'un sous-ensemble
simplifié du méta-modèle ECore. Nous le décrivons
comme le noyau d'ECore avec des ajouts d'autres concepts. Ce modèle est
illustré sur la Figure 2.3, et définit quatre types d'objets qui
sont quatre classes :
1. EClass : modélise les classes elles-mêmes. Les
classes sont identifiées par leur nom et peuvent contenir un certain
nombre d'EAttributes et d'EReferences. Pour soutenir l'héritage, une
classe peut se référer à un certain nombre d'autres
classes que ses supertypes.
page 28
2.4 Le Méta-modèle ECore
2. EAttribute : modélise les attributs, les
composantes des données d'un objet. Ils sont identifiés par leur
nom, et ils ont un type.
3. EDataType : modélise les types d'attributs,
représentant des types de données primitifs et objets qui sont
définis dans Java, mais pas dans EMF. Les types de données sont
également identifiés par leur nom.
4. EReference : est utilisé dans les associations de
modélisation entre les classes; il modélise une
extrémité d'une telle association. Tout comme les attributs, les
références sont identifiés par leur nom et ont un type.
Cependant, ce type doit être EClass à l'autre
extrémité de l'association. Si l'association est navigable dans
la direction opposée, il y aura une autre référence
correspondante. Une référence précise bornes
inférieures et supérieures sur sa multiplicité.
Maintenant, avec ce sous-ensemble d'ECore, nous pouvons
aborder le reste du modèle.
FIGURE 2.3 - Noyau d'ECore
2.4.2 Caractéristiques structurelles
En regardant le noyau ECore, nous remarquons un certain nombre
de similitudes entre «EAttribute» et «EReference», ils ont
tous deux noms et types. Pour capturer ces similitudes, ECore comprend une base
commune pour ces deux classes, appelé EStructuralFeature.
page 29
2.4 Le Méta-modèle ECore
La situation est illustrée dans la Figure 2.4.
FIGURE 2.4 - Concept EStructuralFeature
Comme le montre la Figure, EStructuralFeature est,
elle-même, provenant d'autres super-types. «ENamedElement»
définit un seul attribut, le nom que nous avons vu dans chaque classe
discuté jusqu'à présent. La plupart des classes en ECore
étendent cette classe afin d'hériter de cet attribut.
Un autre aspect commun d'EAttribute et EReference que nous
avons observé est la notion d'un type. Parce que cela est
également partagé avec d'autres classes d'ECore, comme nous le
verrons bientôt, l'attribut eType est pris en dehors dans
«ETypedElement», le supertype immédiat de
«EStructuralFeature».
Le type de «eType» est EClassifier, une classe de
base commune de «EDataType» et «Eclass» qui étaient
les types requis pour «eAttrbituteType» et
«eFeatureType».
EStructuralFeature comprend un certain nombre d'attributs
utilisés pour caractériser les deux, «EAttribute» et
«EReference». Cinq attributs booléens définissent les
caractéristiques structurelles :
~ Changeable : détermine si la
valeur de la fonction peut être réglée de
l'extérieur. ~ Transient : détermine si
la fonction est omise de la sérialisation de l'objet auquel il
appartient.
~ Unique : qui n'a de sens que pour les
fonctions de multiplicité, spécifie si une seule valeur est
empêché de se produire plus d'une fois dans la fonction.
page 30
2.4 Le Méta-modèle ECore
~ Unsettable : précise si la
fonction a une valeur supplémentaire possible, appelé unset, qui
est unique à partir de l'une des valeurs juridiques de son type.
~ Volatile : précise si la
fonction n'a pas de stockage directement; ce qui est généralement
le cas lorsque la valeur de la fonction est dérivée uniquement
à partir des valeurs d'autres caractéristiques.
2.4.2.1 EAttribute
Après avoir ce que les EAttributes ont en commun avec des
EReferences, nous allons maintenant examiner ce qui les distingue.
Figure 2.5 illustre les aspects uniques de
«EAttribute».
FIGURE 2.5 - Concept EAttribute
EAttribute définit également une
référence «eAttributeType», qui fait
référence à la même «EClassifier» que
«eType», que nous avons décrit dans le paragraphe
précédent. Cependant, le type d'un attribut doit être un
type de données et non pas une classe, donc cette
référence jette cet objet à un «EDataType».
Comme nous l'avons vu dans la Figure 2.3,
«EAttribute» sont contenus par un «Eclass» via sa
référence de «eAttributes».
|