Relations entre les objets

Un objet est rarement créé isolément. Dans la majorité des cas les objets forment des graphes au moyen de relations. Les trois types de relation sont présentés dans cette section.

Usage d'un objet

La relation la plus simple est l'usage. Ainsi dans l'exemple précédent, l'objet Voiture possède une propriété qui le propriétaire du véhicule. Si elle est renseignée, celle-ci pointe vers un objet de type Conducteur. Ainsi, un objet Voiture a une relation d'usage vers un objet Conducteur.

Référence vers un objet

Lorsqu'un premier objet utilise à un second objet, cette relation leur est propre. Elle ne peut être modifiée par un troisième objet hormis en changeant la valeur de la propriété du premier objet.

La relation de référence est une relation d'usage avec une indirection : le premier objet utilise une référence dans une de ces propriétés et la référence utilise le second objet. Du fait de cette indirection, un troisième objet peut changer cette relation à l'issu du premier objet.

La relation référence d'objet est modélisée par un objet du type Reference.

Liste d'objets

Avec une relation par une référence, au plus un seul objet est pointé. Avec une relation par une liste, plusieurs objets sont pointés. Ainsi, dans l'exemple précédent, il aurait été possible de spécifier qu'une voiture peut posséder plusieurs conducteurs.

La relation liste d'objets est modélisée par un objet du type Liste.

Arbre binaire d'objets

Avec une relation par une liste, les objets sont rangés en vrac dans un ensemble. Il est possible de savoir si deux éléments sont identiques ou différents. En revanche, il ne sont pas ordonnés. Avec une relation par un arbre binaire, les objets sont ordonnés selon un critère. Cet ordre dans les objets est maintenu automatiquement par Up ! Kernel. Ainsi, dans l'exemple précédent, il aurait été possible de spécifier qu'une voiture peut posséder plusieurs conducteurs et de classer ces conducteurs par numéro de permis de conduire. La relation arbre binaire d'objets est modélisée par un objet du type ArbreBinaire.

Causalité entre le cycle de vie et les relations entre les objets

Lors du clonage d'un objet on peut décider de copier uniquement l'objet initial, de copier les objets liés à l'objet initial ou de copier tous les objets du graphe. Par défaut, la méthode Cloner ne copie que l'objet initial.

Lors de la terminaison d'un objet, son destructeur signale à Up ! Objects Management System que les objets liés ont un utilisateur de moins. Si l'objet était le dernier utilisateur d'un objet lié alors cet objet lié est lui-même terminé. La terminaison se propage le long des relations des objets dès qu'il n'existe plus d'utilisateur d'un objet.