OCL : Tournoi Tennis

OCL (Object Constraint Language) est un langage formel utilisé pour définir et spécifier des contraintes sur les modèles de données orientés objet. Il fournit des expressions de contraintes pour spécifier des conditions qui doivent être satisfaites par les instances d'une classe, ainsi que des opérations et des fonctions pour effectuer des calculs sur les objets. OCL est utilisé dans l'ingénierie logicielle pour valider et vérifier la conformité des modèles de données avec les exigences fonctionnelles et non fonctionnelles.

EXERCICE  OCL  Tournoi Tennis

Soit le diagramme UML suivant :Screenshot 2023 03 07 at 04 50 39 pandacodeur pdf

Exprimez les contraintes suivantes en OCL :
1) Tous les matchs du tournoi doivent avoir lieu dans la période du tournoi
2) Un match ne peut impliquer que les joueurs qui sont acceptés dans le tournoi
3) Chaque tournoi a au moins un match au premier jour du tournoi
4) Le nombre de joueurs autorisés dans un tournoi est incrémenté de 1 après exécution de accepterJoueur ()
5) L'opération accepterJoueur(j) ne peut être invoquée que si le joueur j n'a pas encore été accepté dans le tournoi.
6) Spécifier le résultat de l’opération getNombreJoueurs()

CORRECTION : OCL

1) Tous les matchs du tournoi doivent avoir lieu dans la période du tournoi
 context Tournament inv: matchs->forAll(m|m.début.estAprès(self.début) and m.fin.estAvant(self.fin))
 
2) Un match ne peut impliquer que les joueurs qui sont acceptés dans le tournoi
 context Match inv: joueur->forAll(j|j.tournoi->exists(t| t.match->includes(self)))
 
3) Chaque tournoi a au moins un match au premier jour du tournoi
 context Tournoi inv: matchs->exists(m:Match| m.debut.estEgal(self.debut))
 
4) Le nombre de joueurs autorisés dans un tournoi est incrémenté de 1 après exécution de accepterJoueur ()
 context Tournoi::accepterJoueur(j) post: self.getNombreJoueurs() = self@pre.getNombreJoueurs() + 1
 
5) L'opération accepterJoueur(j) ne peut être invoquée que si le joueur j n'a pas encore été accepté dans le tournoi.
 context Tournoi::accepterJoueur(j) pre: not self.joueurAccepté(j)
 
6) Spécifier le résultat de l’opération getNombreJoueurs()  
 context Tournoi :: getNombreJoueurs() post :  result = self.joueur->size()

Si vous avez trouvé les exercices corrigés en OCL de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam