Source: http://lig-membres.imag.fr/pernet/Enseignements/L3METI_ProgOO/L3METI_POO.pdf