Source: https://www.lri.fr/~longuet/Enseignements/16-17/Et3-UML/Et3-TD5.pdf