Correction TD Ocl
Correction TD Ocl
Correction TD Ocl
context Person
inv: self.isMarried implies
self.pasDansMesAncentres(conjoint) and self.pasDansMesDescendants(conjoint)
Corrections du TD
Exercice 1
1 Un diplôme universitaire est composé d’un ensemble ordonné d’années. Chaque année offre un
ensemble de matières, certaines étant obligatoires, d’autres optionnelles. Chaque matière a une certaine
durée (en heure) et compte pour un certain nombre d’ECTS. Une matière n’est proposée que pour une
seule année.
Rien à ajouter.
2 Une matière optionnelle peut avoir des prérequis, c’est-à-dire une liste de matières optionnelles que
l’étudiant doit avoir suivi dans les années précédentes du diplôme.
context Matiere
inv: type=#Optionnel implies
etudiant -> forAll ( e | e.matiere -> includesAll(prerequis))
1
Vérifier que les prerequis sont bien dans les années précédentes :
3 Chaque matière que suit ou a suivi un étudiant est notée. Une note de -1 signifie que l’étudiant n’a
pas encore été évalué pour cette matière.
Rien à faire.
4 Un étudiant a validé une année s’il a obtenu la moyenne aux matières de cette année et qu’il a
passé les évaluations pour toutes les matières de cette annnée.
6 Un étudiant ne peut pas être inscrit dans une année s’il n’a pas validé les années précédentes du
diplôme.
2
indexMaxAnneesEtudiant = anneesEtudiant -> size() -1 and
Sequence (0 .. (indexMaxAnneesEtudiant -1)) -> forAll ( i |
anneesEtudiants -> includes(self.annee.at(i)))
7 Pour une année donnée, un étudiant doit suivre un certain nombre de matières pour un nombre
total de 30 ECTS.
8 Un étudiant peut suivre ou avoir validé un diplôme de type Master seulement s’il a validé une
Licence (non professionnelle).
3
Exercice 2
1 Classe Personnne, l’anniversaire d’une personne est aujourd’hhui : void anniversaire()
context Personne::anniversaire()
post: age = age@pre +1
4 Classe Etudiant, l’étudiant s’inscrit dans une année du diplôme en cours : void inscriptionAnnee(a :
Annee)
6 Classe Annee, le nombre d’étudiants inscrits par année et par diplôme : nbEtudiants() : Integer