Java est-il un langage orienté objet ?

La réponse est oui. Et pourtant à la lecture de cet article d’Anthony Ferrara on en vient à douter… Les exemples sont fait en PHP mais ses propos n’en restent pas moins valides en Java.

En effet, est-ce que par ce que le langage nous offre la possibilité de faire de la programmation orienté objet nous en faisons vraiment ?

Souvent, lors qu’on développe un algorithme, on créé une classe, on écrit une belle fonction de 30, 40 ou même 50 lignes ! Des boucles et des tests imbriqués dans tous les sens. Et là on se dit que c’est pas beau, donc on ré-factorise, on extrait des méthodes (privées pour la plupart), et on s’arrête quand on est content de nous et que nos méthodes ne font plus que quelques lignes chacune.

Est-ce que par ce que notre code est dans une classe on fait vraiment de l’OOP ?
N’est ce pas plutôt une programmation procédurale ?

Why does it matter?

It matters for a very simple reason. A lot of developers think that just because they use classes, they are writing OOP. And others think that because they use functions, they are using procedural programming. And that’s not true. Procedural vs OOP is an approach to writing code, not how you write it. Are you focusing on « Steps » and an ordered way of writing a program? You’re likely writing procedural code. But if you’re focusing on state transformations and encapsulated abstractions, you’re writing OOP.

Classes are just a tool that make writing real OOP easier. They aren’t a requirement or a indicator that you’re writing OOP.

Le commentaires sont fermés.