Avancé – La représentation de l’information au sein de Generic System

À votre avis, comment est représentée l’information dans Generic System ? Est-ce sous forme de table (de manière scalaire) comme pour les bases de données relationnelles ? Ou plutôt dans un arbre, comme pour les fichiers XML ?

Modèle de représentation de l’information

Generic System enregistre l’information dans un graphe. Celui-ci a une seule racine : le nœud qui représente Engine. Tous les nœuds du graphe sont des objets qui implémentent l’interface Generic, y compris Engine. Ils ont la particularité d’être immuables et ont un cycle de vie simplifié : ils naissent et peuvent mourir. En aucun cas ils ne peuvent être modifiés.

Tous les nœuds contiennent dès leur construction une et une seule donnée. Celle-ci joue un rôle de désignant pour la structure de l’information et un rôle de désigné pour les occurrences de cette information. Par exemple, le nom d’une personne est le désignant et la personne est le désigné. Cette donnée doit être Serializable et implémenter correctement les méthodes equals() et hashCode().

Relations entre les nœuds

Les nœuds sont reliés entre eux par le principe « ancêtres / dépendances » : les ancêtres d’un nœud dépendant doivent exister pendant toute la durée de vie de ce dernier.

Trois types de liaison « ancêtres / dépendances » coexistent dans Generic System : l’instanciation, l’héritage et la composition.
Les ancêtres d’un Generic sont donc son « meta », ses « supers » et ses « composants ». Ces dépendances sont ses « instances », ses « héritiers » et ses « composites ».

Continue reading Avancé – La représentation de l’information au sein de Generic System