đŠ Le concept dâobjet dans les langages orientĂ©s-objet est difficile Ă dĂ©finir. Les divergences entre les diffĂ©rentes âsaveursâ dâorientĂ©-objet et le drama entre auteurs explique en partie le problĂšme. Les amĂ©ricains tendent Ă y voir seulement un mĂ©canisme de modĂ©lisation efficace, tandis que les europĂ©ens tendent Ă rechercher une certaine esthĂ©tique philosophique dĂ©passant la stricte nĂ©cessitĂ© technique.
đș Pour comprendre ce quâest un objet, il faut Ă©tudier la notion sous plusieurs angles, nâayant pas tous un rapport direct Ă lâinformatique, nous serions mĂȘme parfois plus proches des mathĂ©matiques, de la psychologie et de la philosophie.
đ¶âđ«ïž Un objet peut ĂȘtre vu comme une substance attachĂ©e Ă une identitĂ© permettant de le distinguer des autres. Toujours dans la mĂȘme veine ontologique, un objet peut aussi ĂȘtre dĂ©fini comme lâinverse dâune valeur. Cette derniĂšre est Ă©ternelle, immuable, universelle et sans identitĂ©. HĂ©las la plupart des langages ne lâentendent pas ainsi et la moindre valeur, mĂȘme une primitive, est alors un objet comme un autre. En informatique, âObjetâ est un terme Ă©quivoque, zut.
đĄïž Lâobjet peut aussi ĂȘtre dĂ©fini comme lâinverse des fonctions. La fonction nâa aucune mĂ©moire, elle est pure et sans effet de bord. Lâobjet stocke un Ă©tat. Mais ce serait insuffisant car les objets exposent des opĂ©rations qui protĂšgent lâĂ©tat quâils contiennent contre lâĂ©criture de valeurs invalides. Parce quâil nâest pas rĂ©fĂ©rentiellement transparent, lâobjet est une abstraction, masquant une partie de la complexitĂ© quâil contient derriĂšre une façade : son interface. HĂ©las encore une fois, le concepte dâabstraction de donnĂ©es et celui dâobjet ne sont pas identiques et ne se recouvrent pas complĂštement. Caramba, encore ratĂ© !
đą Essayons alors la dĂ©finition purement technique : un objet est un dictionnaire de propriĂ©tĂ©s, chacune Ă©tant un tableau dâoctets que lâon regarde Ă travers des lunettes qui permettent de lâinterprĂ©ter. Ce point de vue est probablement le plus exact, mais aussi le plus insatisfaisant, sauf peut-ĂȘtre pour un dĂ©veloppeur Javascript.
â Essayons alors les mathĂ©matiques. Un objet est alors une machine Ă Ă©tats finis, possĂ©dant des fonctions transformant un Ă©tat en un autre. Lâobjet peut ĂȘtre dĂ©crit comme un tuple Ă 4 Ă©lĂ©ments : son identitĂ©, son type, son Ă©tat actuel et lâensemble des identifiants y faisant rĂ©fĂ©rence. LâidentitĂ© est immuable, le type lâest souvent, lâĂ©tat peut varier selon les rĂšgles quâimpose le type. Le type peut parfaitement imposer Ă lâĂ©tat dâun objet une totale immutabilitĂ©, ce qui le rend rĂ©fĂ©rentiellement transparent. Les identifiants quant Ă eux sont un tableau associant des noms Ă un objet donnĂ©.
đ§âđ« Pris isolĂ©ment, aucun de ces points de vue nâa la moindre utilitĂ© pratique au dĂ©veloppeur. Tous ces points de vue sont complĂ©mentaires et offrent un Ă©clairage complet sur un phĂ©nomĂšne bien plus complexe quâil nây paraĂźt. Lâauteur cite Marvin Minsky : nous ne comprenons rien tant que nous ne lâavons pas appris de plusieurs maniĂšres.
SOURCE
Antero Taivalsaari. 1993. On the notion of object. J. Syst. Softw. 21, 1 (April 1993), 3â16. DOI:10.1016/0164-1212(93)90013-N
Enzo Sandré
DOIs: 10.1016/0164-1212(93)90013-N