L’informatique moderne utilise très largement la notion d’objet. Un objet est la représentation virtuelle d’un objet du monde réel qu’on pourra ainsi manipuler à l’aide d’un langage de programmation. Les objets étant destinés à des fonctions particulières dans le cadre d’un programme informatique, l’abstraction ne représente ni l’objet réel dans son intégralité, ni même la réalité. On pourrait appliquer cette description à la représentation du réel que notre esprit manipule et en particulier à nos sentiments.
Je me propose ici de comparer l’approche objet et la conceptualisation du réel par notre cerveau.
L’objet, en informatique, repose sur un certain nombre de concepts qui vont être examinés ici et comparés avec notre façon d’appréhender notre environnement.
Un objet est une instance de classe, ce qui signifie qu’un objet est créé à partir d’un moule (une classe) qui définit les caractéristiques communes à tous les objets qu’il va créer. Ces caractéristiques sont appelées des attributs. La classe Humain va donner 6 milliard d’objets dont vous et moi. Tous ces objets ont des attributs communs (un nez, deux yeux) mais chaque « instance » est différente (un gros nez, les yeux bleus). Une classe définit également des comportements communs qu’on appelle des méthodes. La classe Humain définit, par exemple, la méthode RechargerSesBatteries qui pour certain sera « implémentée » sous la forme de vacances sportives dans la jungle amazonienne et pour d’autres sous celle d’une cure de sommeil.
Cette réification du réel est partielle, voire fausse. En effet, que ce soit en informatique ou dans notre approche de la vie, nous ne représentons que les attributs et méthodes qui nous sont utiles dans un objet donné.
Un programme de gestion de stock de voitures n’a pas besoin de connaître les détails techniques des voitures qu’il gère. Il se contentera de la marque, de la couleur, du prix, du délai de livraison etc.. Le programme qui gère la fabrication de ces mêmes voitures est en revanche beaucoup plus précis dans les détails. Les deux classes Voiture manipulées sont donc très différentes.
Un équivalent psychologique de notre classe voiture pourrait être la classe Autre qui représente notre rapport à nos concitoyens. Cette classe va être très différente selon qu’elle sera utilisée dans un processus affectif fort (amour, amitié) ou une relation superficielle (relations professionnelles). Les attributs et les méthodes seront différents, probablement mois nombreux pour les relations distantes que pour les proches. Mais surtout la classe Autre est, comme la classe Voiture, une approximation de la réalité. On ne retient des autres que les attributs et les méthodes qui nous sont utiles dans notre rapport avec eux. Pire, comme la classe Prix est, finalement, assez éloignée de la finalité d’une Voiture, nous déformons la réalité pour pouvoir l’appréhender.
L’Héritage permet de définir une classe par rapport à une autre. Une Clio est une Voiture particulière. Elle partage des attributs et des méthodes avec toutes les voitures mais toutes les Clio ont un ensemble de valeurs communes pour ces attributs et ces méthodes. Le modèle objet permet donc de définir que la classe Clio hérite de la classe Voiture. Tout ce qui est défini dans la classe Voiture n’a pas à être redéfini dans la sous classe Clio (ni dans les sous classes Ibiza ou 807). Bien sûr la valeur des attributs et l’implémentation des méthodes est spécifique mais la structure de la classe reste la même.
La représentation que nous nous faisons des différentes sous classes de notre classe Autre (AutreAmour, AutreRelationIntéressée, AutreInconnu) dépend des différents objets Autres que nous avons croisés dans notre vie. Une nouvelle expérience avec un Autre particulier, influe sur notre perception de tous les Autres.
Cette adaptation dynamique en fonction de l’apprentissage n’est pas à proprement parler de l’héritage au sens Objet – ce serait plus proche d’une mise à jour du modèle objet – mais le fait que nous puissions appliquer notre perception d’un Autre particulier à tous les Autres après une nouvelle expérience est proche de la notion d’héritage.
Le polymorphisme est lié à l’héritage et permet d’utiliser une même méthode pour plusieurs objets issus de classes différentes mais héritant d’une classe commune. La méthode FaireLePlein est la même pour une classe VoitureDiesel et pour une classe VoitureGPL, toutes deux ayant hérité de la classe Voiture. Les deux méthodes FaireLePlein ne font pas la même chose mais ont la même finalité et la même interface. Le polymorphisme permet de standardiser les échanges entre des groupes d’objets.
La surcharge est liée au polymorphisme et permet de « surcharger » une méthode de la classe héritée par une implémentation spécifique dans la sous classe.
Le polymorphisme et la surcharge nous permettent d’avoir l’apparence de relations identiques avec des AutreAmour et des AutreInconnu. Un même concept peut être appliqué à deux sous classes sans nécessairement provoquer les mêmes réactions dans notre cerveau : aimer son épouse et aimer ses enfants font référence à un sentiment commun mais ayant des implications différentes sur notre moi. Je ne parle pas ici du mot aimer qui s’applique à des concepts différents (j’aime aussi la bière et le rugby) mais au sentiment d’amour qui peut être très différent d’un objet à l’autre.
L’encapsulation permet de masquer l’implémentation interne d’un objet pour qu’il soit toujours accessible de la même façon par les autres, même s’il change de l’intérieur. C’est également le moyen de protéger l’objet du monde extérieur qui ne peut le manipuler que par des méthodes connues et sécurisées par l’objet lui même. On ne peut pas changer l’attribut couleur d’un objet Voiture sans passer par une méthode Repeindre qui va vérifier que la couleur demandée est bien au catalogue avant de l’appliquer ou même qu’on ne demande pas de changer la couleur « bleu » par « boulon de 13 »
De même, notre perception des Autres est filtrée et sécurisée par notre inconscient qui analyse les demandes extérieures et les traduit en demandes acceptables par notre moi et déclenche les différentes réactions associées à ce stimulus.
Enfin, les objets communiquent entre eux via des messages. L’esprit humain dans ce domaine respecte mieux la philosophie objet que la majorité des programmes car il est basé naturellement sur des messages asynchrones qui permettent un couplage faible entre les objets. Un modèle objet propre repose en effet sur l’indépendance entre les classes. Si on ajoute la Couleur jaune au catalogue, l’objet Voiture n’a pas besoin d’être modifié pour l’utiliser. Il suffit qu’on le prévienne qu’une nouvelle Couleur est disponible. D’autre part, lorsque le nouvel objet Couleur(jaune) prévient le monde qu’il est disponible, l’objet Parking n’est pas intéressé par cette information. Il se contente donc de l’ignorer.
Les relations avec les autres sont entièrement basées sur ces messages non sollicité. Notre objet interne Autres traite les messages qui lui sont utiles (parole, toucher) et ignore les autres (froid, faim) qui pourront être traités par d’autres objets internes.
De même, on communique avec un autre en attendant certes une réponse de sa part mais sans que l’ensemble des fonctions soient en attente de cette réponse. Quand elle arrive, elle est traitée mais si elle n’arrive jamais, l’esprit ne s’arrête pas pour autant.
Tout ceci n’a bien sûr aucune prétention scientifique mais qu’en pensez vous ?