5.3. Relation de sous-typage dans le module de types

5.3.1. Sous-typage des C-types

Une hiérarchie structurelle, illustrée dans la figure Hiérarchie des classes de CTypes du début de chapitre, est définie pour les différentes Classes de C-types. Cette hiérarchie permet de structurer les C-types selon leurs caractéristiques. Ainsi, lorsque l'on souhaite ajouter un nouveau C-type, on l'intègrera dans cette hiérarchie pour qu'il hérite des caractéristiques pré-définies (ordonné, construit,...).

Pour typer un slot dans AROM on n'utilisera pas directement une de ces classes. En effet, une variable n'est pas de type discret ou multivalué mais de type entier ou list d'entier de 0 à 120. On utilise non pas les classes de C-type mais des instances de ces classes.

Ce chapitre traite de la relation de sous-typage qui existe entre les instances des C-types. Cette relation est orientée vers les données représentées par les C-types, elle n'est pas maintenue mais elle est vérifiée au cas par cas sur demande. La comparaison des instances se fait pour chaque classe de C-type, c'est pourquoi une définition est donnée pour chacune de ces classes de C-types.

Néanmoins, cette relation est toujours basée sur un même principe qui est l'inclusion ensembliste.

5.3.2. Relations de sous-typage des δ-types

De la même façon que pour les C-types, on s'intéresse à la relation de sous-typage des instances de δ-types. La hiérarchie structurelle est identique à celle des C-types et elle est utile pour les utilisateurs désirant ajouter de nouveaux types dans AROM.

Les δ-types sont composés d'un C-type de base et d'un domaine qui est un sous-ensemble du domaine de valeurs décrit par le C-type. Par conséquent, la hiérarchie définit pour les C-types est appliquées ici mais on l'affine en fonction des domaines spécifiés.

Dans tous les cas, quelque soit la catégorie à laquelle on s'intéresse, le δ-type Max, qui représente le même domaine que le C-type auquel il est associé, est au sommet de la hiérarchie, il est super δ-type de tous les autres δ-types appartenant à la même classe. Inversement, le δ-type Min, qui représente l'ensemble vide, est en bas de la hiérarchie. Une description plus précise pour les autres cas de figure est donné pour chaque catégorie de δ-type.

D'une manière générale, la règle de spécialisation appliquée est: Pour qu'un δ-type soit sous δ-type d'un autre, il faut que toutes ses valeurs soient acceptées par le second.

Actuellement, il n'est pas possible de définir un δ-type à partir d'un RecordCT ou d'un MultiValCT en redéfinissant les δ-types des éléments des collections ou étiquettes. Cette possiblité pourrait nécessité des corrections sur la définitions des relations de sous-typage.