Source: https://coursjava.fr/SITE_NFA032/Examens/Site/2011-2012/1ereSession/CorrectionExamen1ereSessionNFA002_2011-2012.pdf