Mais il n'y en a pas de réelle différence !
Il y a une différence entre percevoir le monde d'après le paradigme objet et percevoir le monde d'après le paradigme procédural. Dans le premier cas tu vois le monde comme des objets qui communiquent entre eux pour résoudre une tâche. Chaque objet connait ce qu'il a à faire et comment il a à le faire. Il envoie des messages, à lui ou aux autres pour demander quelquechose. La paradigme procédural voit le monde comme une ensemble de fonctions qui collaborent. C'est une vision plus « mathématique » bien qu'il faille faire attention à ne pas faire un parallèle sans nuance. Résoudre un problème c'est appeler la bonne fonction qui elle-même appellera les autres qui lui sont nécessaires.
Est-ce qu'il y a opposition ? Non. Car les objets aussi doivent faire des actions et donc employer des procédures si on veut. Les fonctions elle s'appliquent sur des données et donc on retrouve des agrégats et d'autres données complexes qui peuvent être vu comme des « objets » aussi du monde. Ainsi, la procédure
est un pendant à la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int multiplier (int,int)
L'OO, c'est mettre les données en avant et décomposer le problème selon les relations (la complexité) entre ces données. Le procédural, c'est mettre les fonctionnalités en avant et décomposer le problème selon la complexité fonctionnelle. En pratique, on fait toujours un peu des deux. Les langages mettent juste plus l'emphase (attention anglicisme) sur l'une ou l'autre de ces points de vue en offrant une syntaxe et des propriétés qui s'y prêtent mieux. Mais finalement, on fait la même chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int int::multiplier (int)
Certains vont te dire que l'un est meilleur que l'autre parce que plus « modulaire », « abstrait », « portable », « évolutif » etc. Ce ne sont que des points de vue personnel. Un bon code bien pensé d'un des deux paradigmes vaudra toujours mieux qu'un autre mal pensé, quelque soit le langage et le paradigme.
On revient donc sur ce qui a été dit — et note bien que le forum est rempli de ce genre de remarque — à savoir que l'idéal serait de choisir en fonction du problème et des moyens. En pratique, comme le mentionnait Luc, on a rarement le choix et on choisi un langage pour des raisons économiques, commerciales, organisationnel…
C'est un débat qui existe depuis l'avènement de l'OO dans les années 80. Il existe aussi avec tous les paradigmes qui semblent s'opposer. Et il n'y a aucune bonne réponse jusqu'à maintenant, que des préférences personnelles.
Partager