Source: https://home.mis.u-picardie.fr/~furst/docs/exercicesPOO.pdf