Constructeurs/Destructeurs
Identification et accès
L'entité attachée au processus
Spécification de la précondition
Spécification du délai de reprogrammation
Affectation de méthodes spécifiques
Affectation d'un corps aux méthodes, et de valeurs aux arguments
Le message : <processus>->SetInitialize(f1); affecte un corps f1 à l'instance de Method (précisément instance de InitializeProcess) dont le symbole de classe est INITIALIZE_PROCESS. Ce corps réalise l'initialisation du processus.
Le message : <processus>->SetGoOneStepForward(f2); affecte un corps f2 à l'instance de Method (précisément instance de GoOneStepForwardProcess) dont le symbole de classe est GOONESTEPFORWARD_PROCESS. Ce corps, invoqué répétitivement jusqu'à interruption dans la méthode prédéfinie Proceed, réalise l'avancée de l'effet du processus pour un pas de temps.
Il y a trois manières d'arrêter un processus continu :
Le message : <processus>}->SetStop(f3); affecte un corps f3 à l'instance de Method (précisément instance de StopProcess) dont le symbole de classe est STOP_PROCESS. Ce corps réalise l'arrêt du processus. Par exemple, si l'arrêt du processus pP est demandé à l'intérieur de la fonction qui code l'avancée sur un pas, l'appel sera écrit pP->ExecVoidMethod(STOP_PROCESS); Normalement, f3 contient une invocation de ToBeStopped(TRUE); sur le processus en jeu.
Par une convention propre à DIESE, chaque corps prend comme seul argument l'instance de Method dont il est le corps. Le processus en jeu est donc accessible par une invocation de DescribedContinuousProcess sur la méthode. Dans chacun de ces corps, on peut donc accéder à une entité particulière, celle renvoyée par l'invocation de ProcessedEntity sur le processus en jeu. C'est typiquement, mais non obligatoirement, celle dont le processus change les variables d'état. Par exemple, f3 peut être :
void MyProcessClass_Fct3(ProcessMethod* pM) { ContinuousProcess* pP = pM->DescribedContinuousProcess(); Entity* pE = pP->ProcessedEntity(); pP->ToBeStopped(TRUE); ... }