Simscript III/Dictionnaire des instructions/CLASS

Un bloc begin class .. end déclare une classe et doit apparaître dans le préambule (preamble). Il est suggéré de terminer l’énoncé end par un commentaire identifiant la classe. Les attributs, les méthodes et les ensembles sont spécifiés à l’intérieur du bloc.Pour chaque déclaration de classe, un mode référence du nom de la classe (reference) est implicitement défini.

Une classe peut comporter une partie publique et une partie privée. La partie publique est déclarée dans le préambule public (public preamble) et la partie privée est déclarée dans le préambule privé (private preamble). Les attributs, les méthodes, les ensembles peuvent être déclarés dans un préambule public, auquel cas, ils sont publics et peuvent être importés par d’autres modules ou sous-systèmes ; dans le cas contraire (déclarés dans le préambule privé), ils sont privés. Les classes de base d’une classe publique peuvent être déclarées dans un préambule privé.



Exemple :

begin class Ressource
    every Ressource
        has a   Unités_Totales, 
            an  Unités_Acquises, 
            an  Unités_Disponibles 	method, 
            an  Attendre_Pour 		method, 
            a   nettoyer 		method, and 
       owns a Requête'FileAttente 
    define Unités_Totales	as an integer variable 
    define Unités_Acquises 	as an integer variable monitored on the left 
    define Unités_Disponibles 	as an integer method 
    define attendre_Pour        as a method 
					given 2 integer values''Unités requises et priorité 
	before destroying a Ressource, call nettoyer 
end ‘‘Ressource

begin class Requête
    every Requête
        has  a  Unités, 
             a Priorité, 
             a Le_Processus, and 
  belongs to a FileAttente
    define Unités, Priorité 	as integer variables 
    define Le_Processus 	as a pointer variable 
    define FileAttente 		as a set ranked by high Priorité
end‘‘Requête

begin class Caissier
    every Caissier
        is  a  Ressource,
       has  a  Nom,
            a Servir_Client method
    define Servir_Client as a method
			yielding 1 real value  ‘‘Temps dattente en minutes
    define Nom 	as a text variable

    accumulate 	Travail_Moyen_Journalier 	as the Journalier mean,
                Travail_Moyen			as the mean		of Unités_Acquises
    accumulate	Longueur_Moy_File_Journalière 	as the Journalier mean,
                Longueur_Max_File_Journalière 	as the Journalier maximum,
                Longueur_Moy_File		as the mean,
                Longueur_Max_File		as the maximum,
                Histo_File ( 0 to 20 by 1)	as the histogram  of N.FileAttente
    the class
        has a Temps_Moyen_Service   ‘‘En minutes
    define Temps_Moyen_Service   as a real variable
end  ‘‘Caissier