Source: https://www-lisic.univ-littoral.fr/~fonlupt/Enseignement/2020/POO/TD 2.pdf