OCL : Hôtel

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 Hôtel

Un hôtel est constitué d'un certain nombre de chambres. Un responsable de l'hôtel gère la location des chambres. Chaque chambre se loue à un prix donné (suivant ses prestations). L'accès aux salles de bain est compris dans le prix de la location d'une chambre. Certaines chambres comportent une salle de bain, mais pas toutes. Les hôtes de chambres sans salle de bain peuvent utiliser une salle de bain sur le palier. Ces dernières peuvent être utilisées par plusieurs hôtes. Des personnes peuvent louer une ou plusieurs chambres de l'hôtel, afin d'y résider. En d’autres termes : l'hôtel héberge un certain nombre de personnes, ses hôtes (il s'agit des personnes qui louent au moins une chambre de l'hôtel...). On vous donne le diagramme de classes. Afin d'enrichir ce diagramme, en décrivant ses contraintes et ses invariants, spécifier en OCL les déclarations textuelles suivantes :

Screenshot 2023 03 02 at 08 17 39 pandacodeur pdf

1. Un hôtel ne contient jamais d'étage numéro 13.
2. Le nombre de personnes par chambre doit être inférieur ou égal au nombre de lits dans la chambre louée. Les enfants (accompagnés) de moins de 4 ans ne "comptent pas" dans cette règle de calcul (à hauteur d'un enfant de moins de 4 ans maximum par chambre).
3. On ne peut repeindre une chambre que si elle n'est pas louée. Une fois repeinte, une chambre coûte 10% de plus.
4. L'étage de chaque chambre est compris entre le premier et le dernier étage de l'hôtel.
5. Chaque étage possède au moins une chambre (sauf l'étage 13, qui n'existe pas...).
6. Une salle de bain privative ne peut être utilisée que par les personnes qui louent la chambre contenant la salle de bain et une salle de bain sur le palier ne peut être utilisée que par les clients qui logent sur le même palier.
7. Le loyer de l'hôtel est égal à la somme du prix de toutes les chambres louées.

CORRECTION : OCL


1. context Enseignant:: service : Integer derive : self . enseigne . heures->sum()
2. context Matiere inv: self .est_maitrisée ->notEmpty()
3. context Enseignant::augmenterSal(m : Integer) post: self . salaire = self . salaire @pre + m
4. context Departement inv: self . chef->size() = 1 and self . chef .age > 40
5. context Departement inv: self . enseignants->forAll(e1, e2 : Enseignant|e1 <>e2 implies e1.nom <>e2.nom)
6. context: Departement inv: self . enseignants->exists(e: Enseignant |e.titre = Titre ::Pr)
7. context Enseignant let : etuds () : Bag(Etudiants) = self . enseigne . etudiant
inv: self . titre = Titre :: pr implies self . etuds ()->forAll(e| e.estAdmis())
8. context Etudiant inv : self.note[matère]->moy()>=10

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