INFORMATIQUE > PROGRAMMATION ORIENTÉE OBJET
Paradigme de programmation apparu avec les langages Simula (1967) et Smalltalk (1980).
Cet article présente les caractéristiques essentielles de la programmation orientée objet indépendamment du langage utilisé.>
Le terme programmation orientée objet est ici utilisé dans son acception la plus générale, c'est à dire qu'on ne se contente pas de parler des caractéristiques des langages orientés objet à classes.
Modifier l'organisation du code ?
Les premiers langages de programmation (avant l'objet) étaient procéduraux. Un programme était alors une suite d'instructions permettant de réaliser successivement les différentes étapes d'un algorithme. Tout au plus était-il possible, en définissant des fonctions (des suites d'instructions) d'éviter la fastidieuse recopie de portions de code mais le principe qui présidait à la rédaction du code était que la succession des lignes de code correspondait à la succession temporelle de leur exécution par la machine.
L'apparition des objets a profondément modifié cette organisation.
On a commencé à créer des objets (structures de données contenant des valeurs, capables de répondre à des messages en utilisant des fonctions appelées méthodes) et à leur envoyer des messages auxquels ils répondaient.
L'écriture du code s'en est trouvé bouleversée. Le principe de succession temporelle des instructions ne subsistant qu'à l'intérieur des objets.
Certains ouvrages d'initiation semblent se contenter de cet aspect formel (une nouvelle organisation du code) qui est certes réelle mais qui ne décrit qu'une partie de la programmation orientée objet.
Il faut en effet s'intéresser de plus près à ce qu'est un objet.
Modéliser le monde
Un objet n'est pas seulement une structure de données ou la concrétisation d'une succession de ligne de code, il doit être vu par le développeur comme un conteneur symbolique et autonome qui contient des données et des méthodes qui concernent un « objet » du monde réel. Parfois un objet réel (une facture, une machine, un livre,..) parfois un « objet » abstrait (un virement, une transaction, un achat, une vente,...)
Un objet (au sens de la programmation orientée objet) représente donc un objet du monde au sens le plus général du mot objet.
Plus sur les objets
Ce qui caractérise d'abord un objet, c'est qu'il s'agit d'un monde clôt. On n'a pas accès directement aux propriétés d'un objet. Il faut passer par un accesseur. C'est le principe de l'encapsulation qui évite beaucoup d'erreurs involontaires.
Créer des objets (classes ou pas classes)
Bien entendu, ce qui fait l'intérêt du concept d'objet c'est qu'on rencontre beaucoup d'objets qui se ressemblent (même propriétés et mêmes comportements). On les regroupe alors grâce à la notion de classe.
Une classe n'est pas un ensemble d'objets, elle ne contient pas d'objet mais elle rassemble les propriétés et les méthodes qui sont communes aux objet d'un type particulier. Elle va donc permettre de créer des objets, de les instancier.
La programmation orientée objet (au sens général) n'implique cependant pas l'existence de classes. Certains langages sont des langages à objets mais ne connaissent pas les classes.
On peut donc définir deux familles de langages orientés objet :
Notons que l'expression langage orienté objet ne désigne souvent que la première famille (les langages objet à classes) sans doute parce que c'est une famille nombreuse.