La structure de chacune de ces entités est spécifiée par une classe: on dit alors que l’objet est une instance de sa classe.
La distinction classe / instance et la mise en œuvre explicite des classes est essentielle pour parler de programmation par objets.
Toutefois, une distinction importante se fait sur la nature des classes: sont-elles des objets comme les autres, ou sont-elles d’une essence différente de celle des objets?
La tradition qui parle de types, notamment de types abstraits, considère que les types ne sont pas des objets.
En revanche, la programmation par objets “stricto sensu” postule que les classes sont des objets: tout est objet.
Ce mécanisme intellectuel n’a rien de nouveau, nous le pratiquons constamment. Les mathématiques et le courant structuraliste nous ont habitués à la démarche en deux temps: “Appelons truc un machin qui...que ...quoi ...Clairement chose est un truc, etc.” En somme, il s’agit de définir ce dont on va parler avant d’en parler effectivement.
L’apport de la programmation par objets est de proposer des formalismes propres à réaliser concrètement cette démarche intellectuelle, permettant d’écrire comme on pense.
C’est la possibilité d’utiliser directement des ressources intellectuelles très répandues qui fait la puissance de la programmation par objets – et qui motive son succès. Elle permet à des programmeurs moins qualifiés d’attaquer des problèmes plus difficiles, de les résoudre en moins de temps et de produire des programmes de meilleure qualité.
En somme, programmer par objets, c’est tout bonnement programmer de façon naturelle...