Attributs à valeur explicite des entités : les descripteurs


o La classe de base pour tous les descripteurs.
o Les descripteurs constants
o Les descripteurs variables
o Les descripteurs prédéfinis
Le système simulé est composé d'entités entre lesquelles existent des relations structurales (composition, inclusion), gérées par des services de la classe Entity. Les descripteurs permettent quant à eux de spécifier deux autres types d'information sur une entité :

Dans DIESE, la valeur d'un descripteur peut être un entier ou un réel en simple ou double précision (resp. les types int, float et double de C), une chaîne de caractères (le type char* de C). Cela peut aussi être un tableau de chaînes de caractères, une instance d'Entity, un tableau de pointeurs sur des instances d'Entity, une instance d'EntitySpec, un tableau de pointeurs sur des instances d'EntitySpec, un tableau d'intervalles (entiers ou réels) ou enfin un tableau de réels en simple précision. C'est en cela qu'on dit que la valeur d'un descripteur est explicite, au contraire des attributs fonctionnels (voir la classe Method qui définissent une valeur calculée dynamiquement par une procédure.

Les descripteurs des entités ne peuvent être des descendants que des deux sous-classes prédéfinies de Descriptor : ConstantDescriptor et VariableDescriptor. Seuls les services applicables à tous les types de descripteurs sont définis au niveau de la présente classe de base. En particulier, les services renvoyant un type prédéfini de C ou une instance (ou un tableau) d'Entity (ou qui en utilisent en argument) sont décrits dans les sous-classes correspondant à ces types.

Les descripteurs scalaires numériques sont regroupés dans deux sous-classes MonoDimensionalNumerical[Constant Variable]Descriptor. Ce sont ceux dont le type de valeur est int, float, double, pIntIntervalTab*, pFloatIntervalTab*, pDoubleIntervalTab*. Ils possèdent un attribut caractéristique : l'unité de la valeur scalaire, accessible par les services ClassUnity(char*) et char* ClassUnity().

Qu'il soit constant ou variable, un descripteur peut être doté, normalement lors de sa construction, d'un domaine de valeurs admissibles, par les services SetSubDomain et AddSubDomain des deux sous-classes. Une exception sera alors levée (telle que OutOfIntDomain, …) si on tente d'affecter une valeur non admissible, par SetValue adressé au descripteur ou par Set..Value adressé à l'entité. Attention! Ce ne sont pas les constructeurs des classes prédéfinies qui dotent le descripteur d'un domaine de valeurs admissibles (même infiniment grand pour les descripteurs numériques). C'est dire qu'aucune exception ne sera levée, quelle que soit la valeur affectée, si un service tel que SetSubDomain n'est pas utilisé dans les constructeurs des classes propres à l'application.


This page was generated with the help of DOC++.