Exemple : Fichier XML correspondance à un MOO simple

Dans cet exemple, nous allons explorer la structure d'un simple fichier de MOO contenant deux classes et une association.



Le fichier commence par plusieurs lignes qui spécifient des détails relatifs à XML et au modèle.

Le premier objet qui apparaît est la racine du modèle <o:RootObject Id="01">. RootObject est un conteneur de modèle qui est défini par défaut lorsque vous créez et enregistrez un modèle. RootObject contient une collection appelée Children qui est composée de modèles.

Dans notre exemple, Children ne contient qu'un objet de modèle qui est défini comme suit :

<o:Model Id="o2">
 <a:ObjectID>3CEC45F3-A77D-11D5-BB88-0008C7EA916D</a:ObjectID>
 <a:Name>ObjectOrientedModel_1</a:Name>
 <a:Code>OBJECTORIENTEDMODEL_1</a:Code>
 <a:CreationDate>1000309357</a:CreationDate>
 <a:Creator>arthur</a:Creator>
 <a:ModificationDate>1000312265</a:ModificationDate>
 <a:Modifier>arthur</a:Modifier>
 <a:ModelOptionsText>
[ModelOptions]
...

Sous la définition de l'objet modèle, vous pouvez voir la série d'attributs ModelOptions. Remarquez que ModelOptions n'est pas limité aux options définies dans la boîte de dialogue Options du modèle d'un modèle, mais rassemble toutes les propriétés enregistrées dans un modèle, notamment les options relatives à la génération intermodèle.

Après ModelOptions, vous pouvez identifier la collection <c:ObjectLanguage>. Il s'agit du langage objet lié au modèle. La seconde collection du modèle est <c:ClassDiagrams>. Il s'agit de la collection des diagrammes liés au modèle. Dans notre exemple, un seul diagramme est défini dans le paragraphe suivant :

<o:ClassDiagram Id="o4">
   <a:ObjectID>3CEC45F6-A77D-11D5-BB88-0008C7EA916D</a:ObjectID>
   <a:Name>ClassDiagram_1</a:Name>
   <a:Code>CLASSDIAGRAM_1</a:Code>
   <a:CreationDate>1000309357</a:CreationDate>
   <a:Creator>arthur</a:Creator>
   <a:ModificationDate>1000312265</a:ModificationDate>
   <a:Modifier>arthur</a:Modifier>
   <a:DisplayPreferences>
...

Tout comme dans le cas des options de modèle, la définition ClassDiagram est suivie d'une série d'attributs de préférences d'affichage.

Dans la collection ClassDiagram se trouve une nouvelle collection appelée <c:Symbols>. Cette collection rassemble tous les symboles contenus dans le diagramme du modèle. Le premier objet à être défini dans la collection Symbols est AssociationSymbol :

<o:AssociationSymbol Id="o5">
   <a:CenterTextOffset>(1, 1)</a:CenterTextOffset>
   <a:SourceTextOffset>(-1615, 244)</a:SourceTextOffset>
   <a:DestinationTextOffset>(974, -2)</a:DestinationTextOffset>
   <a:Rect>((-6637,-4350), (7988,1950))</a:Rect>
   <a:ListOfPoints>((-6637,1950),(7988,-4350))</a:ListOfPoints>
   <a:ArrowStyle>8</a:ArrowStyle>
   <a:ShadowColor>13158600</a:ShadowColor>
   <a:FontList>DISPNAME 0 Arial,8,N

AssociationSymbol contient les collections <c:SourceSymbol> et <c:DestinationSymbol>. Dans ces deux collections, les symboles font l'objet de références mais ne sont pas définis, car ClassSymbol n'appartient pas aux collections SourceSymbol et DestinationSymbol.

<c:SourceSymbol>
    <o:ClassSymbol Ref="o6"/>
   </c:SourceSymbol>
   <c:DestinationSymbol>
    <o:ClassSymbol Ref="o7"/>
   </c:DestinationSymbol>

La collection des symboles d'association est suivie par la collection <c:Symbols>. Cette collection contient la définition des deux symboles de classe.

<o:ClassSymbol Id="o6">
   <a:CreationDate>1012204025</a:CreationDate>
   <a:ModificationDate>1012204025</a:ModificationDate>
   <a:Rect>((-18621,6601), (-11229,12675))</a:Rect>
   <a:FillColor>16777215</a:FillColor>
   <a:ShadowColor>12632256</a:ShadowColor>
   <a:FontList>ClassStereotype 0 Arial,8,N   

La collection <c:Classes> suit la collection <c:Symbols>. Dans cette collection, les deux classes sont définies avec leurs collections d'attributs.

<o:Class Id="o10">
   <a:ObjectID>10929C96-8204-4CEE-911#-E6F7190D823C</a:ObjectID>
   <a:Name>Order</a:Name>
   <a:Code>Order</a:Code>
   <a:CreationDate>1012204026</a:CreationDate>
   <a:Creator>arthur</a:Creator>
   <a:ModificationDate>1012204064</a:ModificationDate>
   <a:Modifier>arthur</a:Modifier>
   <c:Attributes>
  <o:Attribute Id="o14">

L'attribut est un objet terminal : aucune ramification supplémentaire n'est nécessaire pour en détailler la définition.

Chaque collection appartenant à un objet analysé est développée et analysée, y compris les collections contenues dans d'autres collections.

Une fois tous les objets et toutes les collections parcourus, les balises suivantes s'affichent :

</o:RootObject>
</Model>