Exercice Sur L'ocl
Exercice Sur L'ocl
Exercice Sur L'ocl
ponderation: Real
Context e: Etudiant
inv: e.note = e.activites->collect(ponderation * resultat)->sum
Departement Universite
departement
departement
* etudiants * cours
* * etudiants * departements
*
Etudiant cours
Cours Etudiant * Departement
etudiants departements
Les cours d’un étudiant sont tous des cours de La liste des étudiants de l’université est l’union
son département. de tous les étudiants de tous les départements.
* *
College
Cours Etudiant Id: Integer
idCegep: Integer etudiants colleges Tc: Integer
Les cours suivis par un étudiant, ses cours à faire et ses
cours * * etudiants équivalences forment trois ensembles mutuellement exclusifs
Context e: Etudiant
inv: let r1 : Set(Cours) = e.equivalences->intersection(e.afaire) in
Le total des cours (Tc) d’un collège est la let r2 : Set(Cours) = e.equivalences->intersection(e.suivis) in
let r3 : Set(Cours) = e.afaire->intersection(e.suivis) in
quantité de cours suivis dans ce collège r1->isEmpty and r2->isEmpty and r3->isEmpty
(idCegep du cours = id du collège) par ses
étudiants. Context e: Etudiant
inv: e.equivalences->intersection(e.afaire)->isEmpty and
Context c: College e.equivalences->intersection(e.suivis)->isEmpty and
inv: c.Tc = c.etudiants.cours->asSet->select(co | co.idCegep = c.id)->count e.afaire->intersection(e.suivis)->isEmpty
Compagnie Universite
don: Real grandDonateurs: Set(Compagnie)
* compagnies
Universite
1 * departements
1
Responsable responsable
Departement
responsable 1 * departements
1
Responsable Departement La liste des grands donateurs d’une université est l’union de toutes les
responsable
compagnies qui ont donné un don de plus de 10000$ et qui sont en
relation avec le grand responsable de l’université ou avec les
responsables des départements.
Le grand responsable associé à l’université est
distinct des responsables associés à ses Context u: Universite
départements. inv: let liste : Set(Compagnie) =
u.departements.responsables.compagnies -> AsSet()
Context u:Universite ->union(u.responsable.compagnie) in
inv: u.departements.responsable->excludes(u.responsable) u.grandDonateurs = liste->select(c | c.don > 10000)