Source: https://members.loria.fr/goster/files/teaching/oop/OOP-CM1-classroom.pdf