// Génère le package fr.ocelet.exp_model (force 1ere lettre minuscule) // => Toutes les classes générée seront dans ce package // Génère la classe Exp_model (force 1ere lettre en majuscule) // Génère la classe Entity_A entity Entity_A { property real prop1; } // Génère la classe Entity_B entity Entity_B { property real prop2; } // Génère la classe MyAffect affect real myAffect(group[real] gr) { real sum = 0; for (v in gr) { sum = sum + v; } return sum / gr.size(); // moyenne } // Génère la classe Rel // Au niveau de la relation on connait les roles, ceux-ci ne changent pas // dans toute la relation relation Rel[RolA,RolB] { // Génère la classe Rel/RolA role RolA { property real prop1; } // Génère la classe Rel/RolB role RolB { property real prop2; } // Genère la classe Rel/Evolve qui implemente Interaction // Pour chaque service on voit quelles sont les properties qui sont // affectées service evolve(int coef) { RolA.prop1 <=MyAffect= RolB.prop2 * coef; RolB.prop2 = RolB.prop2 +1; } } // Ajoute une popertydef dans le constructeur de la classe Exp_model property Rel rel; // Génère une methode et un main branché dessus dans Exp_model scenario exp_model { BuildGraph(); rel.evolve(0.4); } // Génère une methode dans Exp_model scenario buildgraph { Entity_A ea1 = Entity_A{ prop1 = 1; }; Entity_A ea2 = Entity_A{ prop1 = 3; }; Entity_B eb1 = Entity_B{ prop2 = 5; }; Entity_B eb2 = Entity_B{ prop2 = 0; }; rel = Rel[Entity_A,Entity_B]; rel.connect(ea1,eb1); rel.connect(ea2,eb1); rel.connect(ea2,eb2); }