Les paramètres


o Fonctions de création/suppression, accès
o Accès à la valeur d'un paramètre
o Etablissement de la valeur d'un paramètre

Cette classe permet de stocker en mémoire les informations écrites par l'utilisateur du simulateur dans le fichier externe de paramètres du système (voir page 'Le fichier des paramètres du système' les règles d'écriture de ce fichier). Une instance de Parameter sera créée pour chaque ligne du fichier paramètres.

La particularité du système de paramètres de DIESE est qu'un paramètre n'est pas simplement identifié par son nom de code (c'est-à-dire le nom d'une variable admis par le langage de programmation utilisé). Un paramètre est identifié par deux chaînes de caractères, celles que l'utilisateur a utilisées dans le fichier externe, et qui deviennent des attributs de l'instance de paramètre lors de sa création.

Les instances sont créées par l'exécution de la fonction ParseParameterFile (voir page 'Les fichiers'). Un simple appel à cette fonction (au plus tard avant l'appel de la méthode Run) évite donc au développeur du simulateur de coder lui-même la création des instances de paramètres à partir du fichier.

Les valeurs des paramètres sont, typiquement, affectées (avant ou après l'appel de Run) à des descripteurs d'entités, ou à certains attributs d'autres classes de DIESE, telles que Simulation, SequentialDataFile, …). On accède à la valeur des paramètres par les fonctions Get...ParameterValue décrites ci-après, et on réalise les affectations par les méthodes appropriées de DIESE (par exemple les méthodes de la famille Set...Value pour Entity).

Pour un paramètre donné, le contenu des deux chaînes identifiantes est libre. Cependant, le développeur du simulateur pourra leur donner un contenu signifiant. Supposons par exemple que le développeur ait décidé que la position initiale d'une voiture sera un paramètre de la simulation de son parcours. Le paramètre pourra être identifié par les chaînes "voiture" et "positionInitiale". Le développeur signale ce choix à l'utilisateur, qui devra donc écrire dans le fichier des paramètres une ligne comme suit :

     voiture positionInitiale <- 0.5;

On aurait aussi pu écrire :

     INIT voiture positionInitiale <- 0.5;
... pour ranger le paramètre dans un groupe (ici 'INIT'), soit pour améliorer la clarté du fichier, soit pour utiliser cette notion de groupe dans les spécifications de sortie (voir page 'Les spécifications de sortie/Sauvegarde sur fichier séquentiel').

L'appel à ParseParameterFile crée une instance de Parameter avec les attributs "voiture" et "positionInitiale". L'exploitation du paramètre se fait par une séquence telle que :

  Car* p = CreateCar();
  p->SetValue(POS_INIT, GetRealParameterValue("voiture", "positionInitiale"));

La fonction ParseParameterFile sait reconnaître le type d'un paramètre, grâce à la forme de la valeur écrite en fin de ligne sur le fichier (voir page 'Les fichiers/Le fichier des paramètres du système'}). Une incohérence entre la fonction utilisée pour accéder à la valeur et le type du paramètre identifié par les deux chaînes de caractères fournies en arguments provoque l'arrêt du programme. Par exemple, l'appel suivant est incorrect :

  Car* p = CreateCar();
  p->SetValue(POS_INIT, GetIntParameterValue("voiture", "positionInitiale"));

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