Et c'est beaucoup plus facile de passer la structure (classe) à la fonction calcule(). Deux possibilités :
les fonctions libres recupere_x() et recupere_y() sont déjà disponibles dans une bibliothèque ;
ou bien nous devons les implémenter, ce qui est bien plus facile que l'exercice précédent.
C'est dans ce second paradigme que sont conçus beaucoup de langages récents comme Rust et Go.
Cela permet naturellement de respecter le principe ouvert/fermé.
Prenons un exemple dans un vieux langage... allez prenons Python qui doit avoir une trentaine d'années, et étudions sa fonction libre len() :
str='test'r=len(str)# retourne 4
Certains objets implémentent la fonction membre __len__() mais la convention est de passer par la fonction libre len().
Commentaire sous licence Creative Commons Zero CC0 1.0 Universal (Public Domain Dedication)
[^] # Re: Nouveau langage
Posté par Oliver (site web personnel) . En réponse à la dépêche C++17 branche à la compilation (`if constexpr`). Évalué à 6.
Par exemple, la fonction suivante ne fonctionne que pour les structures (classes) fournissant des fonctions membres
recupere_x()etrecupere_y().Supposons que nous devions utiliser deux bibliothèques développées par deux entités différentes :
recupere_x()etrecupere_y();calcule.On n'a pas la possibilité de modifier aucune des deux bibliothèques.
Comment faire pour passer la structure (classe) à la fonction
calcule?Voyons maintenant, une implémentation de la fonction
calculeutilisant cette fois-ci les fonctions libres :Et c'est beaucoup plus facile de passer la structure (classe) à la fonction
calcule(). Deux possibilités :recupere_x()etrecupere_y()sont déjà disponibles dans une bibliothèque ;C'est dans ce second paradigme que sont conçus beaucoup de langages récents comme Rust et Go.
Cela permet naturellement de respecter le principe ouvert/fermé.
Prenons un exemple dans un vieux langage... allez prenons Python qui doit avoir une trentaine d'années, et étudions sa fonction libre
len():Certains objets implémentent la fonction membre
__len__()mais la convention est de passer par la fonction librelen().Commentaire sous licence Creative Commons Zero CC0 1.0 Universal (Public Domain Dedication)