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 :
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.