Spécifications de domaines de valeurs


o La classe de base des spécifications de domaines de valeurs
o Sous-classes de spécification de domaine selon le type de la valeur
Cette classe permet de spécifier un domaine de valeurs, c'est-à-dire de définir ce domaine sans en expliciter toutes les valeurs a priori. Cette classe fournit des services pour deux objectifs :

La spécification d'un domaine de valeur consiste en :

Cette classe n'est pas destinée à recevoir des instances directes, au contraire de ses sous-classes correspondant à chaque type de descripteur d'entités.

Pour les descripteurs à valeurs entières ou flottantes (simple ou double précision) le domaine de référence est un ensemble d'intervalles. Pour les descripteurs dont les valeurs sont des chaînes de caractères, le domaine de référence est une liste de chaînes de caractères. Pour les descripteurs dont les valeurs sont des pointeurs sur des entités, le domaine de référence est soit une liste de pointeurs sur des entités soit une liste de classe d'entités.

La méthode IsInDomain indique si la valeur courante d'un descripteur d'une instance de DescriptedEntity est ou non dans le domaine que cette spécification définit. Elle prend l'entité en argument. Cette méthode est invoquée par l'expansion d'une spécification d'ensemble d'entités, lorsque celle-ci est dotée de spécifications de domaines de valeurs (voir page 'Spécifications d'ensembles d'entités'). Par exemple, pour savoir si la valeur du descripteur à valeur entière et de symbole de classe MY_DESC est ou non comprise, pour l'entité pointée par pObj, entre 1 et 5, on peut écrire :

  DescIntValueSpec pDVS = new DescIntValueSpec(MY_DESC, NOT_IN, 1, 5);
  pObj->SetValue(MY_DESC, 6);
  pDVS->IsInDomain(pObj);     // renvoie vrai
  pObj->SetValue(MY_DESC, 3);
  pDVS->IsOutOfDomain(pObj);  // renvoie vrai

La méthode GetValueInDomain renvoie une valeur tirée au hasard dans le domaine spécifié. Elle est exploitée par l'expansion d'une spécification d'ensemble d'entités lorsque celle-ci génère des instances désirées (mode INSTANTIATE) : les spécifications de domaines de valeurs permettent alors d'affecter les valeurs aux descripteurs des instances créées (voir aussi page 'Spécifications d'ensembles d'entités').

  int lb = 1;
  int up = 5;
  DescIntValueSpec pDVS = new DescIntValueSpec(MY_DESC, IN, lb, ub);
  int N = pDVS->GetValueInDomain();
  printf("\ntirage aléatoire dans le domaine [%d %d] : %d", lb, ub, N)
>>
tirage aléatoire dans le domaine [1 5] : 5

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