Source: https://www.fil.univ-lille1.fr/~routier/enseignement/licence/examens/sujet-POO-mai2011.pdf