En lisant l'article Inheritance versus composition, je me suis rendu compte que je n'utilisais que trop peu la composition.
L'héritage et la composition évoqués dans cet article sont deux concepts de la programmation orientée objet :
- l'héritage implique l'idée d'une relation "est un" (is a)
- la composition implique l'idée d'une relation "a un" (has a)
Exemple d'héritage en Python, un vélo "est un" véhicule :
class Bicycle(Vehicle):
pass
Exemple de composition en Python, une voiture "a un" moteur :
class Car:
def __init__(self):
self.engine = Engine()
Évidemment les choses sont plus complexes dans la réalité que dans les exemples des conférences.
Mais je pense que la composition aurait pu éviter à quelques bases de code d'avoir une chaîne d'héritage pénible à comprendre, tout en restant orienté objet !
À ne pas confondre avec la composition de fonctions donc ;)