Citation:
Le plus souvent, ce que l'on cherche à réutiliser, ce sont les algorithmes.
Pour ce faire, on voit de plus en plus la chose suivante en POO :
On définit une méthode qui:
- prend en argument une structure de données (ex: un objet)
- prend en deuxième argument une "fonction" (délégué / lambda /...) qui va extraire les propriétés de l'objet qui nous intéressent
- dans le corps de la méthode, on définit l'algorithme qui va travailler sur ces propriétés
De cette façon, on peut développer des algorithmes applicables sur des classes qui n'ont strictement rien à voir entre elles (pas de classe ou d'interface commune entre elles).
Le seul principe de POO en oeuvre ici, c'est l'encapsulation (on n'utlise ni l'héritage, ni le polymorphisme).
C'est ce qui fait que ton exemple tombe pile poile et montre aussi en quoi on a besoin de l'héritage et du polymorphisme: S'il faut une implémentation spécifique d'une méthode donnée utilisé dans l'algorithme et que l’implémentation spécifique permet des gains de performances sur l'algorithme, et que cette méthode dépend de la structure de chaque objet cible?